- canvasPrototype = naNewHash(c);
- hashset(c, gcSave, "canvasProto", canvasPrototype);
-
- hashset(c, canvasPrototype, "getElement", naNewFunc(c, naNewCCode(c, f_canvas_getElement)));
-
- eventPrototype = naNewHash(c);
- hashset(c, gcSave, "eventProto", eventPrototype);
- // set any event methods
-
- elementPrototype = naNewHash(c);
- hashset(c, gcSave, "elementProto", elementPrototype);
-
- hashset(c, elementPrototype, "addButtonCallback", naNewFunc(c, naNewCCode(c, f_element_addButtonCallback)));
- hashset(c, elementPrototype, "addDragCallback", naNewFunc(c, naNewCCode(c, f_element_addDragCallback)));
- hashset(c, elementPrototype, "addMoveCallback", naNewFunc(c, naNewCCode(c, f_element_addMoveCallback)));
- hashset(c, elementPrototype, "addScrollCallback", naNewFunc(c, naNewCCode(c, f_element_addScrollCallback)));
-
- for(int i=0; funcs[i].name; i++) {
- hashset(c, globals, funcs[i].name,
- naNewFunc(c, naNewCCode(c, funcs[i].func)));
- }
-
+ NasalCanvas::init("Canvas")
+ .member("_node_ghost", &elementGetNode<sc::Canvas>)
+ .member("size_x", &sc::Canvas::getSizeX)
+ .member("size_y", &sc::Canvas::getSizeY)
+ .method_func<&f_canvasCreateGroup>("createGroup");
+ NasalElement::init("canvas.Element")
+ .member("_node_ghost", &elementGetNode<sc::Element>);
+ NasalGroup::init("canvas.Group")
+ .bases<NasalElement>();
+
+ nasal::Hash globals_module(globals, c),
+ canvas_module = globals_module.createHash("canvas");
+
+ canvas_module.set("_newCanvasGhost", f_createCanvas);
+ canvas_module.set("_getCanvasGhost", f_getCanvas);
+