12 extern luaobj_Ref
*rSmart
;
15 * smart_member_add of edje and ego don't like each other
18 #define FN_ADD_OBJ(EGO_FUNC, EGO_CLASS, E_FUNC) \
20 EGO_FUNC (lua_State *L) \
22 int set = lua_gettop (L) == 2; \
23 luaobj_Object *obj = luaL_checkudata (L, 1, "cEgo"); \
24 luaobj_Object *tar = lua_newuserdata (L, sizeof (luaobj_Object)); \
25 luaobj_set_class (L, -1, tar, EGO_CLASS); \
26 tar->data = E_FUNC (evas_object_evas_get (obj->data)); \
27 evas_object_data_set (tar->data, "luaobj", luaobj_new_ref (L, -1)); \
28 evas_object_smart_member_add (tar->data, obj->data); \
29 evas_object_clip_set (tar->data, evas_object_smart_clipped_clipper_get (obj->data)); \
32 lua_getfield (L, -1, "set"); \
33 lua_pushvalue (L, -2); \
34 lua_pushvalue (L, 2); \
35 if (lua_pcall (L, 2, 0, 0)) \
36 printf (EGO_CLASS"#set: %s\n", luaL_checkstring (L, -1)); \
41 #define FN_ADD_ELM(EGO_FUNC, EGO_CLASS, E_FUNC) \
43 EGO_FUNC (lua_State *L) \
45 int set = lua_gettop (L) == 2; \
46 luaobj_Object *obj = luaL_checkudata (L, 1, "cEgo"); \
47 luaobj_Object *tar = lua_newuserdata (L, sizeof (luaobj_Object)); \
48 luaobj_set_class (L, -1, tar, EGO_CLASS); \
49 tar->data = (Evas_Object *) E_FUNC (obj->data); \
50 evas_object_data_set (tar->data, "luaobj", luaobj_new_ref (L, -1)); \
51 evas_object_smart_member_add (tar->data, obj->data); \
52 evas_object_clip_set (tar->data, evas_object_smart_clipped_clipper_get (obj->data)); \
55 lua_getfield (L, -1, "set"); \
56 lua_pushvalue (L, -2); \
57 lua_pushvalue (L, 2); \
58 if (lua_pcall (L, 2, 0, 0)) \
59 printf (EGO_CLASS"#set: %s\n", luaL_checkstring (L, -1)); \
65 lecore_fn_animator (lua_State
* L
)
71 luaobj_Object
*obj
= lua_newuserdata (L
, sizeof (luaobj_Object
));
72 luaobj_set_class (L
, -1, obj
, "cAnimator");
73 obj
->data
= ecore_animator_add (lanimator_cb
, obj
);
74 obj
->datb
= luaobj_new_ref (L
, -1); // userdata
75 obj
->datc
= luaobj_new_ref (L
, 2); // function
80 levas_fn_smart_class (lua_State
* L
)
86 (luaobj_Object
*) lua_newuserdata (L
, sizeof (luaobj_Object
));
87 luaobj_set_class (L
, -1, sma
, "cSmart");
88 sma
->data
= (void *) lsmart_class_new (luaobj_new_ref (L
, 2));
93 levas_fn_smart (lua_State
* L
)
98 luaobj_Object
*obj
= (luaobj_Object
*) lua_touserdata (L
, 1);
99 luaobj_Object
*sma
= (luaobj_Object
*) lua_touserdata (L
, 2);
101 (luaobj_Object
*) lua_newuserdata (L
, sizeof (luaobj_Object
));
102 luaobj_set_class (L
, -1, sob
, "cRect");
103 rSmart
= luaobj_new_ref (L
, -1);
104 sob
->data
= evas_object_smart_add (evas_object_evas_get (obj
->data
), sma
->data
);
105 evas_object_data_set (sob
->data
, "luaobj", rSmart
);
110 levas_fn_textblock_style (lua_State
* L
)
112 /* 1: evas (not used)
114 int set
= lua_gettop (L
) == 2;
116 (luaobj_Object
*) lua_newuserdata (L
, sizeof (luaobj_Object
));
117 luaobj_set_class (L
, -1, sty
, "cStyle");
118 sty
->data
= evas_textblock_style_new ();
122 lua_getfield (L
, -1, "set");
123 lua_pushvalue (L
, -2);
124 lua_pushvalue (L
, 2);
125 if (lua_pcall (L
, 2, 0, 0))
126 printf ("textblock_style#set: %s\n", luaL_checkstring (L
, -1));
132 levas_fn_transform (lua_State
* L
)
134 /* 1: evas (not used)
136 int set
= lua_gettop (L
) == 2;
138 (luaobj_Object
*) lua_newuserdata (L
, sizeof (luaobj_Object
));
139 luaobj_set_class (L
, -1, sty
, "cTransform");
140 sty
->data
= malloc (sizeof (Evas_Transform
));
144 lua_getfield (L
, -1, "set");
145 lua_pushvalue (L
, -2);
146 lua_pushvalue (L
, 2);
147 if (lua_pcall (L
, 2, 0, 0))
148 printf ("transform#set: %s\n", luaL_checkstring (L
, -1));
153 FN_ADD_OBJ (levas_fn_rectangle
, "cRect", evas_object_rectangle_add
);
154 FN_ADD_OBJ (levas_fn_image
, "cImage", evas_object_image_add
);
155 FN_ADD_OBJ (levas_fn_edje
, "cEdje", edje_object_add
);
156 FN_ADD_OBJ (levas_fn_text
, "cText", evas_object_text_add
);
157 FN_ADD_OBJ (levas_fn_textblock
, "cTextblock", evas_object_textblock_add
);
158 FN_ADD_OBJ (levas_fn_gradient
, "cGradient", evas_object_gradient_add
);
159 FN_ADD_OBJ (levas_fn_gradient2_linear
, "cGradient2_Linear", evas_object_gradient2_linear_add
);
160 FN_ADD_OBJ (levas_fn_gradient2_radial
, "cGradient2_Radial", evas_object_gradient2_radial_add
);
161 FN_ADD_OBJ (levas_fn_polygon
, "cPolygon", evas_object_polygon_add
);
162 FN_ADD_OBJ (levas_fn_line
, "cLine", evas_object_line_add
);
163 FN_ADD_OBJ (levas_fn_table
, "cTable", evas_object_table_add
);
164 FN_ADD_OBJ (levas_fn_box
, "cBox", evas_object_box_add
);
166 FN_ADD_ELM (levas_fn_icon
, "cIcon", elm_icon_add
);
167 FN_ADD_ELM (levas_fn_box2
, "cBox2", elm_box_add
);
168 FN_ADD_ELM (levas_fn_button
, "cButton", elm_button_add
);
169 FN_ADD_ELM (levas_fn_scroller
, "cScroller", elm_scroller_add
);
170 FN_ADD_ELM (levas_fn_label
, "cLabel", elm_label_add
);
171 FN_ADD_ELM (levas_fn_toggle
, "cToggle", elm_toggle_add
);
172 FN_ADD_ELM (levas_fn_frame
, "cFrame", elm_frame_add
);
173 FN_ADD_ELM (levas_fn_table2
, "cTable2", elm_table_add
);
174 FN_ADD_ELM (levas_fn_entry
, "cEntry", elm_entry_add
);
175 FN_ADD_ELM (levas_fn_bubble
, "cBubble", elm_bubble_add
);
176 FN_ADD_ELM (levas_fn_hover
, "cHover", elm_hover_add
);
177 FN_ADD_ELM (levas_fn_layout
, "cLayout", elm_layout_add
);
178 FN_ADD_ELM (levas_fn_clock
, "cClock", elm_clock_add
);
181 levas_fn_quit (lua_State
* L
)
183 ecore_main_loop_quit ();
188 * evas functions definitions
191 const luaL_Reg lEgo_fn
[] = {
192 {"animator", lecore_fn_animator
},
193 {"rectangle", levas_fn_rectangle
},
194 {"image", levas_fn_image
},
195 {"edje", levas_fn_edje
},
196 {"line", levas_fn_line
},
197 {"text", levas_fn_text
},
198 {"textblock", levas_fn_textblock
},
199 {"gradient", levas_fn_gradient
},
200 {"gradient2_linear", levas_fn_gradient2_linear
},
201 {"gradient2_radial", levas_fn_gradient2_radial
},
202 {"polygon", levas_fn_polygon
},
203 {"table", levas_fn_table
},
204 {"box", levas_fn_box
},
206 {"textblock_style", levas_fn_textblock_style
},
207 {"smart_class", levas_fn_smart_class
},
208 {"smart", levas_fn_smart
},
209 {"transform", levas_fn_transform
},
211 {"icon", levas_fn_icon
},
212 {"box2", levas_fn_box2
},
213 {"button", levas_fn_button
},
214 {"scroller", levas_fn_scroller
},
215 {"label", levas_fn_label
},
216 {"toggle", levas_fn_toggle
},
217 {"frame", levas_fn_frame
},
218 {"table2", levas_fn_table2
},
219 {"entry", levas_fn_entry
},
220 {"bubble", levas_fn_bubble
},
221 {"hover", levas_fn_hover
},
222 {"layout", levas_fn_layout
},
223 {"clock", levas_fn_clock
},
225 {"quit", levas_fn_quit
},
230 const luaL_Reg lEgo_nil
[] = {
231 {NULL
, NULL
} // sentinel
234 const luaobj_Reg mEgo
= {
241 const luaobj_Reg
*cEgo
[] = {