From: Enlightenment C. <no...@cv...> - 2008-05-19 00:07:43
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje Modified Files: configure.in Log Message: pass make distcheck and a snapshot asparagus release - been a while =================================================================== RCS file: /cvs/e/e17/libs/edje/configure.in,v retrieving revision 1.94 retrieving revision 1.95 diff -u -3 -r1.94 -r1.95 --- configure.in 24 Mar 2008 08:09:06 -0000 1.94 +++ configure.in 19 May 2008 00:07:11 -0000 1.95 @@ -3,7 +3,7 @@ # get rid of that stupid cache mechanism rm -f config.cache -AC_INIT(edje, 0.5.0.042, enl...@li...) +AC_INIT(edje, 0.9.9.043, enl...@li...) AC_PREREQ(2.52) AC_CONFIG_SRCDIR(configure.in) AC_CANONICAL_BUILD @@ -67,7 +67,7 @@ ecore-evas >= 0.9.9 ecore-job >= 0.9.9 ecore-file >= 0.9.9 - eet >= 0.9.10 + eet >= 1.0.1 embryo >= 0.9.1 ]) |
From: Enlightenment C. <no...@cv...> - 2008-05-19 02:50:41
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/src/lib Modified Files: edje_embryo.c Log Message: patch from rafael to hook in funcs to embryo =================================================================== RCS file: /cvs/e/e17/libs/edje/src/lib/edje_embryo.c,v retrieving revision 1.60 retrieving revision 1.61 diff -u -3 -r1.60 -r1.61 --- edje_embryo.c 11 Apr 2008 23:36:35 -0000 1.60 +++ edje_embryo.c 19 May 2008 02:50:38 -0000 1.61 @@ -80,6 +80,8 @@ * Direction:get_drag_dir(part_id) * get_drag(part_id, &Float:dx, &Float:&dy) * set_drag(part_id, Float:dx, Float:dy) + * get_drag_size(part_id, &Float:dx, &Float:&dy) + * set_drag_size(part_id, Float:dx, Float:dy) * set_text(part_id, str[]) * get_text(part_id, dst[], maxlen) * get_min_size(w, h) @@ -998,6 +1000,46 @@ return(0); } +/* get_drag_size(part_id, &Float:dx, &Float:dy) */ +static Embryo_Cell +_edje_embryo_fn_get_drag_size(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + int part_id = 0; + Edje_Real_Part *rp; + double dx = 0.0, dy = 0.0; + + CHKPARAM(3); + ed = embryo_program_data_get(ep); + part_id = params[1]; + if (part_id < 0) return 0; + rp = ed->table_parts[part_id % ed->table_parts_size]; + edje_object_part_drag_size_get(ed->obj, rp->part->name, &dx, &dy); + SETFLOAT(dx, params[2]); + SETFLOAT(dy, params[3]); + + return 0; +} + +/* set_drag_size(part_id, Float:dx, Float:dy) */ +static Embryo_Cell +_edje_embryo_fn_set_drag_size(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + int part_id = 0; + Edje_Real_Part *rp; + + CHKPARAM(3); + ed = embryo_program_data_get(ep); + part_id = params[1]; + if (part_id < 0) return 0; + rp = ed->table_parts[part_id % ed->table_parts_size]; + edje_object_part_drag_size_set(ed->obj, rp->part->name, + (double)EMBRYO_CELL_TO_FLOAT(params[2]), + (double)EMBRYO_CELL_TO_FLOAT(params[3])); + return(0); +} + /* set_text(part_id, str[]) */ static Embryo_Cell _edje_embryo_fn_set_text(Embryo_Program *ep, Embryo_Cell *params) @@ -2216,6 +2258,8 @@ embryo_program_native_call_add(ep, "get_drag_dir", _edje_embryo_fn_get_drag_dir); embryo_program_native_call_add(ep, "get_drag", _edje_embryo_fn_get_drag); embryo_program_native_call_add(ep, "set_drag", _edje_embryo_fn_set_drag); + embryo_program_native_call_add(ep, "get_drag_size", _edje_embryo_fn_get_drag_size); + embryo_program_native_call_add(ep, "set_drag_size", _edje_embryo_fn_set_drag_size); embryo_program_native_call_add(ep, "set_text", _edje_embryo_fn_set_text); embryo_program_native_call_add(ep, "get_text", _edje_embryo_fn_get_text); embryo_program_native_call_add(ep, "get_min_size", _edje_embryo_fn_get_min_size); |
From: Enlightenment C. <no...@cv...> - 2008-05-19 02:51:10
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/data/include Modified Files: edje.inc Log Message: patch from rafael to hook in funcs to embryo =================================================================== RCS file: /cvs/e/e17/libs/edje/data/include/edje.inc,v retrieving revision 1.24 retrieving revision 1.25 diff -u -3 -r1.24 -r1.25 --- edje.inc 11 Apr 2008 23:36:35 -0000 1.24 +++ edje.inc 19 May 2008 02:50:38 -0000 1.25 @@ -90,6 +90,8 @@ native get_drag_dir (part_id); native get_drag (part_id, &Float:dx, &Float:dy); native set_drag (part_id, Float:dx, Float:dy); +native get_drag_size (part_id, &Float:dx, &Float:dy); +native set_drag_size (part_id, Float:dx, Float:dy); native get_drag_step (part_id, &Float:dx, &Float:dy); native set_drag_step (part_id, Float:dx, Float:dy); native get_drag_page (part_id, &Float:dx, &Float:dy); |
From: Enlightenment C. <no...@cv...> - 2008-05-19 04:38:42
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/src/lib Modified Files: edje_embryo.c Log Message: lars get button mask call for edje embryo added =================================================================== RCS file: /cvs/e/e17/libs/edje/src/lib/edje_embryo.c,v retrieving revision 1.61 retrieving revision 1.62 diff -u -3 -r1.61 -r1.62 --- edje_embryo.c 19 May 2008 02:50:38 -0000 1.61 +++ edje_embryo.c 19 May 2008 04:38:40 -0000 1.62 @@ -797,6 +797,17 @@ return 0; } +/* get_mouse_buttons() */ +static Embryo_Cell +_edje_embryo_fn_get_mouse_buttons(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + + CHKPARAM(0); + ed = embryo_program_data_get(ep); + return evas_pointer_button_down_mask_get(ed->evas); +} + /* emit(sig[], src[]) */ static Embryo_Cell _edje_embryo_fn_emit(Embryo_Program *ep, Embryo_Cell *params) @@ -2273,6 +2284,7 @@ embryo_program_native_call_add(ep, "get_drag_page", _edje_embryo_fn_get_drag_page); embryo_program_native_call_add(ep, "set_drag_page", _edje_embryo_fn_set_drag_page); embryo_program_native_call_add(ep, "get_mouse", _edje_embryo_fn_get_mouse); + embryo_program_native_call_add(ep, "get_mouse_buttons", _edje_embryo_fn_get_mouse_buttons); embryo_program_native_call_add(ep, "stop_program", _edje_embryo_fn_stop_program); embryo_program_native_call_add(ep, "stop_programs_on", _edje_embryo_fn_stop_programs_on); embryo_program_native_call_add(ep, "set_min_size", _edje_embryo_fn_set_min_size); |
From: Enlightenment C. <no...@cv...> - 2008-05-19 04:38:42
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/data/include Modified Files: edje.inc Log Message: lars get button mask call for edje embryo added =================================================================== RCS file: /cvs/e/e17/libs/edje/data/include/edje.inc,v retrieving revision 1.25 retrieving revision 1.26 diff -u -3 -r1.25 -r1.26 --- edje.inc 19 May 2008 02:50:38 -0000 1.25 +++ edje.inc 19 May 2008 04:38:40 -0000 1.26 @@ -106,6 +106,7 @@ native get_text_class (class[], font[], &Float:size); native get_geometry (part_id, &x, &y, &w, &h); native get_mouse (&x, &y); +native get_mouse_buttons(); native stop_program (program_id); native stop_programs_on (part_id); native set_min_size (Float:w, Float:h); |
From: Enlightenment C. <no...@cv...> - 2008-05-29 02:00:39
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/src/bin Modified Files: edje_cc_handlers.c Log Message: * add efreet garbage data check * remove printfs that clutter output * add efreet file type check - only parse regular files * chekc mmap returns correctly for MAP_FAILED results * edje has some stubs for adding script-only objecvts - but nothing useful right now =================================================================== RCS file: /cvs/e/e17/libs/edje/src/bin/edje_cc_handlers.c,v retrieving revision 1.84 retrieving revision 1.85 diff -u -3 -r1.84 -r1.85 --- edje_cc_handlers.c 1 Apr 2008 21:33:17 -0000 1.84 +++ edje_cc_handlers.c 29 May 2008 02:00:03 -0000 1.85 @@ -70,6 +70,7 @@ static void ob_collections_group(void); static void st_collections_group_name(void); +static void st_collections_group_script_only(void); static void st_collections_group_alias(void); static void st_collections_group_min(void); static void st_collections_group_max(void); @@ -192,6 +193,7 @@ {"collections.color_classes.color_class.color2", st_color_class_color2}, /* dup */ {"collections.color_classes.color_class.color3", st_color_class_color3}, /* dup */ {"collections.group.name", st_collections_group_name}, + {"collections.group.script_only", st_collections_group_script_only}, {"collections.group.alias", st_collections_group_alias}, {"collections.group.min", st_collections_group_min}, {"collections.group.max", st_collections_group_max}, @@ -763,7 +765,7 @@ } data = mmap(NULL, buf.st_size, PROT_READ, MAP_SHARED, fd, 0); - if (!data) + if (data == MAP_FAILED) { fprintf(stderr, "%s: Error. %s:%i when mapping file \"%s\": \"%s\"\n", progname, file_in, line, filename, strerror(errno)); @@ -1223,6 +1225,28 @@ de = evas_list_data(evas_list_last(edje_file->collection_dir->entries)); de->entry = parse_str(0); +} + +/** + @page edcref + @property + script_only + @parameters + [on/off] + @effect + The flag (on/off) as to if this group is defined ONLY by script + callbacks such as init(), resize() and shutdown() + @endproperty +*/ +static void +st_collections_group_script_only(void) +{ + Edje_Part_Collection *pc; + + check_arg_count(1); + + pc = evas_list_data(evas_list_last(edje_collections)); + pc->script_only = parse_bool(0); } /** |
From: Enlightenment C. <no...@cv...> - 2008-05-29 02:00:39
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/src/lib Modified Files: edje_data.c edje_private.h Log Message: * add efreet garbage data check * remove printfs that clutter output * add efreet file type check - only parse regular files * chekc mmap returns correctly for MAP_FAILED results * edje has some stubs for adding script-only objecvts - but nothing useful right now =================================================================== RCS file: /cvs/e/e17/libs/edje/src/lib/edje_data.c,v retrieving revision 1.43 retrieving revision 1.44 diff -u -3 -r1.43 -r1.44 --- edje_data.c 1 Apr 2008 21:33:17 -0000 1.43 +++ edje_data.c 29 May 2008 02:00:04 -0000 1.44 @@ -387,4 +387,5 @@ EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "prop.max.w", prop.max.w, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "prop.max.h", prop.max.h, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "id", id, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "script_only", id, EET_T_UCHAR); } =================================================================== RCS file: /cvs/e/e17/libs/edje/src/lib/edje_private.h,v retrieving revision 1.147 retrieving revision 1.148 diff -u -3 -r1.147 -r1.148 --- edje_private.h 1 Apr 2008 21:33:17 -0000 1.147 +++ edje_private.h 29 May 2008 02:00:04 -0000 1.148 @@ -457,6 +457,8 @@ Embryo_Program *script; /* all the embryo script code for this group */ const char *part; + + unsigned char script_only; }; struct _Edje_Part |
From: Enlightenment C. <no...@cv...> - 2008-05-30 11:20:52
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/src/lib Modified Files: Makefile.am edje_data.c edje_embryo.c edje_load.c edje_message_queue.c edje_private.h edje_smart.c Added Files: edje_script_only.c Log Message: start some serious work on script_only edje objects - for efficiency sake i'm having an almost parallel codepath for script_only objects - they dont get to use the older edje api calls for part defined objects. they will have a new set of calls specifically for them. it's partly done - very little available now, but will expand. lots of fixme's. =================================================================== RCS file: /cvs/e/e17/libs/edje/src/lib/Makefile.am,v retrieving revision 1.41 retrieving revision 1.42 diff -u -3 -r1.41 -r1.42 --- Makefile.am 12 Mar 2008 16:32:35 -0000 1.41 +++ Makefile.am 30 May 2008 11:20:49 -0000 1.42 @@ -38,7 +38,8 @@ edje_cache.c \ edje_match.c \ edje_textblock_styles.c \ -edje_edit.c +edje_edit.c \ +edje_script_only.c libedje_la_LIBADD = -lm @EDJE_LIBS@ libedje_la_DEPENDENCIES = $(top_builddir)/config.h =================================================================== RCS file: /cvs/e/e17/libs/edje/src/lib/edje_data.c,v retrieving revision 1.44 retrieving revision 1.45 diff -u -3 -r1.44 -r1.45 --- edje_data.c 29 May 2008 02:00:04 -0000 1.44 +++ edje_data.c 30 May 2008 11:20:49 -0000 1.45 @@ -387,5 +387,5 @@ EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "prop.max.w", prop.max.w, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "prop.max.h", prop.max.h, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "id", id, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "script_only", id, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "script_only", script_only, EET_T_UCHAR); } =================================================================== RCS file: /cvs/e/e17/libs/edje/src/lib/edje_embryo.c,v retrieving revision 1.62 retrieving revision 1.63 diff -u -3 -r1.62 -r1.63 --- edje_embryo.c 19 May 2008 04:38:40 -0000 1.62 +++ edje_embryo.c 30 May 2008 11:20:49 -0000 1.63 @@ -182,54 +182,6 @@ * */ -#define CHKPARAM(n) if (params[0] != (sizeof(Embryo_Cell) * (n))) return 0; -#define GETSTR(str, par) { \ - Embryo_Cell *___cptr; \ - int ___l; \ - str = NULL; \ - if ((___cptr = embryo_data_address_get(ep, (par)))) { \ - ___l = embryo_data_string_length_get(ep, ___cptr); \ - if (((str) = alloca(___l + 1))) \ - embryo_data_string_get(ep, ___cptr, (str));}} -#define GETSTREVAS(str, par) { \ - if ((str)) { \ - if ((par) && (!strcmp((par), (str)))) return 0; \ - if ((par)) evas_stringshare_del((par)); \ - (par) = (char *)evas_stringshare_add((str)); } \ - else (par) = NULL; } -#define GETFLOAT(val, par) { \ - float *___cptr; \ - if ((___cptr = (float *)embryo_data_address_get(ep, (par)))) { \ - val = *___cptr;}} -#define GETINT(val, par) { \ - int *___cptr; \ - if ((___cptr = (int *)embryo_data_address_get(ep, (par)))) { \ - val = *___cptr;}} -#define SETSTR(str, par) { \ - Embryo_Cell *___cptr; \ - if ((___cptr = embryo_data_address_get(ep, (par)))) { \ - embryo_data_string_set(ep, str, ___cptr);}} -#define SETSTRALLOCATE(s) { \ - if (s) { \ - if (strlen((s)) < params[4]) { \ - SETSTR((s), params[3]); } \ - else { \ - char *ss; \ - ss = alloca(strlen((s)) + 1); \ - strcpy(ss, (s)); \ - ss[params[4] - 2] = 0; \ - SETSTR(ss, params[3]); }} \ - else \ - SETSTR("", params[3]);} -#define SETFLOAT(val, par) { \ - float *___cptr; \ - if ((___cptr = (float *)embryo_data_address_get(ep, (par)))) { \ - *___cptr = (float)val;}} -#define SETINT(val, par) { \ - int *___cptr; \ - if ((___cptr = (int *)embryo_data_address_get(ep, (par)))) { \ - *___cptr = (int)val;}} - /* get_int(id) */ static Embryo_Cell _edje_embryo_fn_get_int(Embryo_Program *ep, Embryo_Cell *params) =================================================================== RCS file: /cvs/e/e17/libs/edje/src/lib/edje_load.c,v retrieving revision 1.124 retrieving revision 1.125 diff -u -3 -r1.124 -r1.125 --- edje_load.c 10 Apr 2008 08:58:19 -0000 1.124 +++ edje_load.c 30 May 2008 11:20:49 -0000 1.125 @@ -248,6 +248,7 @@ old_swallows = _edje_swallows_collect(ed); + if (_edje_script_only(ed)) _edje_script_only_shutdown(ed); _edje_file_del(ed); if (ed->path) evas_stringshare_del(ed->path); @@ -256,318 +257,324 @@ ed->part = evas_stringshare_add(part); ed->load_error = EDJE_LOAD_ERROR_NONE; - _edje_file_add(ed); + _edje_file_add(ed); _edje_textblock_styles_add(ed); _edje_textblock_style_all_update(ed); if (ed->collection) { - Evas_List *l; - int i; - int errors = 0; - - /* colorclass stuff */ - for (l = ed->collection->parts; (l && ! errors); l = l->next) - { - Edje_Part *ep; - Evas_List *hist = NULL; - - /* Register any color classes in this parts descriptions. */ - ep = l->data; - if ((ep->default_desc) && (ep->default_desc->color_class)) - _edje_color_class_member_add(ed, ep->default_desc->color_class); - for (hist = ep->other_desc; hist; hist = hist->next) - { - Edje_Part_Description *desc; - - desc = hist->data; - if (desc->color_class) - _edje_color_class_member_add(ed, desc->color_class); - } - } - /* build real parts */ - for (n = 0, l = ed->collection->parts; l; l = l->next, n++) + printf("%s %s = %i\n", file, part, ed->collection->script_only); + if (ed->collection->script_only) + _edje_script_only_init(ed); + else { - Edje_Part *ep; - Edje_Real_Part *rp; - - ep = l->data; - rp = calloc(1, sizeof(Edje_Real_Part)); - if (!rp) - { - ed->load_error = EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED; - return 0; - } - rp->edje = ed; - _edje_ref(rp->edje); - rp->part = ep; - parts = evas_list_append(parts, rp); - rp->param1.description = ep->default_desc; - rp->chosen_description = rp->param1.description; - if (!rp->param1.description) - printf("EDJE ERROR: no default part description!\n"); - if (ep->type == EDJE_PART_TYPE_RECTANGLE) - rp->object = evas_object_rectangle_add(ed->evas); - else if (ep->type == EDJE_PART_TYPE_IMAGE) - rp->object = evas_object_image_add(ed->evas); - else if (ep->type == EDJE_PART_TYPE_TEXT) - { - _edje_text_part_on_add(ed, rp); - rp->object = evas_object_text_add(ed->evas); - evas_object_text_font_source_set(rp->object, ed->path); - } - else if (ep->type == EDJE_PART_TYPE_SWALLOW || ep->type == EDJE_PART_TYPE_GROUP) - { - rp->object = evas_object_rectangle_add(ed->evas); - evas_object_color_set(rp->object, 0, 0, 0, 0); - evas_object_pass_events_set(rp->object, 1); - evas_object_pointer_mode_set(rp->object, EVAS_OBJECT_POINTER_MODE_NOGRAB); - } - else if (ep->type == EDJE_PART_TYPE_TEXTBLOCK) - rp->object = evas_object_textblock_add(ed->evas); - else if (ep->type == EDJE_PART_TYPE_GRADIENT) - rp->object = evas_object_gradient_add(ed->evas); - else - printf("EDJE ERROR: wrong part type %i!\n", ep->type); - if (rp->object) - { - evas_object_smart_member_add(rp->object, ed->obj); - evas_object_layer_set(rp->object, evas_object_layer_get(ed->obj)); - if (ep->type != EDJE_PART_TYPE_SWALLOW && ep->type != EDJE_PART_TYPE_GROUP) + Evas_List *l; + int i; + int errors = 0; + + /* colorclass stuff */ + for (l = ed->collection->parts; (l && ! errors); l = l->next) + { + Edje_Part *ep; + Evas_List *hist = NULL; + + /* Register any color classes in this parts descriptions. */ + ep = l->data; + if ((ep->default_desc) && (ep->default_desc->color_class)) + _edje_color_class_member_add(ed, ep->default_desc->color_class); + for (hist = ep->other_desc; hist; hist = hist->next) { - if (ep->mouse_events) - { - _edje_callbacks_add(rp->object, ed, rp); - if (ep->repeat_events) - evas_object_repeat_events_set(rp->object, 1); - - if (ep->pointer_mode != EVAS_OBJECT_POINTER_MODE_AUTOGRAB) - evas_object_pointer_mode_set(rp->object, ep->pointer_mode); - } - else - { - evas_object_pass_events_set(rp->object, 1); - evas_object_pointer_mode_set(rp->object, EVAS_OBJECT_POINTER_MODE_NOGRAB); - } - if (ep->precise_is_inside) - evas_object_precise_is_inside_set(rp->object, 1); + Edje_Part_Description *desc; + + desc = hist->data; + if (desc->color_class) + _edje_color_class_member_add(ed, desc->color_class); } - if (rp->part->clip_to_id < 0) - evas_object_clip_set(rp->object, ed->clipper); - } - rp->drag.step.x = ep->dragable.step_x; - rp->drag.step.y = ep->dragable.step_y; - rp->gradient_id = -1; - } - if (n > 0) - { - Edje_Real_Part *rp; - ed->table_parts = malloc(sizeof(Edje_Real_Part *) * n); - ed->table_parts_size = n; - /* FIXME: check malloc return */ - n = 0; - for (l = parts; l; l = l->next) - { - rp = l->data; - ed->table_parts[n] = rp; - n++; } - evas_list_free(parts); - for (i = 0; i < ed->table_parts_size; i++) + /* build real parts */ + for (n = 0, l = ed->collection->parts; l; l = l->next, n++) { - rp = ed->table_parts[i]; - if (rp->param1.description->rel1.id_x >= 0) - rp->param1.rel1_to_x = ed->table_parts[rp->param1.description->rel1.id_x % ed->table_parts_size]; - if (rp->param1.description->rel1.id_y >= 0) - rp->param1.rel1_to_y = ed->table_parts[rp->param1.description->rel1.id_y % ed->table_parts_size]; - if (rp->param1.description->rel2.id_x >= 0) - rp->param1.rel2_to_x = ed->table_parts[rp->param1.description->rel2.id_x % ed->table_parts_size]; - if (rp->param1.description->rel2.id_y >= 0) - rp->param1.rel2_to_y = ed->table_parts[rp->param1.description->rel2.id_y % ed->table_parts_size]; - _edje_text_part_on_add_clippers(ed, rp); - if (rp->part->clip_to_id >= 0) + Edje_Part *ep; + Edje_Real_Part *rp; + + ep = l->data; + rp = calloc(1, sizeof(Edje_Real_Part)); + if (!rp) + { + ed->load_error = EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED; + return 0; + } + rp->edje = ed; + _edje_ref(rp->edje); + rp->part = ep; + parts = evas_list_append(parts, rp); + rp->param1.description = ep->default_desc; + rp->chosen_description = rp->param1.description; + if (!rp->param1.description) + printf("EDJE ERROR: no default part description!\n"); + if (ep->type == EDJE_PART_TYPE_RECTANGLE) + rp->object = evas_object_rectangle_add(ed->evas); + else if (ep->type == EDJE_PART_TYPE_IMAGE) + rp->object = evas_object_image_add(ed->evas); + else if (ep->type == EDJE_PART_TYPE_TEXT) { - rp->clip_to = ed->table_parts[rp->part->clip_to_id % ed->table_parts_size]; - if (rp->clip_to) + _edje_text_part_on_add(ed, rp); + rp->object = evas_object_text_add(ed->evas); + evas_object_text_font_source_set(rp->object, ed->path); + } + else if (ep->type == EDJE_PART_TYPE_SWALLOW || ep->type == EDJE_PART_TYPE_GROUP) + { + rp->object = evas_object_rectangle_add(ed->evas); + evas_object_color_set(rp->object, 0, 0, 0, 0); + evas_object_pass_events_set(rp->object, 1); + evas_object_pointer_mode_set(rp->object, EVAS_OBJECT_POINTER_MODE_NOGRAB); + } + else if (ep->type == EDJE_PART_TYPE_TEXTBLOCK) + rp->object = evas_object_textblock_add(ed->evas); + else if (ep->type == EDJE_PART_TYPE_GRADIENT) + rp->object = evas_object_gradient_add(ed->evas); + else + printf("EDJE ERROR: wrong part type %i!\n", ep->type); + if (rp->object) + { + evas_object_smart_member_add(rp->object, ed->obj); +// evas_object_layer_set(rp->object, evas_object_layer_get(ed->obj)); + if (ep->type != EDJE_PART_TYPE_SWALLOW && ep->type != EDJE_PART_TYPE_GROUP) { - evas_object_pass_events_set(rp->clip_to->object, 1); - evas_object_pointer_mode_set(rp->clip_to->object, EVAS_OBJECT_POINTER_MODE_NOGRAB); - evas_object_clip_set(rp->object, rp->clip_to->object); + if (ep->mouse_events) + { + _edje_callbacks_add(rp->object, ed, rp); + if (ep->repeat_events) + evas_object_repeat_events_set(rp->object, 1); + + if (ep->pointer_mode != EVAS_OBJECT_POINTER_MODE_AUTOGRAB) + evas_object_pointer_mode_set(rp->object, ep->pointer_mode); + } + else + { + evas_object_pass_events_set(rp->object, 1); + evas_object_pointer_mode_set(rp->object, EVAS_OBJECT_POINTER_MODE_NOGRAB); + } + if (ep->precise_is_inside) + evas_object_precise_is_inside_set(rp->object, 1); } + if (rp->part->clip_to_id < 0) + evas_object_clip_set(rp->object, ed->clipper); } - if (rp->part->dragable.confine_id >= 0) - rp->confine_to = ed->table_parts[rp->part->dragable.confine_id % ed->table_parts_size]; - - /* replay events for dragable */ - if (rp->part->dragable.events_id >= 0) + rp->drag.step.x = ep->dragable.step_x; + rp->drag.step.y = ep->dragable.step_y; + rp->gradient_id = -1; + } + if (n > 0) + { + Edje_Real_Part *rp; + ed->table_parts = malloc(sizeof(Edje_Real_Part *) * n); + ed->table_parts_size = n; + /* FIXME: check malloc return */ + n = 0; + for (l = parts; l; l = l->next) { - rp->events_to = - ed->table_parts[rp->part->dragable.events_id % ed->table_parts_size]; - /* events_to may be used only with dragable */ - if (!rp->events_to->part->dragable.x && - !rp->events_to->part->dragable.y) - rp->events_to = NULL; + rp = l->data; + ed->table_parts[n] = rp; + n++; } - - rp->swallow_params.min.w = 0; - rp->swallow_params.min.w = 0; - rp->swallow_params.max.w = -1; - rp->swallow_params.max.h = -1; - - if (ed->file->feature_ver < 1) + evas_list_free(parts); + for (i = 0; i < ed->table_parts_size; i++) { - rp->param1.description->text.id_source = -1; - rp->param1.description->text.id_text_source = -1; + rp = ed->table_parts[i]; + if (rp->param1.description->rel1.id_x >= 0) + rp->param1.rel1_to_x = ed->table_parts[rp->param1.description->rel1.id_x % ed->table_parts_size]; + if (rp->param1.description->rel1.id_y >= 0) + rp->param1.rel1_to_y = ed->table_parts[rp->param1.description->rel1.id_y % ed->table_parts_size]; + if (rp->param1.description->rel2.id_x >= 0) + rp->param1.rel2_to_x = ed->table_parts[rp->param1.description->rel2.id_x % ed->table_parts_size]; + if (rp->param1.description->rel2.id_y >= 0) + rp->param1.rel2_to_y = ed->table_parts[rp->param1.description->rel2.id_y % ed->table_parts_size]; + _edje_text_part_on_add_clippers(ed, rp); + if (rp->part->clip_to_id >= 0) + { + rp->clip_to = ed->table_parts[rp->part->clip_to_id % ed->table_parts_size]; + if (rp->clip_to) + { + evas_object_pass_events_set(rp->clip_to->object, 1); + evas_object_pointer_mode_set(rp->clip_to->object, EVAS_OBJECT_POINTER_MODE_NOGRAB); + evas_object_clip_set(rp->object, rp->clip_to->object); + } + } + if (rp->part->dragable.confine_id >= 0) + rp->confine_to = ed->table_parts[rp->part->dragable.confine_id % ed->table_parts_size]; + + /* replay events for dragable */ + if (rp->part->dragable.events_id >= 0) + { + rp->events_to = + ed->table_parts[rp->part->dragable.events_id % ed->table_parts_size]; + /* events_to may be used only with dragable */ + if (!rp->events_to->part->dragable.x && + !rp->events_to->part->dragable.y) + rp->events_to = NULL; + } + + rp->swallow_params.min.w = 0; + rp->swallow_params.min.w = 0; + rp->swallow_params.max.w = -1; + rp->swallow_params.max.h = -1; + + if (ed->file->feature_ver < 1) + { + rp->param1.description->text.id_source = -1; + rp->param1.description->text.id_text_source = -1; + } + if (rp->param1.description->text.id_source >= 0) + rp->text.source = ed->table_parts[rp->param1.description->text.id_source % ed->table_parts_size]; + if (rp->param1.description->text.id_text_source >= 0) + rp->text.text_source = ed->table_parts[rp->param1.description->text.id_text_source % ed->table_parts_size]; } - if (rp->param1.description->text.id_source >= 0) - rp->text.source = ed->table_parts[rp->param1.description->text.id_source % ed->table_parts_size]; - if (rp->param1.description->text.id_text_source >= 0) - rp->text.text_source = ed->table_parts[rp->param1.description->text.id_text_source % ed->table_parts_size]; - } - } - - _edje_programs_patterns_init(ed); - - n = evas_list_count(ed->collection->programs); - if (n > 0) - { - /* FIXME: keeping a table AND a list is just bad - nuke list */ - ed->table_programs = malloc(sizeof(Edje_Program *) * n); - ed->table_programs_size = n; - /* FIXME: check malloc return */ - n = 0; - for (l = ed->collection->programs; l; l = l->next) - { - Edje_Program *pr; - - pr = l->data; - ed->table_programs[n] = pr; - n++; } - } - _edje_ref(ed); - _edje_block(ed); - _edje_freeze(ed); - if (ed->collection->script) _edje_embryo_script_init(ed); - _edje_var_init(ed); - for (i = 0; i < ed->table_parts_size; i++) - { - Edje_Real_Part *rp; - - rp = ed->table_parts[i]; - evas_object_show(rp->object); - if (_edje_block_break(ed)) break; - if (rp->part->dragable.x < 0) rp->drag.val.x = 1.0; - if (rp->part->dragable.y < 0) rp->drag.val.x = 1.0; - _edje_dragable_pos_set(ed, rp, rp->drag.val.x, rp->drag.val.y); - } - ed->dirty = 1; - if ((evas_object_clipees_get(ed->clipper)) && - (evas_object_visible_get(obj))) - evas_object_show(ed->clipper); - - /* instantiate 'internal swallows' */ - for (i = 0; i < ed->table_parts_size; i++) - { - Edje_Real_Part *rp; - - rp = ed->table_parts[i]; - if (rp->part->type != EDJE_PART_TYPE_GROUP) continue; - if (rp->part->source) - { - Evas_List *l; - Evas_Object *child_obj; - Edje *child_ed; - const char *group_path_entry = evas_stringshare_add(rp->part->source); - if (!group_path) + + _edje_programs_patterns_init(ed); + + n = evas_list_count(ed->collection->programs); + if (n > 0) + { + /* FIXME: keeping a table AND a list is just bad - nuke list */ + ed->table_programs = malloc(sizeof(Edje_Program *) * n); + ed->table_programs_size = n; + /* FIXME: check malloc return */ + n = 0; + for (l = ed->collection->programs; l; l = l->next) { - group_path = evas_list_append(NULL, evas_stringshare_add(part)); - group_path_started = 1; + Edje_Program *pr; + + pr = l->data; + ed->table_programs[n] = pr; + n++; } - /* make sure that this group isn't already in the tree of parents */ - for (l = group_path; l; l = l->next) + } + _edje_ref(ed); + _edje_block(ed); + _edje_freeze(ed); + if (ed->collection->script) _edje_embryo_script_init(ed); + _edje_var_init(ed); + for (i = 0; i < ed->table_parts_size; i++) + { + Edje_Real_Part *rp; + + rp = ed->table_parts[i]; + evas_object_show(rp->object); + if (_edje_block_break(ed)) break; + if (rp->part->dragable.x < 0) rp->drag.val.x = 1.0; + if (rp->part->dragable.y < 0) rp->drag.val.x = 1.0; + _edje_dragable_pos_set(ed, rp, rp->drag.val.x, rp->drag.val.y); + } + ed->dirty = 1; + if ((evas_object_clipees_get(ed->clipper)) && + (evas_object_visible_get(obj))) + evas_object_show(ed->clipper); + + /* instantiate 'internal swallows' */ + for (i = 0; i < ed->table_parts_size; i++) + { + Edje_Real_Part *rp; + + rp = ed->table_parts[i]; + if (rp->part->type != EDJE_PART_TYPE_GROUP) continue; + if (rp->part->source) { - if (l->data == group_path_entry) + Evas_List *l; + Evas_Object *child_obj; + Edje *child_ed; + const char *group_path_entry = evas_stringshare_add(rp->part->source); + if (!group_path) + { + group_path = evas_list_append(NULL, evas_stringshare_add(part)); + group_path_started = 1; + } + /* make sure that this group isn't already in the tree of parents */ + for (l = group_path; l; l = l->next) + { + if (l->data == group_path_entry) + { + _edje_thaw(ed); + _edje_unblock(ed); + _edje_unref(ed); + _edje_file_del(ed); + evas_stringshare_del(group_path_entry); + if (group_path_started) + { + evas_stringshare_del(group_path->data); + evas_list_free(group_path); + } + ed->load_error = EDJE_LOAD_ERROR_RECURSIVE_REFERENCE; + return 0; + } + } + + child_obj = edje_object_add(ed->evas); + group_path = evas_list_append(group_path, group_path_entry); + if (!_edje_object_file_set_internal(child_obj, file, rp->part->source, group_path)) { _edje_thaw(ed); _edje_unblock(ed); _edje_unref(ed); _edje_file_del(ed); - evas_stringshare_del(group_path_entry); + if (group_path_started) { - evas_stringshare_del(group_path->data); - evas_list_free(group_path); + while (group_path) + { + evas_stringshare_del(group_path->data); + group_path = evas_list_remove_list(group_path, group_path); + } } - ed->load_error = EDJE_LOAD_ERROR_RECURSIVE_REFERENCE; + ed->load_error = edje_object_load_error_get(child_obj); return 0; } + child_ed = _edje_fetch(child_obj); + child_ed->parent = evas_stringshare_add(rp->part->name); + + group_path = evas_list_remove(group_path, group_path_entry); + evas_stringshare_del(group_path_entry); + + edje_object_signal_callback_add(child_obj, "*", "*", _cb_signal_repeat, obj); + _edje_real_part_swallow(rp, child_obj); } - - child_obj = edje_object_add(ed->evas); - group_path = evas_list_append(group_path, group_path_entry); - if (!_edje_object_file_set_internal(child_obj, file, rp->part->source, group_path)) - { - _edje_thaw(ed); - _edje_unblock(ed); - _edje_unref(ed); - _edje_file_del(ed); - - if (group_path_started) - { - while (group_path) - { - evas_stringshare_del(group_path->data); - group_path = evas_list_remove_list(group_path, group_path); - } - } - ed->load_error = edje_object_load_error_get(child_obj); - return 0; - } - child_ed = _edje_fetch(child_obj); - child_ed->parent = evas_stringshare_add(rp->part->name); - - group_path = evas_list_remove(group_path, group_path_entry); - evas_stringshare_del(group_path_entry); - - edje_object_signal_callback_add(child_obj, "*", "*", _cb_signal_repeat, obj); - _edje_real_part_swallow(rp, child_obj); } - } - - if (group_path_started) - { - while (group_path) + + if (group_path_started) { - evas_stringshare_del(group_path->data); - group_path = evas_list_remove_list(group_path, group_path); + while (group_path) + { + evas_stringshare_del(group_path->data); + group_path = evas_list_remove_list(group_path, group_path); + } } - } - - /* reswallow any swallows that existed before setting the file */ - if (old_swallows) - { - while (old_swallows) + + /* reswallow any swallows that existed before setting the file */ + if (old_swallows) { - const char *name; - Evas_Object *swallow; - - name = old_swallows->data; - old_swallows = evas_list_remove_list(old_swallows, old_swallows); - - swallow = old_swallows->data; - old_swallows = evas_list_remove_list(old_swallows, old_swallows); - - edje_object_part_swallow(obj, name, swallow); - evas_stringshare_del(name); + while (old_swallows) + { + const char *name; + Evas_Object *swallow; + + name = old_swallows->data; + old_swallows = evas_list_remove_list(old_swallows, old_swallows); + + swallow = old_swallows->data; + old_swallows = evas_list_remove_list(old_swallows, old_swallows); + + edje_object_part_swallow(obj, name, swallow); + evas_stringshare_del(name); + } } + + _edje_recalc(ed); + _edje_thaw(ed); + _edje_unblock(ed); + _edje_unref(ed); } - - _edje_recalc(ed); - _edje_thaw(ed); - _edje_unblock(ed); - _edje_unref(ed); ed->load_error = EDJE_LOAD_ERROR_NONE; _edje_emit(ed, "load", NULL); return 1; =================================================================== RCS file: /cvs/e/e17/libs/edje/src/lib/edje_message_queue.c,v retrieving revision 1.33 retrieving revision 1.34 diff -u -3 -r1.33 -r1.34 --- edje_message_queue.c 1 Mar 2008 04:59:38 -0000 1.33 +++ edje_message_queue.c 30 May 2008 11:20:49 -0000 1.34 @@ -420,34 +420,10 @@ } void -_edje_message_process(Edje_Message *em) +_edje_message_parameters_push(Edje_Message *em) { - Embryo_Function fn; - void *pdata; int i; - - /* signals are only handled one way */ - if (em->type == EDJE_MESSAGE_SIGNAL) - { - _edje_emit_handle(em->edje, - ((Edje_Message_Signal *)em->msg)->sig, - ((Edje_Message_Signal *)em->msg)->src); - return; - } - /* if this has been queued up for the app then just call the callback */ - if (em->queue == EDJE_QUEUE_APP) - { - if (em->edje->message.func) - em->edje->message.func(em->edje->message.data, em->edje->obj, - em->type, em->id, em->msg); - return; - } - /* now this message is destined for the script message handler fn */ - if (!((em->edje->collection) && (em->edje->collection->script))) return; - fn = embryo_program_function_find(em->edje->collection->script, "message"); - if (fn == EMBRYO_FUNCTION_NONE) return; - /* reset the engine */ - _edje_embryo_script_reset(em->edje); + /* these params ALWAYS go on */ /* first param is the message type - always */ embryo_parameter_cell_push(em->edje->collection->script, @@ -556,6 +532,44 @@ default: break; } +} + +void +_edje_message_process(Edje_Message *em) +{ + Embryo_Function fn; + void *pdata; + + /* signals are only handled one way */ + if (em->type == EDJE_MESSAGE_SIGNAL) + { + _edje_emit_handle(em->edje, + ((Edje_Message_Signal *)em->msg)->sig, + ((Edje_Message_Signal *)em->msg)->src); + return; + } + /* if this has been queued up for the app then just call the callback */ + if (em->queue == EDJE_QUEUE_APP) + { + if (em->edje->message.func) + em->edje->message.func(em->edje->message.data, em->edje->obj, + em->type, em->id, em->msg); + return; + } + /* now this message is destined for the script message handler fn */ + if (!((em->edje->collection) && (em->edje->collection->script))) return; + if (_edje_script_only(em->edje)) + { + _edje_script_only_message(em->edje, em); + return; + } + fn = embryo_program_function_find(em->edje->collection->script, "message"); + if (fn == EMBRYO_FUNCTION_NONE) return; + /* reset the engine */ + _edje_embryo_script_reset(em->edje); + + _edje_message_parameters_push(em); + embryo_program_vm_push(em->edje->collection->script); _edje_embryo_globals_init(em->edje); pdata = embryo_program_data_get(em->edje->collection->script); =================================================================== RCS file: /cvs/e/e17/libs/edje/src/lib/edje_private.h,v retrieving revision 1.148 retrieving revision 1.149 diff -u -3 -r1.148 -r1.149 --- edje_private.h 29 May 2008 02:00:04 -0000 1.148 +++ edje_private.h 30 May 2008 11:20:49 -0000 1.149 @@ -647,6 +647,7 @@ /* for faster lookups to avoid nth list walks */ Edje_Real_Part **table_parts; Edje_Program **table_programs; + void *script_only_data; int table_programs_size; int table_parts_size; @@ -1147,6 +1148,7 @@ Edje_Message *_edje_message_new (Edje *ed, Edje_Queue queue, Edje_Message_Type type, int id); void _edje_message_free (Edje_Message *em); void _edje_message_send (Edje *ed, Edje_Queue queue, Edje_Message_Type type, int id, void *emsg); +void _edje_message_parameters_push (Edje_Message *em); void _edje_message_process (Edje_Message *em); void _edje_message_queue_process (void); void _edje_message_queue_clear (void); @@ -1165,4 +1167,61 @@ void _edje_embryo_globals_init(Edje *ed); +#define CHKPARAM(n) if (params[0] != (sizeof(Embryo_Cell) * (n))) return -1; +#define GETSTR(str, par) { \ + Embryo_Cell *___cptr; \ + int ___l; \ + str = NULL; \ + if ((___cptr = embryo_data_address_get(ep, (par)))) { \ + ___l = embryo_data_string_length_get(ep, ___cptr); \ + if (((str) = alloca(___l + 1))) \ + embryo_data_string_get(ep, ___cptr, (str)); } } +#define GETSTREVAS(str, par) { \ + if ((str)) { \ + if ((par) && (!strcmp((par), (str)))) return 0; \ + if ((par)) evas_stringshare_del((par)); \ + (par) = (char *)evas_stringshare_add((str)); } \ + else (par) = NULL; } +#define GETFLOAT(val, par) { \ + float *___cptr; \ + if ((___cptr = (float *)embryo_data_address_get(ep, (par)))) { \ + val = *___cptr; } } +#define GETINT(val, par) { \ + int *___cptr; \ + if ((___cptr = (int *)embryo_data_address_get(ep, (par)))) { \ + val = *___cptr; } } +#define SETSTR(str, par) { \ + Embryo_Cell *___cptr; \ + if ((___cptr = embryo_data_address_get(ep, (par)))) { \ + embryo_data_string_set(ep, str, ___cptr); } } +#define SETSTRALLOCATE(s) { \ + if (s) { \ + if (strlen((s)) < params[4]) { \ + SETSTR((s), params[3]); } \ + else { \ + char *ss; \ + ss = alloca(strlen((s)) + 1); \ + strcpy(ss, (s)); \ + ss[params[4] - 2] = 0; \ + SETSTR(ss, params[3]); } } \ + else \ + SETSTR("", params[3]); } +#define SETFLOAT(val, par) { \ + float *___cptr; \ + if ((___cptr = (float *)embryo_data_address_get(ep, (par)))) { \ + *___cptr = (float)val; } } +#define SETINT(val, par) { \ + int *___cptr; \ + if ((___cptr = (int *)embryo_data_address_get(ep, (par)))) { \ + *___cptr = (int)val; } } + +int _edje_script_only(Edje *ed); +void _edje_script_only_init(Edje *ed); +void _edje_script_only_shutdown(Edje *ed); +void _edje_script_only_show(Edje *ed); +void _edje_script_only_hide(Edje *ed); +void _edje_script_only_move(Edje *ed); +void _edje_script_only_resize(Edje *ed); +void _edje_script_only_message(Edje *ed, Edje_Message *em); + #endif =================================================================== RCS file: /cvs/e/e17/libs/edje/src/lib/edje_smart.c,v retrieving revision 1.33 retrieving revision 1.34 diff -u -3 -r1.33 -r1.34 --- edje_smart.c 5 Oct 2007 04:53:17 -0000 1.33 +++ edje_smart.c 30 May 2008 11:20:49 -0000 1.34 @@ -88,6 +88,7 @@ _edje_clean_objects(ed); _edje_edjes = evas_list_remove(_edje_edjes, obj); evas_object_smart_data_set(obj, NULL); + if (_edje_script_only(ed)) _edje_script_only_shutdown(ed); _edje_file_del(ed); _edje_unref(ed); } @@ -105,6 +106,12 @@ ed->y = y; // evas_object_move(ed->clipper, ed->x, ed->y); + if (_edje_script_only(ed)) + { + _edje_script_only_move(ed); + return; + } + for (i = 0; i < ed->table_parts_size; i++) { Edje_Real_Part *ep; @@ -146,6 +153,11 @@ if ((w == ed->w) && (h == ed->h)) return; ed->w = w; ed->h = h; + if (_edje_script_only(ed)) + { + _edje_script_only_resize(ed); + return; + } // evas_object_resize(ed->clipper, ed->w, ed->h); ed->dirty = 1; _edje_recalc(ed); @@ -162,6 +174,11 @@ if (evas_object_visible_get(ed->clipper)) return; if ((ed->collection) && (evas_object_clipees_get(ed->clipper))) evas_object_show(ed->clipper); + if (_edje_script_only(ed)) + { + _edje_script_only_show(ed); + return; + } _edje_emit(ed, "show", NULL); } @@ -175,6 +192,11 @@ if (!evas_object_visible_get(ed->clipper)) return; if ((ed->collection) && (evas_object_clipees_get(ed->clipper))) evas_object_hide(ed->clipper); + if (_edje_script_only(ed)) + { + _edje_script_only_hide(ed); + return; + } _edje_emit(ed, "hide", NULL); } |
From: Enlightenment C. <no...@cv...> - 2008-05-30 11:21:20
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/data/include Modified Files: edje.inc Log Message: start some serious work on script_only edje objects - for efficiency sake i'm having an almost parallel codepath for script_only objects - they dont get to use the older edje api calls for part defined objects. they will have a new set of calls specifically for them. it's partly done - very little available now, but will expand. lots of fixme's. =================================================================== RCS file: /cvs/e/e17/libs/edje/data/include/edje.inc,v retrieving revision 1.26 retrieving revision 1.27 diff -u -3 -r1.26 -r1.27 --- edje.inc 19 May 2008 04:38:40 -0000 1.26 +++ edje.inc 30 May 2008 11:20:49 -0000 1.27 @@ -1,3 +1,34 @@ +/* ************************** */ +/* This is for script-only objects */ +/* ************************** */ + +native e_obj_rect_add(); +native e_obj_show(obj); +native e_obj_move(obj, x, y); +native e_obj_resize(obj, w, h); +native e_obj_color_set(obj, r, g, b, a); + +/* threw this in for debug... but need it */ +native e_signal_emit(sig[], src[]); + + + + + + + + + + + + + +/* ************************** */ +/* The below is for non-script-only objects. these calls will not work for */ +/* script-only objects. above are for script-only. perhaps this will be */ +/* deprecated sometime? or merged to the above partly? */ +/* ************************** */ + /* Edje exported calls */ /************************************************/ |
From: Enlightenment C. <no...@cv...> - 2008-05-30 14:28:00
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/src/lib Modified Files: edje_load.c Log Message: printf-- =================================================================== RCS file: /cvs/e/e17/libs/edje/src/lib/edje_load.c,v retrieving revision 1.125 retrieving revision 1.126 diff -u -3 -r1.125 -r1.126 --- edje_load.c 30 May 2008 11:20:49 -0000 1.125 +++ edje_load.c 30 May 2008 14:27:56 -0000 1.126 @@ -264,9 +264,11 @@ if (ed->collection) { - printf("%s %s = %i\n", file, part, ed->collection->script_only); if (ed->collection->script_only) - _edje_script_only_init(ed); + { + ed->load_error = EDJE_LOAD_ERROR_NONE; + _edje_script_only_init(ed); + } else { Evas_List *l; @@ -574,9 +576,9 @@ _edje_thaw(ed); _edje_unblock(ed); _edje_unref(ed); + ed->load_error = EDJE_LOAD_ERROR_NONE; + _edje_emit(ed, "load", NULL); } - ed->load_error = EDJE_LOAD_ERROR_NONE; - _edje_emit(ed, "load", NULL); return 1; } else |
From: Enlightenment C. <no...@cv...> - 2008-05-30 15:30:04
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/data/include Modified Files: edje.inc Log Message: doing some work on a test script object and actually making it work. =================================================================== RCS file: /cvs/e/e17/libs/edje/data/include/edje.inc,v retrieving revision 1.27 retrieving revision 1.28 diff -u -3 -r1.27 -r1.28 --- edje.inc 30 May 2008 11:20:49 -0000 1.27 +++ edje.inc 30 May 2008 15:29:39 -0000 1.28 @@ -2,11 +2,18 @@ /* This is for script-only objects */ /* ************************** */ +native e_obj_del(obj); + native e_obj_rect_add(); + native e_obj_show(obj); +native e_obj_hide(obj); native e_obj_move(obj, x, y); native e_obj_resize(obj, w, h); +native e_obj_geometry_set(obj, x, y, w, h); +native e_obj_geometry_get(obj, &x, &y, &w, &h); native e_obj_color_set(obj, r, g, b, a); +native e_obj_color_get(obj, &r, &g, &b, &a); /* threw this in for debug... but need it */ native e_signal_emit(sig[], src[]); |
From: Enlightenment C. <no...@cv...> - 2008-05-30 15:30:04
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/src/lib Modified Files: edje_script_only.c Log Message: doing some work on a test script object and actually making it work. =================================================================== RCS file: /cvs/e/e17/libs/edje/src/lib/edje_script_only.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- edje_script_only.c 30 May 2008 11:20:49 -0000 1.1 +++ edje_script_only.c 30 May 2008 15:29:39 -0000 1.2 @@ -92,29 +92,58 @@ #define IFNJ(type) if (!si->job.type) #define EXPF(func) embryo_program_native_call_add(ed->collection->script, #func, _exp_##func) -/* FIXME: need an oid -> ptr translation here. this is a hack. id # is linear\ - * and runs out after 2billion uses or so. the hash is fat if all u have is - * a few objects... doesn't know how to do anything but evas_object as it - * will evas_object_del at the end... so for now this is a testing stub. */ +typedef struct _Oid Oid; + +struct _Oid +{ + Edje *ed; + Evas_Object *obj; + Evas_Coord x, y, w, h; + int oid; +}; + +/* FIXME: using evas_hash and strings is just nasty! make a custom int hash */ static int -_oid_track(Edje *ed, void *o) +_oid_alloc(Edje *ed) { - char buf[64]; SI; si->oid.id++; - snprintf(buf, sizeof(buf), "%i", si->oid.id); - si->oid.hash = evas_hash_add(si->oid.hash, buf, o); return si->oid.id; } -static void * -_oid_find(Edje *ed, int oid) +static Oid * +_oid_track(Edje *ed, Evas_Object *o) { + Oid *oi; char buf[64]; SI; - snprintf(buf, sizeof(buf), "%i", si->oid.id); + oi = calloc(1, sizeof(Oid)); + if (!oi) return NULL; + oi->oid = _oid_alloc(ed); + if (!oi->oid) + { + free(oi); + return NULL; + } + oi->ed = ed; + oi->obj = o; + evas_object_smart_member_add(oi->obj, oi->ed->obj); + evas_object_clip_set(oi->obj, oi->ed->clipper); + evas_object_geometry_get(oi->obj, &(oi->x), &(oi->y), &(oi->w), &(oi->h)); + snprintf(buf, sizeof(buf), "%i", oi->oid); + si->oid.hash = evas_hash_add(si->oid.hash, buf, oi); + return oi; +} + +static Oid * +_oid_find(Edje *ed, int oid) +{ + char buf[64]; + SI; + + snprintf(buf, sizeof(buf), "%i", oid); return evas_hash_find(si->oid.hash, buf); } @@ -124,36 +153,106 @@ char buf[64]; SI; - snprintf(buf, sizeof(buf), "%i", si->oid.id); + snprintf(buf, sizeof(buf), "%i", oid); si->oid.hash = evas_hash_del(si->oid.hash, buf, NULL); } +static void +_oid_free(Oid *oid) +{ + free(oid); +} + +static Evas_Bool +_oid_freeall_cb(const Evas_Hash *hash, const char *key, void *data, void *fdata) +{ + Oid *oid = data; + evas_object_del(oid->obj); + free(oid); + return 1; +} + +static void +_oid_freeall(Edje *ed) +{ + SI; + if (!si->oid.hash) return; + evas_hash_foreach(si->oid.hash, _oid_freeall_cb, ed); + evas_hash_free(si->oid.hash); + si->oid.hash = NULL; +} + +static Evas_Bool +_oid_moveall_cb(const Evas_Hash *hash, const char *key, void *data, void *fdata) +{ + Oid *oid = data; + evas_object_move(oid->obj, oid->ed->x + oid->x, oid->ed->y + oid->y); + return 1; +} + +static void +_oid_moveall(Edje *ed) +{ + SI; + if (!si->oid.hash) return; + evas_hash_foreach(si->oid.hash, _oid_moveall_cb, ed); +} + +/**********/ + +static Embryo_Cell +_exp_e_obj_del(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed = embryo_program_data_get(ep); + Oid *oid; + SI; + + CHKPARAM(1); + if (!(oid = _oid_find(ed, params[1]))) return -1; + evas_object_del(oid->obj); + _oid_del(ed, oid->oid); + _oid_free(oid); + return 0; +} + static Embryo_Cell _exp_e_obj_rect_add(Embryo_Program *ep, Embryo_Cell *params) { Edje *ed = embryo_program_data_get(ep); Evas_Object *o; - int oid; + Oid *oid; SI; o = evas_object_rectangle_add(evas_object_evas_get(ed->obj)); if (!o) return 0; - evas_object_smart_member_add(o, ed->obj); - evas_object_clip_set(o, ed->clipper); - _oid_track(ed, o); - return oid; + oid = _oid_track(ed, o); + if (oid) return oid->oid; + return 0; } static Embryo_Cell _exp_e_obj_show(Embryo_Program *ep, Embryo_Cell *params) { Edje *ed = embryo_program_data_get(ep); - Evas_Object *o; + Oid *oid; SI; CHKPARAM(1); - if (!(o = _oid_find(ed, params[1]))) return -1; - evas_object_show(o); + if (!(oid = _oid_find(ed, params[1]))) return -1; + evas_object_show(oid->obj); + return 0; +} + +static Embryo_Cell +_exp_e_obj_hide(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed = embryo_program_data_get(ep); + Oid *oid; + SI; + + CHKPARAM(1); + if (!(oid = _oid_find(ed, params[1]))) return -1; + evas_object_hide(oid->obj); return 0; } @@ -161,12 +260,15 @@ _exp_e_obj_move(Embryo_Program *ep, Embryo_Cell *params) { Edje *ed = embryo_program_data_get(ep); - Evas_Object *o; + Oid *oid; SI; CHKPARAM(3); - if (!(o = _oid_find(ed, params[1]))) return -1; - evas_object_move(o, ed->x + params[2], ed->y + params[3]); + if (!(oid = _oid_find(ed, params[1]))) return -1; + if ((oid->x == params[2]) && (oid->y == params[3])) return; + oid->x = params[2]; + oid->y = params[3]; + evas_object_move(oid->obj, ed->x + oid->x, ed->y + oid->y); return 0; } @@ -174,12 +276,51 @@ _exp_e_obj_resize(Embryo_Program *ep, Embryo_Cell *params) { Edje *ed = embryo_program_data_get(ep); - Evas_Object *o; + Oid *oid; SI; CHKPARAM(3); - if (!(o = _oid_find(ed, params[1]))) return -1; - evas_object_resize(o, params[2], params[3]); + if (!(oid = _oid_find(ed, params[1]))) return -1; + if ((oid->w == params[2]) && (oid->h == params[3])) return; + oid->w = params[2]; + oid->h = params[3]; + evas_object_resize(oid->obj, oid->w, oid->h); + return 0; +} + +static Embryo_Cell +_exp_e_obj_geometry_set(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed = embryo_program_data_get(ep); + Oid *oid; + SI; + + CHKPARAM(5); + if (!(oid = _oid_find(ed, params[1]))) return -1; + if ((oid->x == params[2]) && (oid->y == params[3]) && + (oid->w == params[4]) && (oid->h == params[5])) return; + oid->x = params[2]; + oid->y = params[3]; + oid->w = params[4]; + oid->h = params[5]; + evas_object_move(oid->obj, ed->x + oid->x, ed->y + oid->y); + evas_object_resize(oid->obj, oid->w, oid->h); + return 0; +} + +static Embryo_Cell +_exp_e_obj_geometry_get(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed = embryo_program_data_get(ep); + Oid *oid; + SI; + + CHKPARAM(5); + if (!(oid = _oid_find(ed, params[1]))) return -1; + SETINT(oid->x, params[2]); + SETINT(oid->y, params[3]); + SETINT(oid->w, params[4]); + SETINT(oid->h, params[5]); return 0; } @@ -187,12 +328,30 @@ _exp_e_obj_color_set(Embryo_Program *ep, Embryo_Cell *params) { Edje *ed = embryo_program_data_get(ep); - Evas_Object *o; + Oid *oid; SI; CHKPARAM(5); - if (!(o = _oid_find(ed, params[1]))) return -1; - evas_object_color_set(o, params[2], params[3], params[4], params[5]); + if (!(oid = _oid_find(ed, params[1]))) return -1; + evas_object_color_set(oid->obj, params[2], params[3], params[4], params[5]); + return 0; +} + +static Embryo_Cell +_exp_e_obj_color_get(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed = embryo_program_data_get(ep); + Oid *oid; + int r, g, b, a; + SI; + + CHKPARAM(5); + if (!(oid = _oid_find(ed, params[1]))) return -1; + evas_object_color_get(oid->obj, &r, &g , &b, &a); + SETINT(r, params[2]); + SETINT(g, params[3]); + SETINT(b, params[4]); + SETINT(a, params[5]); return 0; } @@ -211,6 +370,8 @@ return 0; } +/**********/ + int _edje_script_only(Edje *ed) { @@ -232,11 +393,16 @@ embryo_program_data_set(ed->collection->script, ed); + EXPF(e_obj_del); EXPF(e_obj_rect_add); EXPF(e_obj_show); + EXPF(e_obj_hide); EXPF(e_obj_move); EXPF(e_obj_resize); + EXPF(e_obj_geometry_set); + EXPF(e_obj_geometry_get); EXPF(e_obj_color_set); + EXPF(e_obj_color_get); EXPF(e_signal_emit); embryo_program_vm_push(ed->collection->script); @@ -258,12 +424,6 @@ _edje_script_only_move(ed); } -static Evas_Bool -_shutdown_oid_hash(const Evas_Hash *hash, const char *key, void *data, void *fdata) -{ - evas_object_del(data); - return 1; -} void _edje_script_only_shutdown(Edje *ed) { @@ -275,11 +435,7 @@ DELJ(hide); DELJ(move); DELJ(resize); - if (si->oid.hash) - { - evas_hash_foreach(si->oid.hash, _shutdown_oid_hash, ed); - evas_hash_free(si->oid.hash); - } + _oid_freeall(ed); } static void @@ -348,7 +504,9 @@ Edje *ed = data; SI; + _oid_moveall(ed); ZERJ(move); + IFNO(obj_move) return; PINT(ed->x); PINT(ed->y); CLFN(obj_move); @@ -357,19 +515,9 @@ _edje_script_only_move(Edje *ed) { SI; - - if ((si->fn.obj_move == EMBRYO_FUNCTION_NONE) && - (si->fn.obj_move_immediate == EMBRYO_FUNCTION_NONE)) - { - /* FIXME: auto-move sub-objects. this means we need to store in-edje - * x,y and other stuff... */ - return; - } - IFFN(obj_move) - { - DELJ(move); - ADDJ(move, _move_job); - } + + DELJ(move); + ADDJ(move, _move_job); IFNO(obj_move_immediate) return; PINT(ed->x); PINT(ed->y); |
From: Enlightenment C. <no...@cv...> - 2008-08-02 01:33:42
|
Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje Dir : e17/libs/edje/src/lib Modified Files: edje_load.c Log Message: fix string len problem =================================================================== RCS file: /cvs/e/e17/libs/edje/src/lib/edje_load.c,v retrieving revision 1.127 retrieving revision 1.128 diff -u -3 -r1.127 -r1.128 --- edje_load.c 7 Jun 2008 10:06:13 -0000 1.127 +++ edje_load.c 2 Aug 2008 01:33:39 -0000 1.128 @@ -1013,19 +1013,21 @@ Evas_Object *parent; Edje *ed; char new_src[4096]; /* XXX is this max reasonable? */ - int length_parent; + int length_parent = 0; int length_source; parent = data; ed = _edje_fetch(obj); if (!ed) return; /* Replace snprint("%s%c%s") == memcpy + *new_src + memcat */ - length_parent = strlen(ed->parent); + if (ed->parent) + length_parent = strlen(ed->parent); length_source = strlen(source); if (length_source + length_parent + 2 > sizeof(new_src)) return ; - memcpy(new_src, ed->parent, length_parent); + if (ed->parent) + memcpy(new_src, ed->parent, length_parent); new_src[length_parent] = EDJE_PART_PATH_SEPARATOR; memcpy(new_src + length_parent + 1, source, length_source + 1); |