From e773bc9246dd6a2928601bc77733ea2c75ac3b5e Mon Sep 17 00:00:00 2001 From: Cedric BAIL Date: Thu, 29 Jul 2010 12:02:36 +0000 Subject: [PATCH] * edje: change memory layout that will become the new file format. NOTE: I tried this change with all the apps and theme I had, but maybe i missed some bug. Please report any strange behaviour. SVN revision: 50641 --- legacy/edje/src/bin/edje_cc.h | 4 +- legacy/edje/src/bin/edje_cc_handlers.c | 648 +++++------ legacy/edje/src/bin/edje_cc_out.c | 46 +- legacy/edje/src/lib/edje_cache.c | 68 +- legacy/edje/src/lib/edje_calc.c | 528 +++++---- legacy/edje/src/lib/edje_convert.c | 155 ++- legacy/edje/src/lib/edje_convert.h | 84 +- legacy/edje/src/lib/edje_data.c | 308 ++--- legacy/edje/src/lib/edje_edit.c | 1481 +++++++++++++++--------- legacy/edje/src/lib/edje_embryo.c | 797 ++++++++----- legacy/edje/src/lib/edje_entry.c | 9 +- legacy/edje/src/lib/edje_external.c | 15 +- legacy/edje/src/lib/edje_load.c | 282 +++-- legacy/edje/src/lib/edje_private.h | 159 ++- legacy/edje/src/lib/edje_program.c | 6 +- legacy/edje/src/lib/edje_text.c | 50 +- legacy/edje/src/lib/edje_util.c | 39 +- 17 files changed, 2878 insertions(+), 1801 deletions(-) diff --git a/legacy/edje/src/bin/edje_cc.h b/legacy/edje/src/bin/edje_cc.h index 99bd589721..81b79deda5 100644 --- a/legacy/edje/src/bin/edje_cc.h +++ b/legacy/edje/src/bin/edje_cc.h @@ -103,8 +103,8 @@ struct _SrcFile_List /* global fn calls */ void data_setup(void); void data_write(void); -void data_queue_part_lookup(Edje_Part_Collection *pc, char *name, int *dest); -void data_queue_program_lookup(Edje_Part_Collection *pc, char *name, int *dest); +void data_queue_part_lookup(Old_Edje_Part_Collection *pc, char *name, int *dest); +void data_queue_program_lookup(Old_Edje_Part_Collection *pc, char *name, int *dest); void data_queue_image_lookup(char *name, int *dest, Eina_Bool *set); void data_queue_part_slave_lookup(int *master, int *slave); void data_queue_image_slave_lookup(int *master, int *slave); diff --git a/legacy/edje/src/bin/edje_cc_handlers.c b/legacy/edje/src/bin/edje_cc_handlers.c index 24ed3ef077..27ac9f958b 100644 --- a/legacy/edje/src/bin/edje_cc_handlers.c +++ b/legacy/edje/src/bin/edje_cc_handlers.c @@ -1597,14 +1597,14 @@ static void ob_collections_group(void) { Edje_Part_Collection_Directory_Entry *de; - Edje_Part_Collection *pc; + Old_Edje_Part_Collection *pc; Code *cd; de = mem_alloc(SZ(Edje_Part_Collection_Directory_Entry)); edje_file->collection_dir->entries = eina_list_append(edje_file->collection_dir->entries, de); de->id = eina_list_count(edje_file->collection_dir->entries) - 1; - pc = mem_alloc(SZ(Edje_Part_Collection)); + pc = mem_alloc(SZ(Old_Edje_Part_Collection)); edje_collections = eina_list_append(edje_collections, pc); pc->id = eina_list_count(edje_collections) - 1; @@ -1640,7 +1640,7 @@ st_collections_group_name(void) if ((de_other != de) && (de_other->entry) && (!strcmp(de->entry, de_other->entry))) { - Edje_Part_Collection *pc; + Old_Edje_Part_Collection *pc; Code *cd; int i; @@ -1689,7 +1689,7 @@ st_collections_group_name(void) static void st_collections_group_script_only(void) { - Edje_Part_Collection *pc; + Old_Edje_Part_Collection *pc; check_arg_count(1); @@ -1700,7 +1700,7 @@ st_collections_group_script_only(void) static void st_collections_group_lua_script_only(void) { - Edje_Part_Collection *pc; + Old_Edje_Part_Collection *pc; check_arg_count(1); @@ -1748,7 +1748,7 @@ st_collections_group_alias(void) static void st_collections_group_min(void) { - Edje_Part_Collection *pc; + Old_Edje_Part_Collection *pc; check_arg_count(2); @@ -1771,7 +1771,7 @@ st_collections_group_min(void) static void st_collections_group_max(void) { - Edje_Part_Collection *pc; + Old_Edje_Part_Collection *pc; check_arg_count(2); @@ -1871,7 +1871,7 @@ ob_collections_group_lua_script(void) static void st_collections_group_data_item(void) { - Edje_Part_Collection *pc; + Old_Edje_Part_Collection *pc; Edje_Data *di; check_arg_count(2); @@ -1902,7 +1902,7 @@ st_collections_group_data_item(void) static void st_collections_group_parts_alias(void) { - Edje_Part_Collection *pc; + Old_Edje_Part_Collection *pc; check_arg_count(2); @@ -1948,10 +1948,10 @@ st_collections_group_parts_alias(void) static void ob_collections_group_parts_part(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; - ep = mem_alloc(SZ(Edje_Part)); + ep = mem_alloc(SZ(Old_Edje_Part)); pc = eina_list_data_get(eina_list_last(edje_collections)); pc->parts = eina_list_append(pc->parts, ep); ep->id = eina_list_count(pc->parts) - 1; @@ -1984,8 +1984,8 @@ ob_collections_group_parts_part(void) static void st_collections_group_parts_part_name(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; check_arg_count(1); @@ -1995,7 +1995,7 @@ st_collections_group_parts_part_name(void) { Eina_List *l; - Edje_Part *lep; + Old_Edje_Part *lep; EINA_LIST_FOREACH(pc->parts, l, lep) { @@ -2032,8 +2032,8 @@ st_collections_group_parts_part_name(void) static void st_collections_group_parts_part_type(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; check_arg_count(1); @@ -2068,8 +2068,8 @@ st_collections_group_parts_part_type(void) static void st_collections_group_parts_part_mouse_events(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; check_arg_count(1); @@ -2092,8 +2092,8 @@ st_collections_group_parts_part_mouse_events(void) static void st_collections_group_parts_part_repeat_events(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; check_arg_count(1); @@ -2120,8 +2120,8 @@ st_collections_group_parts_part_repeat_events(void) static void st_collections_group_parts_part_ignore_flags(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; check_min_arg_count(1); @@ -2152,8 +2152,8 @@ st_collections_group_parts_part_ignore_flags(void) static void st_collections_group_parts_part_scale(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; check_arg_count(1); @@ -2181,8 +2181,8 @@ st_collections_group_parts_part_scale(void) static void st_collections_group_parts_part_pointer_mode(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; check_arg_count(1); @@ -2208,8 +2208,8 @@ st_collections_group_parts_part_pointer_mode(void) static void st_collections_group_parts_part_precise_is_inside(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; check_arg_count(1); @@ -2233,8 +2233,8 @@ st_collections_group_parts_part_precise_is_inside(void) static void st_collections_group_parts_part_use_alternate_font_metrics(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; check_arg_count(1); @@ -2257,8 +2257,8 @@ st_collections_group_parts_part_use_alternate_font_metrics(void) static void st_collections_group_parts_part_clip_to_id(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; check_arg_count(1); @@ -2290,8 +2290,8 @@ st_collections_group_parts_part_clip_to_id(void) static void st_collections_group_parts_part_source(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; check_arg_count(1); @@ -2317,8 +2317,8 @@ st_collections_group_parts_part_source(void) static void st_collections_group_parts_part_source2(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; check_arg_count(1); @@ -2344,8 +2344,8 @@ st_collections_group_parts_part_source2(void) static void st_collections_group_parts_part_source3(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; check_arg_count(1); @@ -2371,8 +2371,8 @@ st_collections_group_parts_part_source3(void) static void st_collections_group_parts_part_source4(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; check_arg_count(1); @@ -2398,8 +2398,8 @@ st_collections_group_parts_part_source4(void) static void st_collections_group_parts_part_source5(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; check_arg_count(1); @@ -2425,8 +2425,8 @@ st_collections_group_parts_part_source5(void) static void st_collections_group_parts_part_source6(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; check_arg_count(1); @@ -2461,8 +2461,8 @@ st_collections_group_parts_part_source6(void) static void st_collections_group_parts_part_effect(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; check_arg_count(1); @@ -2505,8 +2505,8 @@ st_collections_group_parts_part_effect(void) static void st_collections_group_parts_part_entry_mode(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; check_arg_count(1); @@ -2539,8 +2539,8 @@ st_collections_group_parts_part_entry_mode(void) static void st_collections_group_parts_part_select_mode(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; check_arg_count(1); @@ -2566,8 +2566,8 @@ st_collections_group_parts_part_select_mode(void) static void st_collections_group_parts_part_multiline(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; check_arg_count(1); @@ -2616,8 +2616,8 @@ st_collections_group_parts_part_multiline(void) static void st_collections_group_parts_part_dragable_x(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; check_arg_count(3); @@ -2646,8 +2646,8 @@ st_collections_group_parts_part_dragable_x(void) static void st_collections_group_parts_part_dragable_y(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; check_arg_count(3); @@ -2673,8 +2673,8 @@ st_collections_group_parts_part_dragable_y(void) static void st_collections_group_parts_part_dragable_confine(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; check_arg_count(1); @@ -2703,8 +2703,8 @@ st_collections_group_parts_part_dragable_confine(void) static void st_collections_group_parts_part_dragable_events(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; check_arg_count(1); @@ -2754,8 +2754,8 @@ st_collections_group_parts_part_dragable_events(void) */ static void ob_collections_group_parts_part_box_items_item(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; Edje_Pack_Element *item; pc = eina_list_data_get(eina_list_last(edje_collections)); @@ -2810,8 +2810,8 @@ static void ob_collections_group_parts_part_box_items_item(void) */ static void st_collections_group_parts_part_box_items_item_type(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; Edje_Pack_Element *item; check_arg_count(1); @@ -2849,8 +2849,8 @@ static void st_collections_group_parts_part_box_items_item_type(void) */ static void st_collections_group_parts_part_box_items_item_name(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; Edje_Pack_Element *item; check_arg_count(1); @@ -2874,8 +2874,8 @@ static void st_collections_group_parts_part_box_items_item_name(void) */ static void st_collections_group_parts_part_box_items_item_source(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; Edje_Pack_Element *item; check_arg_count(1); @@ -2899,8 +2899,8 @@ static void st_collections_group_parts_part_box_items_item_source(void) */ static void st_collections_group_parts_part_box_items_item_min(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; Edje_Pack_Element *item; check_arg_count(2); @@ -2925,8 +2925,8 @@ static void st_collections_group_parts_part_box_items_item_min(void) */ static void st_collections_group_parts_part_box_items_item_prefer(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; Edje_Pack_Element *item; check_arg_count(2); @@ -2950,8 +2950,8 @@ static void st_collections_group_parts_part_box_items_item_prefer(void) */ static void st_collections_group_parts_part_box_items_item_max(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; Edje_Pack_Element *item; check_arg_count(2); @@ -2976,8 +2976,8 @@ static void st_collections_group_parts_part_box_items_item_max(void) */ static void st_collections_group_parts_part_box_items_item_padding(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; Edje_Pack_Element *item; check_arg_count(4); @@ -3004,8 +3004,8 @@ static void st_collections_group_parts_part_box_items_item_padding(void) */ static void st_collections_group_parts_part_box_items_item_align(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; Edje_Pack_Element *item; check_arg_count(2); @@ -3030,8 +3030,8 @@ static void st_collections_group_parts_part_box_items_item_align(void) */ static void st_collections_group_parts_part_box_items_item_weight(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; Edje_Pack_Element *item; check_arg_count(2); @@ -3056,8 +3056,8 @@ static void st_collections_group_parts_part_box_items_item_weight(void) */ static void st_collections_group_parts_part_box_items_item_aspect(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; Edje_Pack_Element *item; check_arg_count(2); @@ -3082,8 +3082,8 @@ static void st_collections_group_parts_part_box_items_item_aspect(void) */ static void st_collections_group_parts_part_box_items_item_aspect_mode(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; Edje_Pack_Element *item; check_arg_count(1); @@ -3113,8 +3113,8 @@ static void st_collections_group_parts_part_box_items_item_aspect_mode(void) */ static void st_collections_group_parts_part_box_items_item_options(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; Edje_Pack_Element *item; check_arg_count(1); @@ -3139,8 +3139,8 @@ static void st_collections_group_parts_part_box_items_item_options(void) */ static void st_collections_group_parts_part_table_items_item_position(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; Edje_Pack_Element *item; check_arg_count(2); @@ -3174,8 +3174,8 @@ static void st_collections_group_parts_part_table_items_item_position(void) */ static void st_collections_group_parts_part_table_items_item_span(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; Edje_Pack_Element *item; check_arg_count(2); @@ -3233,13 +3233,13 @@ static void st_collections_group_parts_part_table_items_item_span(void) static void ob_collections_group_parts_part_description(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; pc = eina_list_data_get(eina_list_last(edje_collections)); ep = eina_list_data_get(eina_list_last(pc->parts)); - ed = mem_alloc(SZ(Edje_Part_Description)); + ed = mem_alloc(SZ(Old_Edje_Part_Description)); if (!ep->default_desc) ep->default_desc = ed; else @@ -3338,9 +3338,9 @@ ob_collections_group_parts_part_description(void) static void st_collections_group_parts_part_description_inherit(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed, *parent = NULL; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed, *parent = NULL; Eina_List *l; Edje_Part_Image_Id *iid; char *parent_name; @@ -3380,7 +3380,7 @@ st_collections_group_parts_part_description_inherit(void) else { double min_dst = 999.0; - Edje_Part_Description *d; + Old_Edje_Part_Description *d; if (!strcmp(parent_name, "default")) { @@ -3486,9 +3486,9 @@ st_collections_group_parts_part_description_inherit(void) static void st_collections_group_parts_part_description_state(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; char *s; check_arg_count(2); @@ -3525,9 +3525,9 @@ st_collections_group_parts_part_description_state(void) static void st_collections_group_parts_part_description_visible(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -3553,9 +3553,9 @@ st_collections_group_parts_part_description_visible(void) static void st_collections_group_parts_part_description_align(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(2); @@ -3584,9 +3584,9 @@ st_collections_group_parts_part_description_align(void) static void st_collections_group_parts_part_description_fixed(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(2); @@ -3611,9 +3611,9 @@ st_collections_group_parts_part_description_fixed(void) static void st_collections_group_parts_part_description_min(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(2); @@ -3638,9 +3638,9 @@ st_collections_group_parts_part_description_min(void) static void st_collections_group_parts_part_description_max(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(2); @@ -3667,9 +3667,9 @@ st_collections_group_parts_part_description_max(void) static void st_collections_group_parts_part_description_step(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(2); @@ -3698,9 +3698,9 @@ st_collections_group_parts_part_description_step(void) static void st_collections_group_parts_part_description_aspect(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(2); @@ -3726,9 +3726,9 @@ st_collections_group_parts_part_description_aspect(void) static void st_collections_group_parts_part_description_aspect_preference(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -3759,9 +3759,9 @@ st_collections_group_parts_part_description_aspect_preference(void) static void st_collections_group_parts_part_description_color_class(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -3785,9 +3785,9 @@ st_collections_group_parts_part_description_color_class(void) static void st_collections_group_parts_part_description_color(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(4); @@ -3814,9 +3814,9 @@ st_collections_group_parts_part_description_color(void) static void st_collections_group_parts_part_description_color2(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(4); @@ -3843,9 +3843,9 @@ st_collections_group_parts_part_description_color2(void) static void st_collections_group_parts_part_description_color3(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(4); @@ -3896,9 +3896,9 @@ st_collections_group_parts_part_description_color3(void) static void st_collections_group_parts_part_description_rel1_relative(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(2); @@ -3923,9 +3923,9 @@ st_collections_group_parts_part_description_rel1_relative(void) static void st_collections_group_parts_part_description_rel1_offset(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(2); @@ -3951,9 +3951,9 @@ st_collections_group_parts_part_description_rel1_offset(void) static void st_collections_group_parts_part_description_rel1_to(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -3985,9 +3985,9 @@ st_collections_group_parts_part_description_rel1_to(void) static void st_collections_group_parts_part_description_rel1_to_x(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -4019,9 +4019,9 @@ st_collections_group_parts_part_description_rel1_to_x(void) static void st_collections_group_parts_part_description_rel1_to_y(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -4041,9 +4041,9 @@ st_collections_group_parts_part_description_rel1_to_y(void) static void st_collections_group_parts_part_description_rel2_relative(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(2); @@ -4058,9 +4058,9 @@ st_collections_group_parts_part_description_rel2_relative(void) static void st_collections_group_parts_part_description_rel2_offset(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(2); @@ -4075,9 +4075,9 @@ st_collections_group_parts_part_description_rel2_offset(void) static void st_collections_group_parts_part_description_rel2_to(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -4098,9 +4098,9 @@ st_collections_group_parts_part_description_rel2_to(void) static void st_collections_group_parts_part_description_rel2_to_x(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -4120,9 +4120,9 @@ st_collections_group_parts_part_description_rel2_to_x(void) static void st_collections_group_parts_part_description_rel2_to_y(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -4176,9 +4176,9 @@ st_collections_group_parts_part_description_rel2_to_y(void) static void st_collections_group_parts_part_description_image_normal(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -4219,9 +4219,9 @@ st_collections_group_parts_part_description_image_normal(void) static void st_collections_group_parts_part_description_image_tween(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -4265,9 +4265,9 @@ st_collections_group_parts_part_description_image_tween(void) static void st_collections_group_parts_part_description_image_border(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(4); @@ -4305,9 +4305,9 @@ st_collections_group_parts_part_description_image_border(void) static void st_collections_group_parts_part_description_image_middle(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -4347,9 +4347,9 @@ st_collections_group_parts_part_description_image_middle(void) static void st_collections_group_parts_part_description_image_border_scale(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -4386,9 +4386,9 @@ st_collections_group_parts_part_description_image_border_scale(void) static void st_collections_group_parts_part_description_image_scale_hint(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -4450,9 +4450,9 @@ st_collections_group_parts_part_description_image_scale_hint(void) static void st_collections_group_parts_part_description_fill_smooth(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -4486,9 +4486,9 @@ st_collections_group_parts_part_description_fill_smooth(void) static void st_collections_group_parts_part_description_fill_spread(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -4523,9 +4523,9 @@ st_collections_group_parts_part_description_fill_spread(void) static void st_collections_group_parts_part_description_fill_type(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -4582,9 +4582,9 @@ st_collections_group_parts_part_description_fill_type(void) static void st_collections_group_parts_part_description_fill_origin_relative(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(2); @@ -4618,9 +4618,9 @@ st_collections_group_parts_part_description_fill_origin_relative(void) static void st_collections_group_parts_part_description_fill_origin_offset(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(2); @@ -4677,9 +4677,9 @@ st_collections_group_parts_part_description_fill_origin_offset(void) static void st_collections_group_parts_part_description_fill_size_relative(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(2); @@ -4713,9 +4713,9 @@ st_collections_group_parts_part_description_fill_size_relative(void) static void st_collections_group_parts_part_description_fill_size_offset(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(2); @@ -4782,9 +4782,9 @@ st_collections_group_parts_part_description_fill_size_offset(void) static void st_collections_group_parts_part_description_text_text(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; char *str = NULL; int i; @@ -4834,9 +4834,9 @@ st_collections_group_parts_part_description_text_text(void) static void st_collections_group_parts_part_description_text_text_class(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -4872,9 +4872,9 @@ st_collections_group_parts_part_description_text_text_class(void) static void st_collections_group_parts_part_description_text_font(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -4909,9 +4909,9 @@ st_collections_group_parts_part_description_text_font(void) static void st_collections_group_parts_part_description_text_style(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -4947,9 +4947,9 @@ st_collections_group_parts_part_description_text_style(void) static void st_collections_group_parts_part_description_text_repch(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -4984,9 +4984,9 @@ st_collections_group_parts_part_description_text_repch(void) static void st_collections_group_parts_part_description_text_size(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -5021,9 +5021,9 @@ st_collections_group_parts_part_description_text_size(void) static void st_collections_group_parts_part_description_text_fit(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(2); @@ -5060,9 +5060,9 @@ st_collections_group_parts_part_description_text_fit(void) static void st_collections_group_parts_part_description_text_min(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(2); @@ -5100,9 +5100,9 @@ st_collections_group_parts_part_description_text_min(void) static void st_collections_group_parts_part_description_text_max(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(2); @@ -5139,9 +5139,9 @@ st_collections_group_parts_part_description_text_max(void) static void st_collections_group_parts_part_description_text_align(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(2); @@ -5177,9 +5177,9 @@ st_collections_group_parts_part_description_text_align(void) static void st_collections_group_parts_part_description_text_source(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -5221,9 +5221,9 @@ st_collections_group_parts_part_description_text_source(void) static void st_collections_group_parts_part_description_text_text_source(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -5266,9 +5266,9 @@ st_collections_group_parts_part_description_text_text_source(void) static void st_collections_group_parts_part_description_text_elipsis(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -5367,9 +5367,9 @@ st_collections_group_parts_part_description_text_elipsis(void) */ static void st_collections_group_parts_part_description_box_layout(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_min_arg_count(1); @@ -5393,9 +5393,9 @@ static void st_collections_group_parts_part_description_box_layout(void) static void st_collections_group_parts_part_description_box_align(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(2); @@ -5418,9 +5418,9 @@ static void st_collections_group_parts_part_description_box_align(void) static void st_collections_group_parts_part_description_box_padding(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(2); @@ -5444,9 +5444,9 @@ static void st_collections_group_parts_part_description_box_padding(void) static void st_collections_group_parts_part_description_box_min(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(2); @@ -5525,9 +5525,9 @@ st_collections_group_parts_part_description_box_min(void) */ static void st_collections_group_parts_part_description_table_homogeneous(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_min_arg_count(1); @@ -5553,9 +5553,9 @@ static void st_collections_group_parts_part_description_table_homogeneous(void) static void st_collections_group_parts_part_description_table_align(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(2); @@ -5578,9 +5578,9 @@ static void st_collections_group_parts_part_description_table_align(void) static void st_collections_group_parts_part_description_table_padding(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(2); @@ -5649,9 +5649,9 @@ static void st_collections_group_parts_part_description_table_padding(void) static void st_collections_group_parts_part_description_map_perspective(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -5691,9 +5691,9 @@ st_collections_group_parts_part_description_map_perspective(void) static void st_collections_group_parts_part_description_map_light(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -5724,9 +5724,9 @@ st_collections_group_parts_part_description_map_light(void) static void st_collections_group_parts_part_description_map_on(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -5754,9 +5754,9 @@ st_collections_group_parts_part_description_map_on(void) static void st_collections_group_parts_part_description_map_smooth(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -5781,9 +5781,9 @@ st_collections_group_parts_part_description_map_smooth(void) static void st_collections_group_parts_part_description_map_alpha(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -5810,9 +5810,9 @@ st_collections_group_parts_part_description_map_alpha(void) static void st_collections_group_parts_part_description_map_backface_cull(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -5840,9 +5840,9 @@ st_collections_group_parts_part_description_map_backface_cull(void) static void st_collections_group_parts_part_description_map_perspective_on(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -5887,9 +5887,9 @@ st_collections_group_parts_part_description_map_perspective_on(void) static void st_collections_group_parts_part_description_map_rotation_center(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -5921,9 +5921,9 @@ st_collections_group_parts_part_description_map_rotation_center(void) static void st_collections_group_parts_part_description_map_rotation_x(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -5949,9 +5949,9 @@ st_collections_group_parts_part_description_map_rotation_x(void) static void st_collections_group_parts_part_description_map_rotation_y(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -5977,9 +5977,9 @@ st_collections_group_parts_part_description_map_rotation_y(void) static void st_collections_group_parts_part_description_map_rotation_z(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -6021,9 +6021,9 @@ st_collections_group_parts_part_description_map_rotation_z(void) static void st_collections_group_parts_part_description_perspective_zplane(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -6050,9 +6050,9 @@ st_collections_group_parts_part_description_perspective_zplane(void) static void st_collections_group_parts_part_description_perspective_focal(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; check_arg_count(1); @@ -6093,9 +6093,9 @@ st_collections_group_parts_part_description_perspective_focal(void) static void _st_collections_group_parts_part_description_params(Edje_External_Param_Type type) { - Edje_Part_Collection *pc; - Edje_Part *ep; - Edje_Part_Description *ed; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; + Old_Edje_Part_Description *ed; Edje_External_Param *param; Eina_List *l; const char *name; @@ -6283,7 +6283,7 @@ st_collections_group_parts_part_description_params_choice(void) static void ob_collections_group_programs_program(void) { - Edje_Part_Collection *pc; + Old_Edje_Part_Collection *pc; Edje_Program *ep; pc = eina_list_data_get(eina_list_last(edje_collections)); @@ -6307,7 +6307,7 @@ ob_collections_group_programs_program(void) static void st_collections_group_programs_program_name(void) { - Edje_Part_Collection *pc; + Old_Edje_Part_Collection *pc; Edje_Program *ep; check_arg_count(1); @@ -6348,7 +6348,7 @@ st_collections_group_programs_program_name(void) static void st_collections_group_programs_program_signal(void) { - Edje_Part_Collection *pc; + Old_Edje_Part_Collection *pc; Edje_Program *ep; check_arg_count(1); @@ -6373,7 +6373,7 @@ st_collections_group_programs_program_signal(void) static void st_collections_group_programs_program_source(void) { - Edje_Part_Collection *pc; + Old_Edje_Part_Collection *pc; Edje_Program *ep; check_arg_count(1); @@ -6398,7 +6398,7 @@ st_collections_group_programs_program_source(void) static void st_collections_group_programs_program_filter(void) { - Edje_Part_Collection *pc; + Old_Edje_Part_Collection *pc; Edje_Program *ep; check_min_arg_count(1); @@ -6428,7 +6428,7 @@ st_collections_group_programs_program_filter(void) static void st_collections_group_programs_program_in(void) { - Edje_Part_Collection *pc; + Old_Edje_Part_Collection *pc; Edje_Program *ep; check_arg_count(2); @@ -6465,7 +6465,7 @@ st_collections_group_programs_program_in(void) static void st_collections_group_programs_program_action(void) { - Edje_Part_Collection *pc; + Old_Edje_Part_Collection *pc; Edje_Program *ep; pc = eina_list_data_get(eina_list_last(edje_collections)); @@ -6580,7 +6580,7 @@ st_collections_group_programs_program_action(void) static void st_collections_group_programs_program_transition(void) { - Edje_Part_Collection *pc; + Old_Edje_Part_Collection *pc; Edje_Program *ep; check_arg_count(2); @@ -6611,7 +6611,7 @@ st_collections_group_programs_program_transition(void) static void st_collections_group_programs_program_target(void) { - Edje_Part_Collection *pc; + Old_Edje_Part_Collection *pc; Edje_Program *ep; check_arg_count(1); @@ -6664,7 +6664,7 @@ st_collections_group_programs_program_target(void) static void st_collections_group_programs_program_after(void) { - Edje_Part_Collection *pc; + Old_Edje_Part_Collection *pc; Edje_Program *ep; check_arg_count(1); @@ -6702,7 +6702,7 @@ st_collections_group_programs_program_after(void) static void st_collections_group_programs_program_api(void) { - Edje_Part_Collection *pc; + Old_Edje_Part_Collection *pc; Edje_Program *ep; check_min_arg_count(1); @@ -6721,8 +6721,8 @@ st_collections_group_programs_program_api(void) static void st_collections_group_parts_part_api(void) { - Edje_Part_Collection *pc; - Edje_Part *ep; + Old_Edje_Part_Collection *pc; + Old_Edje_Part *ep; check_min_arg_count(1); @@ -6739,7 +6739,7 @@ st_collections_group_parts_part_api(void) static void ob_collections_group_programs_program_script(void) { - Edje_Part_Collection *pc; + Old_Edje_Part_Collection *pc; Edje_Program *ep; Code *cd; @@ -6779,7 +6779,7 @@ ob_collections_group_programs_program_script(void) static void ob_collections_group_programs_program_lua_script(void) { - Edje_Part_Collection *pc; + Old_Edje_Part_Collection *pc; Edje_Program *ep; Code *cd; diff --git a/legacy/edje/src/bin/edje_cc_out.c b/legacy/edje/src/bin/edje_cc_out.c index dcd90ac68e..a46ed50e25 100644 --- a/legacy/edje/src/bin/edje_cc_out.c +++ b/legacy/edje/src/bin/edje_cc_out.c @@ -52,14 +52,14 @@ struct _External_Lookup struct _Part_Lookup { - Edje_Part_Collection *pc; + Old_Edje_Part_Collection *pc; char *name; int *dest; }; struct _Program_Lookup { - Edje_Part_Collection *pc; + Old_Edje_Part_Collection *pc; char *name; int *dest; }; @@ -96,7 +96,7 @@ struct _Code_Lookup Eina_Bool set; }; -static void data_process_string(Edje_Part_Collection *pc, const char *prefix, char *s, void (*func)(Edje_Part_Collection *pc, char *name, char *ptr, int len)); +static void data_process_string(Old_Edje_Part_Collection *pc, const char *prefix, char *s, void (*func)(Old_Edje_Part_Collection *pc, char *name, char *ptr, int len)); Old_Edje_File *edje_file = NULL; Eina_List *edje_collections = NULL; @@ -160,8 +160,8 @@ data_setup(void) } static void -check_image_part_desc (Edje_Part_Collection *pc, Edje_Part *ep, - Edje_Part_Description *epd, Eet_File *ef) +check_image_part_desc (Old_Edje_Part_Collection *pc, Old_Edje_Part *ep, + Old_Edje_Part_Description *epd, Eet_File *ef) { Eina_List *l; Edje_Part_Image_Id *iid; @@ -182,7 +182,7 @@ check_image_part_desc (Edje_Part_Collection *pc, Edje_Part *ep, } static void -check_packed_items(Edje_Part_Collection *pc, Edje_Part *ep, Eet_File *ef) +check_packed_items(Old_Edje_Part_Collection *pc, Old_Edje_Part *ep, Eet_File *ef) { Eina_List *l; Edje_Pack_Element *it; @@ -201,11 +201,11 @@ check_packed_items(Edje_Part_Collection *pc, Edje_Part *ep, Eet_File *ef) } static void -check_part (Edje_Part_Collection *pc, Edje_Part *ep, Eet_File *ef) +check_part (Old_Edje_Part_Collection *pc, Old_Edje_Part *ep, Eet_File *ef) { - Edje_Part_Description *epd = ep->default_desc; + Old_Edje_Part_Description *epd = ep->default_desc; Eina_List *l; - Edje_Part_Description *data; + Old_Edje_Part_Description *data; /* FIXME: check image set and sort them. */ if (!epd) @@ -225,7 +225,7 @@ check_part (Edje_Part_Collection *pc, Edje_Part *ep, Eet_File *ef) } static void -check_program (Edje_Part_Collection *pc, Edje_Program *ep, Eet_File *ef) +check_program (Old_Edje_Part_Collection *pc, Edje_Program *ep, Eet_File *ef) { switch (ep->action) { @@ -649,13 +649,13 @@ static void check_groups(Eet_File *ef) { Eina_List *l; - Edje_Part_Collection *pc; + Old_Edje_Part_Collection *pc; /* sanity checks for parts and programs */ EINA_LIST_FOREACH(edje_collections, l, pc) { Eina_List *ll; - Edje_Part *part; + Old_Edje_Part *part; Edje_Program *prog; EINA_LIST_FOREACH(pc->parts, ll, part) @@ -669,7 +669,7 @@ static int data_write_groups(Eet_File *ef, int *collection_num) { Eina_List *l; - Edje_Part_Collection *pc; + Old_Edje_Part_Collection *pc; int bytes = 0; int total_bytes = 0; @@ -1111,7 +1111,7 @@ data_queue_group_lookup(char *name) } void -data_queue_part_lookup(Edje_Part_Collection *pc, char *name, int *dest) +data_queue_part_lookup(Old_Edje_Part_Collection *pc, char *name, int *dest) { Part_Lookup *pl; @@ -1123,7 +1123,7 @@ data_queue_part_lookup(Edje_Part_Collection *pc, char *name, int *dest) } void -data_queue_program_lookup(Edje_Part_Collection *pc, char *name, int *dest) +data_queue_program_lookup(Old_Edje_Part_Collection *pc, char *name, int *dest) { Program_Lookup *pl; @@ -1187,7 +1187,7 @@ data_process_lookups(void) while (part_lookups) { Part_Lookup *pl; - Edje_Part *ep; + Old_Edje_Part *ep; pl = eina_list_data_get(part_lookups); @@ -1329,7 +1329,7 @@ data_process_lookups(void) } static void -data_process_string(Edje_Part_Collection *pc, const char *prefix, char *s, void (*func)(Edje_Part_Collection *pc, char *name, char* ptr, int len)) +data_process_string(Old_Edje_Part_Collection *pc, const char *prefix, char *s, void (*func)(Old_Edje_Part_Collection *pc, char *name, char* ptr, int len)) { char *p; char *key; @@ -1440,7 +1440,7 @@ data_process_string(Edje_Part_Collection *pc, const char *prefix, char *s, void } static void -_data_queue_part_lookup(Edje_Part_Collection *pc, char *name, char *ptr, int len) +_data_queue_part_lookup(Old_Edje_Part_Collection *pc, char *name, char *ptr, int len) { Code_Lookup *cl; cl = mem_alloc(SZ(Code_Lookup)); @@ -1452,7 +1452,7 @@ _data_queue_part_lookup(Edje_Part_Collection *pc, char *name, char *ptr, int len code_lookups = eina_list_append(code_lookups, cl); } static void -_data_queue_program_lookup(Edje_Part_Collection *pc, char *name, char *ptr, int len) +_data_queue_program_lookup(Old_Edje_Part_Collection *pc, char *name, char *ptr, int len) { Code_Lookup *cl; @@ -1465,12 +1465,12 @@ _data_queue_program_lookup(Edje_Part_Collection *pc, char *name, char *ptr, int code_lookups = eina_list_append(code_lookups, cl); } static void -_data_queue_group_lookup(Edje_Part_Collection *pc __UNUSED__, char *name, char *ptr __UNUSED__, int len __UNUSED__) +_data_queue_group_lookup(Old_Edje_Part_Collection *pc __UNUSED__, char *name, char *ptr __UNUSED__, int len __UNUSED__) { - data_queue_group_lookup(name); + data_queue_group_lookup(name); } static void -_data_queue_image_pc_lookup(Edje_Part_Collection *pc __UNUSED__, char *name, char *ptr, int len) +_data_queue_image_pc_lookup(Old_Edje_Part_Collection *pc __UNUSED__, char *name, char *ptr, int len) { Code_Lookup *cl; @@ -1491,7 +1491,7 @@ data_process_scripts(void) for (l = codes, l2 = edje_collections; (l) && (l2); l = eina_list_next(l), l2 = eina_list_next(l2)) { Code *cd; - Edje_Part_Collection *pc; + Old_Edje_Part_Collection *pc; cd = eina_list_data_get(l); pc = eina_list_data_get(l2); diff --git a/legacy/edje/src/lib/edje_cache.c b/legacy/edje/src/lib/edje_cache.c index fcb7c5b6e5..36b0310429 100644 --- a/legacy/edje/src/lib/edje_cache.c +++ b/legacy/edje/src/lib/edje_cache.c @@ -70,7 +70,6 @@ _edje_file_coll_open(Edje_File *edf, const char *coll) void *data; ce = eina_hash_find(edf->collection, coll); - if (!ce) return NULL; if (ce->ref) @@ -98,13 +97,20 @@ _edje_file_coll_open(Edje_File *edf, const char *coll) oedc = eet_data_read(edf->ef, _edje_edd_edje_part_collection, buf); if (!oedc) return NULL; + oedc->part = ce->entry; + + edc = _edje_collection_convert(edf, oedc); + oedc = NULL; + + edc->references = 1; + snprintf(buf, sizeof(buf), "scripts/%i", id); data = eet_read(edf->ef, buf, &size); if (data) { - oedc->script = embryo_program_new(data, size); - _edje_embryo_script_init(oedc); + edc->script = embryo_program_new(data, size); + _edje_embryo_script_init(edc); free(data); } @@ -114,12 +120,12 @@ _edje_file_coll_open(Edje_File *edf, const char *coll) if (data) { #ifdef LUA2 - _edje_lua2_script_load(oedc, data, size); -#else + _edje_lua2_script_load(edc, data, size); +#else int err_code; //printf("lua chunk size: %d\n", size); - _edje_lua_new_reg(_edje_lua_state_get(), -1, oedc); // gets freed in 'edje_load::_edje_collectoin_free' + _edje_lua_new_reg(_edje_lua_state_get(), -1, edc); // gets freed in 'edje_load::_edje_collectoin_free' if ((err_code = luaL_loadbuffer(_edje_lua_state_get(), data, size, "edje_lua_script"))) { @@ -130,15 +136,10 @@ _edje_file_coll_open(Edje_File *edf, const char *coll) } if (lua_pcall(_edje_lua_state_get(), 0, 0, 0)) ERR("lua call error: %s", lua_tostring(_edje_lua_state_get(), -1)); -#endif +#endif free(data); } - oedc->part = ce->entry; - oedc->references = 1; - - edc = _edje_collection_convert(edf, oedc); - return edc; } @@ -300,17 +301,28 @@ _edje_cache_file_coll_open(const char *file, const char *coll, int *error_ret, E { if (!edc->checked) { - EINA_LIST_FOREACH(edc->parts, l, ep) + unsigned int j; + + for (j = 0; j < edc->parts_count; ++j) { Edje_Part *ep2; + ep = edc->parts[j]; + /* Register any color classes in this parts descriptions. */ hist = NULL; hist = eina_list_append(hist, ep); ep2 = ep; while (ep2->dragable.confine_id >= 0) { - ep2 = eina_list_nth(edc->parts, ep2->dragable.confine_id); + if (ep2->dragable.confine_id >= (int) edc->parts_count) + { + ERR("confine_to above limit. invalidating it."); + ep2->dragable.confine_id = -1; + break; + } + + ep2 = edc->parts[ep2->dragable.confine_id]; if (eina_list_data_find(hist, ep2)) { ERR("confine_to loops. invalidating loop."); @@ -327,9 +339,15 @@ _edje_cache_file_coll_open(const char *file, const char *coll, int *error_ret, E { Edje_Part* prev; + if (ep2->dragable.event_id >= (int) edc->parts_count) + { + ERR("event_id above limit. invalidating it."); + ep2->dragable.event_id = -1; + break; + } prev = ep2; - ep2 = eina_list_nth(edc->parts, ep2->dragable.event_id); + ep2 = edc->parts[ep2->dragable.event_id]; if (!ep2->dragable.x && !ep2->dragable.y) { prev->dragable.event_id = -1; @@ -350,7 +368,14 @@ _edje_cache_file_coll_open(const char *file, const char *coll, int *error_ret, E ep2 = ep; while (ep2->clip_to_id >= 0) { - ep2 = eina_list_nth(edc->parts, ep2->clip_to_id); + if (ep2->clip_to_id >= (int) edc->parts_count) + { + ERR("clip_to_id above limit. invalidating it."); + ep2->clip_to_id = -1; + break; + } + + ep2 = edc->parts[ep2->clip_to_id]; if (eina_list_data_find(hist, ep2)) { ERR("clip_to loops. invalidating loop."); @@ -378,11 +403,15 @@ _edje_cache_coll_clean(Edje_File *edf) count = eina_list_count(edf->collection_cache); while ((edf->collection_cache) && (count > _edje_collection_cache_size)) { + Edje_Part_Collection_Directory_Entry *ce; Edje_Part_Collection *edc; edc = eina_list_data_get(eina_list_last(edf->collection_cache)); edf->collection_cache = eina_list_remove_list(edf->collection_cache, eina_list_last(edf->collection_cache)); - _edje_collection_free(edf, edc); + + ce = eina_hash_find(edf->collection, edc->part); + _edje_collection_free(edf, edc, ce); + count = eina_list_count(edf->collection_cache); } } @@ -392,11 +421,14 @@ _edje_cache_coll_flush(Edje_File *edf) { while (edf->collection_cache) { + Edje_Part_Collection_Directory_Entry *ce; Edje_Part_Collection *edc; edc = eina_list_data_get(eina_list_last(edf->collection_cache)); edf->collection_cache = eina_list_remove_list(edf->collection_cache, eina_list_last(edf->collection_cache)); - _edje_collection_free(edf, edc); + + ce = eina_hash_find(edf->collection, edc->part); + _edje_collection_free(edf, edc, ce); } } diff --git a/legacy/edje/src/lib/edje_calc.c b/legacy/edje/src/lib/edje_calc.c index 27b9efc98c..985da10423 100644 --- a/legacy/edje/src/lib/edje_calc.c +++ b/legacy/edje/src/lib/edje_calc.c @@ -12,7 +12,11 @@ #define FLAG_Y 0x02 #define FLAG_XY (FLAG_X | FLAG_Y) -static void _edje_part_recalc_single(Edje *ed, Edje_Real_Part *ep, Edje_Part_Description *desc, Edje_Part_Description *chosen_desc, Edje_Real_Part *rel1_to_x, Edje_Real_Part *rel1_to_y, Edje_Real_Part *rel2_to_x, Edje_Real_Part *rel2_to_y, Edje_Real_Part *confine_to, Edje_Calc_Params *params, int flags); +static void _edje_part_recalc_single(Edje *ed, Edje_Real_Part *ep, + Edje_Part_Description_Common *desc, Edje_Part_Description_Common *chosen_desc, + Edje_Real_Part *rel1_to_x, Edje_Real_Part *rel1_to_y, + Edje_Real_Part *rel2_to_x, Edje_Real_Part *rel2_to_y, + Edje_Real_Part *confine_to, Edje_Calc_Params *params, int flags); static void _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags); void @@ -63,15 +67,15 @@ _edje_part_pos_set(Edje *ed, Edje_Real_Part *ep, int mode, FLOAT_T pos) #endif } -Edje_Part_Description * +Edje_Part_Description_Common * _edje_part_description_find(Edje *ed __UNUSED__, Edje_Real_Part *rp, const char *name, double val) { Edje_Part *ep = rp->part; - Edje_Part_Description *ret = NULL; - Edje_Part_Description *d; - Eina_List *l; + Edje_Part_Description_Common *ret = NULL; + Edje_Part_Description_Common *d; double min_dst = 99999.0; + unsigned int i; if (!strcmp(name, "default") && val == 0.0) return ep->default_desc; @@ -82,15 +86,17 @@ _edje_part_description_find(Edje *ed __UNUSED__, Edje_Real_Part *rp, const char if (!strcmp(name, "default")) { ret = ep->default_desc; - min_dst = ABS(ep->default_desc->common.state.value - val); + min_dst = ABS(ep->default_desc->state.value - val); } - EINA_LIST_FOREACH(ep->other_desc, l, d) + for (i = 0; i < ep->other_count; ++i) { - if (!strcmp(d->common.state.name, name)) + d = ep->other_desc[i]; + + if (!strcmp(d->state.name, name)) { double dst; - dst = ABS(d->common.state.value - val); + dst = ABS(d->state.value - val); if (dst < min_dst) { ret = d; @@ -105,9 +111,11 @@ _edje_part_description_find(Edje *ed __UNUSED__, Edje_Real_Part *rp, const char void _edje_part_description_apply(Edje *ed, Edje_Real_Part *ep, const char *d1, double v1, const char *d2, double v2) { - Edje_Part_Description *epd1; - Edje_Part_Description *epd2 = NULL; - Edje_Part_Description *chosen_desc; + Edje_Part_Description_Common *epd1; + Edje_Part_Description_Common *epd2 = NULL; + Edje_Part_Description_Common *chosen_desc; + + Edje_Part_Description_Image *epdi; if (!d1) d1 = "default"; @@ -118,8 +126,10 @@ _edje_part_description_apply(Edje *ed, Edje_Real_Part *ep, const char *d1, doubl if (d2) epd2 = _edje_part_description_find(ed, ep, d2, v2); + epdi = (Edje_Part_Description_Image*) epd2; + /* There is an animation if both description are different or if description is an image with tweens */ - if (epd2 != NULL && (epd1 != epd2 || (ep->part->type == EDJE_PART_TYPE_IMAGE && epd2->image.tween_list))) + if (epd2 != NULL && (epd1 != epd2 || (ep->part->type == EDJE_PART_TYPE_IMAGE && epdi->image.tween_list))) { if (!ep->param2) { @@ -148,20 +158,24 @@ _edje_part_description_apply(Edje *ed, Edje_Real_Part *ep, const char *d1, doubl ep->param1.rel1_to_x = ep->param1.rel1_to_y = NULL; ep->param1.rel2_to_x = ep->param1.rel2_to_y = NULL; - if (ep->param1.description->common.rel1.id_x >= 0) - ep->param1.rel1_to_x = ed->table_parts[ep->param1.description->common.rel1.id_x % ed->table_parts_size]; - if (ep->param1.description->common.rel1.id_y >= 0) - ep->param1.rel1_to_y = ed->table_parts[ep->param1.description->common.rel1.id_y % ed->table_parts_size]; - if (ep->param1.description->common.rel2.id_x >= 0) - ep->param1.rel2_to_x = ed->table_parts[ep->param1.description->common.rel2.id_x % ed->table_parts_size]; - if (ep->param1.description->common.rel2.id_y >= 0) - ep->param1.rel2_to_y = ed->table_parts[ep->param1.description->common.rel2.id_y % ed->table_parts_size]; + if (ep->param1.description->rel1.id_x >= 0) + ep->param1.rel1_to_x = ed->table_parts[ep->param1.description->rel1.id_x % ed->table_parts_size]; + if (ep->param1.description->rel1.id_y >= 0) + ep->param1.rel1_to_y = ed->table_parts[ep->param1.description->rel1.id_y % ed->table_parts_size]; + if (ep->param1.description->rel2.id_x >= 0) + ep->param1.rel2_to_x = ed->table_parts[ep->param1.description->rel2.id_x % ed->table_parts_size]; + if (ep->param1.description->rel2.id_y >= 0) + ep->param1.rel2_to_y = ed->table_parts[ep->param1.description->rel2.id_y % ed->table_parts_size]; if (ep->part->type == EDJE_PART_TYPE_EXTERNAL) { + Edje_Part_Description_External *external; + + external = (Edje_Part_Description_External*) ep->param1.description; + if (ep->param1.external_params) _edje_external_parsed_params_free(ep->swallowed_object, ep->param1.external_params); - ep->param1.external_params = _edje_external_params_parse(ep->swallowed_object, ep->param1.description->external_params); + ep->param1.external_params = _edje_external_params_parse(ep->swallowed_object, external->external_params); } if (ep->param2) @@ -173,17 +187,25 @@ _edje_part_description_apply(Edje *ed, Edje_Real_Part *ep, const char *d1, doubl if (ep->param2->description) { - if (ep->param2->description->common.rel1.id_x >= 0) - ep->param2->rel1_to_x = ed->table_parts[ep->param2->description->common.rel1.id_x % ed->table_parts_size]; - if (ep->param2->description->common.rel1.id_y >= 0) - ep->param2->rel1_to_y = ed->table_parts[ep->param2->description->common.rel1.id_y % ed->table_parts_size]; - if (ep->param2->description->common.rel2.id_x >= 0) - ep->param2->rel2_to_x = ed->table_parts[ep->param2->description->common.rel2.id_x % ed->table_parts_size]; - if (ep->param2->description->common.rel2.id_y >= 0) - ep->param2->rel2_to_y = ed->table_parts[ep->param2->description->common.rel2.id_y % ed->table_parts_size]; + if (ep->param2->description->rel1.id_x >= 0) + ep->param2->rel1_to_x = ed->table_parts[ep->param2->description->rel1.id_x % ed->table_parts_size]; + if (ep->param2->description->rel1.id_y >= 0) + ep->param2->rel1_to_y = ed->table_parts[ep->param2->description->rel1.id_y % ed->table_parts_size]; + if (ep->param2->description->rel2.id_x >= 0) + ep->param2->rel2_to_x = ed->table_parts[ep->param2->description->rel2.id_x % ed->table_parts_size]; + if (ep->param2->description->rel2.id_y >= 0) + ep->param2->rel2_to_y = ed->table_parts[ep->param2->description->rel2.id_y % ed->table_parts_size]; if (ep->part->type == EDJE_PART_TYPE_EXTERNAL) - ep->param2->external_params = _edje_external_params_parse(ep->swallowed_object, ep->param2->description->external_params); + { + Edje_Part_Description_External *external; + + external = (Edje_Part_Description_External*) ep->param2->description; + + if (ep->param2->external_params) + _edje_external_parsed_params_free(ep->swallowed_object, ep->param2->external_params); + ep->param2->external_params = _edje_external_params_parse(ep->swallowed_object, external->external_params); + } } if (ep->description_pos != 0.0) @@ -644,7 +666,7 @@ static void _edje_part_recalc_single_textblock(FLOAT_T sc, Edje *ed, Edje_Real_Part *ep, - Edje_Part_Description *chosen_desc, + Edje_Part_Description_Text *chosen_desc, Edje_Calc_Params *params, int *minw, int *minh, int *maxw, int *maxh) @@ -660,8 +682,8 @@ _edje_part_recalc_single_textblock(FLOAT_T sc, if (chosen_desc->text.id_source >= 0) { ep->text.source = ed->table_parts[chosen_desc->text.id_source % ed->table_parts_size]; - if (ep->text.source->chosen_description->text.style) - style = ep->text.source->chosen_description->text.style; + if (((Edje_Part_Description_Text *)ep->text.source->chosen_description)->text.style) + style = ((Edje_Part_Description_Text *)ep->text.source->chosen_description)->text.style; } else { @@ -673,7 +695,7 @@ _edje_part_recalc_single_textblock(FLOAT_T sc, if (chosen_desc->text.id_text_source >= 0) { ep->text.text_source = ed->table_parts[chosen_desc->text.id_text_source % ed->table_parts_size]; - text = ep->text.text_source->chosen_description->text.text; + text = ((Edje_Part_Description_Text*)ep->text.text_source->chosen_description)->text.text; if (ep->text.text_source->text.text) text = ep->text.text_source->text.text; } else @@ -767,8 +789,8 @@ static void _edje_part_recalc_single_text(FLOAT_T sc, Edje *ed, Edje_Real_Part *ep, - Edje_Part_Description *desc, - Edje_Part_Description *chosen_desc, + Edje_Part_Description_Text *desc, + Edje_Part_Description_Text *chosen_desc, Edje_Calc_Params *params, int *minw, int *minh, int *maxw, int *maxh) @@ -797,12 +819,12 @@ _edje_part_recalc_single_text(FLOAT_T sc, ep->text.text_source = NULL; if (ep->text.text_source) - text = ep->text.text_source->chosen_description->text.text; + text = ((Edje_Part_Description_Text*)ep->text.text_source->chosen_description)->text.text; else text = chosen_desc->text.text; if (ep->text.source) - font = _edje_text_class_font_get(ed, ep->text.source->chosen_description, &size, &sfont); + font = _edje_text_class_font_get(ed, ((Edje_Part_Description_Text*)ep->text.source->chosen_description), &size, &sfont); else font = _edje_text_class_font_get(ed, chosen_desc, &size, &sfont); @@ -1227,8 +1249,8 @@ _edje_part_recalc_single_min_max(FLOAT_T sc, static void _edje_part_recalc_single(Edje *ed, Edje_Real_Part *ep, - Edje_Part_Description *desc, - Edje_Part_Description *chosen_desc, + Edje_Part_Description_Common *desc, + Edje_Part_Description_Common *chosen_desc, Edje_Real_Part *rel1_to_x, Edje_Real_Part *rel1_to_y, Edje_Real_Part *rel2_to_x, @@ -1245,23 +1267,23 @@ _edje_part_recalc_single(Edje *ed, sc = ed->scale; if (sc == 0.0) sc = _edje_scale; - _edje_part_recalc_single_min_max(sc, ep, &desc->common, &minw, &minh, &maxw, &maxh, flags); + _edje_part_recalc_single_min_max(sc, ep, desc, &minw, &minh, &maxw, &maxh, flags); /* relative coords of top left & bottom right */ - _edje_part_recalc_single_rel(ed, ep, &desc->common, rel1_to_x, rel1_to_y, rel2_to_x, rel2_to_y, params, flags); + _edje_part_recalc_single_rel(ed, ep, desc, rel1_to_x, rel1_to_y, rel2_to_x, rel2_to_y, params, flags); /* aspect */ if (((flags | ep->calculated) & FLAG_XY) == FLAG_XY) - _edje_part_recalc_single_aspect(ep, &desc->common, params, &minw, &minh, &maxw, &maxh); + _edje_part_recalc_single_aspect(ep, desc, params, &minw, &minh, &maxw, &maxh); /* size step */ - _edje_part_recalc_single_step(&desc->common, params, flags); + _edje_part_recalc_single_step(desc, params, flags); /* if we have text that wants to make the min size the text size... */ if (ep->part->type == EDJE_PART_TYPE_TEXTBLOCK) - _edje_part_recalc_single_textblock(sc, ed, ep, chosen_desc, params, &minw, &minh, &maxw, &maxh); + _edje_part_recalc_single_textblock(sc, ed, ep, (Edje_Part_Description_Text*) chosen_desc, params, &minw, &minh, &maxw, &maxh); else if (ep->part->type == EDJE_PART_TYPE_TEXT) - _edje_part_recalc_single_text(sc, ed, ep, desc, chosen_desc, params, &minw, &minh, &maxw, &maxh); + _edje_part_recalc_single_text(sc, ed, ep, (Edje_Part_Description_Text*) desc, (Edje_Part_Description_Text*) chosen_desc, params, &minw, &minh, &maxw, &maxh); /* remember what our size is BEFORE we go limit it */ params->req.x = params->x; @@ -1270,10 +1292,10 @@ _edje_part_recalc_single(Edje *ed, params->req.h = params->h; /* adjust for min size */ - _edje_part_recalc_single_min(&desc->common, params, minw, minh, flags); + _edje_part_recalc_single_min(desc, params, minw, minh, flags); /* adjust for max size */ - _edje_part_recalc_single_max(&desc->common, params, maxw, maxh, flags); + _edje_part_recalc_single_max(desc, params, maxw, maxh, flags); /* take care of dragable part */ if (ep->drag) @@ -1281,82 +1303,90 @@ _edje_part_recalc_single(Edje *ed, /* fill */ if (ep->part->type == EDJE_PART_TYPE_IMAGE) - _edje_part_recalc_single_fill(ep, &desc->image, params, flags); + _edje_part_recalc_single_fill(ep, &((Edje_Part_Description_Image *)desc)->image, params, flags); /* colors */ - if ((desc->common.color_class) && (*desc->common.color_class)) - cc = _edje_color_class_find(ed, desc->common.color_class); + if ((desc->color_class) && (*desc->color_class)) + cc = _edje_color_class_find(ed, desc->color_class); if (cc) { - params->color.r = (((int)cc->r + 1) * desc->common.color.r) >> 8; - params->color.g = (((int)cc->g + 1) * desc->common.color.g) >> 8; - params->color.b = (((int)cc->b + 1) * desc->common.color.b) >> 8; - params->color.a = (((int)cc->a + 1) * desc->common.color.a) >> 8; + params->color.r = (((int)cc->r + 1) * desc->color.r) >> 8; + params->color.g = (((int)cc->g + 1) * desc->color.g) >> 8; + params->color.b = (((int)cc->b + 1) * desc->color.b) >> 8; + params->color.a = (((int)cc->a + 1) * desc->color.a) >> 8; } else { - params->color.r = desc->common.color.r; - params->color.g = desc->common.color.g; - params->color.b = desc->common.color.b; - params->color.a = desc->common.color.a; + params->color.r = desc->color.r; + params->color.g = desc->color.g; + params->color.b = desc->color.b; + params->color.a = desc->color.a; } /* visible */ - params->visible = desc->common.visible; + params->visible = desc->visible; switch (ep->part->type) { case EDJE_PART_TYPE_IMAGE: - /* border */ - if (flags & FLAG_X) - { - params->type.common.spec.image.l = desc->image.border.l; - params->type.common.spec.image.r = desc->image.border.r; - } - if (flags & FLAG_Y) - { - params->type.common.spec.image.t = desc->image.border.t; - params->type.common.spec.image.b = desc->image.border.b; - } - break; + { + Edje_Part_Description_Image *img_desc = (Edje_Part_Description_Image*) desc; + + /* border */ + if (flags & FLAG_X) + { + params->type.common.spec.image.l = img_desc->image.border.l; + params->type.common.spec.image.r = img_desc->image.border.r; + } + if (flags & FLAG_Y) + { + params->type.common.spec.image.t = img_desc->image.border.t; + params->type.common.spec.image.b = img_desc->image.border.b; + } + break; + } case EDJE_PART_TYPE_TEXT: case EDJE_PART_TYPE_TEXTBLOCK: - /* text.align */ - if (flags & FLAG_X) - { - params->type.text.align.x = desc->text.align.x; - } - if (flags & FLAG_Y) - { - params->type.text.align.y = desc->text.align.y; - } - params->type.text.elipsis = desc->text.elipsis; + { + Edje_Part_Description_Text *text_desc = (Edje_Part_Description_Text*) chosen_desc; - /* text colors */ - if (cc) - { - params->type.text.color2.r = (((int)cc->r2 + 1) * desc->common.color2.r) >> 8; - params->type.text.color2.g = (((int)cc->g2 + 1) * desc->common.color2.g) >> 8; - params->type.text.color2.b = (((int)cc->b2 + 1) * desc->common.color2.b) >> 8; - params->type.text.color2.a = (((int)cc->a2 + 1) * desc->common.color2.a) >> 8; - params->type.text.color3.r = (((int)cc->r3 + 1) * desc->text.color3.r) >> 8; - params->type.text.color3.g = (((int)cc->g3 + 1) * desc->text.color3.g) >> 8; - params->type.text.color3.b = (((int)cc->b3 + 1) * desc->text.color3.b) >> 8; - params->type.text.color3.a = (((int)cc->a3 + 1) * desc->text.color3.a) >> 8; - } - else - { - params->type.text.color2.r = desc->common.color2.r; - params->type.text.color2.g = desc->common.color2.g; - params->type.text.color2.b = desc->common.color2.b; - params->type.text.color2.a = desc->common.color2.a; - params->type.text.color3.r = desc->text.color3.r; - params->type.text.color3.g = desc->text.color3.g; - params->type.text.color3.b = desc->text.color3.b; - params->type.text.color3.a = desc->text.color3.a; - } - break; + /* text.align */ + if (flags & FLAG_X) + { + params->type.text.align.x = text_desc->text.align.x; + } + if (flags & FLAG_Y) + { + params->type.text.align.y = text_desc->text.align.y; + } + params->type.text.elipsis = text_desc->text.elipsis; + + /* text colors */ + if (cc) + { + params->type.text.color2.r = (((int)cc->r2 + 1) * text_desc->common.color2.r) >> 8; + params->type.text.color2.g = (((int)cc->g2 + 1) * text_desc->common.color2.g) >> 8; + params->type.text.color2.b = (((int)cc->b2 + 1) * text_desc->common.color2.b) >> 8; + params->type.text.color2.a = (((int)cc->a2 + 1) * text_desc->common.color2.a) >> 8; + params->type.text.color3.r = (((int)cc->r3 + 1) * text_desc->text.color3.r) >> 8; + params->type.text.color3.g = (((int)cc->g3 + 1) * text_desc->text.color3.g) >> 8; + params->type.text.color3.b = (((int)cc->b3 + 1) * text_desc->text.color3.b) >> 8; + params->type.text.color3.a = (((int)cc->a3 + 1) * text_desc->text.color3.a) >> 8; + } + else + { + params->type.text.color2.r = text_desc->common.color2.r; + params->type.text.color2.g = text_desc->common.color2.g; + params->type.text.color2.b = text_desc->common.color2.b; + params->type.text.color2.a = text_desc->common.color2.a; + params->type.text.color3.r = text_desc->text.color3.r; + params->type.text.color3.g = text_desc->text.color3.g; + params->type.text.color3.b = text_desc->text.color3.b; + params->type.text.color3.a = text_desc->text.color3.a; + } + break; + } case EDJE_PART_TYPE_RECTANGLE: case EDJE_PART_TYPE_BOX: case EDJE_PART_TYPE_TABLE: @@ -1371,7 +1401,7 @@ _edje_part_recalc_single(Edje *ed, } static void -_edje_box_recalc_apply(Edje *ed __UNUSED__, Edje_Real_Part *ep, Edje_Calc_Params *p3, Edje_Part_Description *chosen_desc) +_edje_box_recalc_apply(Edje *ed __UNUSED__, Edje_Real_Part *ep, Edje_Calc_Params *p3, Edje_Part_Description_Box *chosen_desc) { Evas_Object_Box_Layout layout; void (*free_data)(void *data); @@ -1408,7 +1438,10 @@ _edje_box_recalc_apply(Edje *ed __UNUSED__, Edje_Real_Part *ep, Edje_Calc_Params } static void -_edje_table_recalc_apply(Edje *ed __UNUSED__, Edje_Real_Part *ep, Edje_Calc_Params *p3 __UNUSED__, Edje_Part_Description *chosen_desc) +_edje_table_recalc_apply(Edje *ed __UNUSED__, + Edje_Real_Part *ep, + Edje_Calc_Params *p3 __UNUSED__, + Edje_Part_Description_Table *chosen_desc) { evas_object_table_homogeneous_set(ep->object, chosen_desc->table.homogeneous); evas_object_table_align_set(ep->object, TO_DOUBLE(chosen_desc->table.align.x), TO_DOUBLE(chosen_desc->table.align.y)); @@ -1421,7 +1454,7 @@ _edje_table_recalc_apply(Edje *ed __UNUSED__, Edje_Real_Part *ep, Edje_Calc_Para } static int -_edje_image_find(Evas_Object *obj, Edje *ed, Edje_Real_Part_Set **eps, Edje_Part_Description *st, Edje_Part_Image_Id *imid) +_edje_image_find(Evas_Object *obj, Edje *ed, Edje_Real_Part_Set **eps, Edje_Part_Description_Image *st, Edje_Part_Image_Id *imid) { Edje_Image_Directory_Set_Entry *entry; Edje_Image_Directory_Set *set = NULL; @@ -1485,7 +1518,7 @@ _edje_image_find(Evas_Object *obj, Edje *ed, Edje_Real_Part_Set **eps, Edje_Part } static void -_edje_image_recalc_apply(Edje *ed, Edje_Real_Part *ep, Edje_Calc_Params *p3, Edje_Part_Description *chosen_desc, FLOAT_T pos) +_edje_image_recalc_apply(Edje *ed, Edje_Real_Part *ep, Edje_Calc_Params *p3, Edje_Part_Description_Image *chosen_desc, FLOAT_T pos) { int image_id; int image_count, image_num; @@ -1510,7 +1543,9 @@ _edje_image_recalc_apply(Edje *ed, Edje_Real_Part *ep, Edje_Calc_Params *p3, Edj evas_object_image_border_center_fill_set(ep->object, EVAS_BORDER_FILL_SOLID); image_id = _edje_image_find(ep->object, ed, - &ep->param1.set, ep->param1.description, NULL); + &ep->param1.set, + (Edje_Part_Description_Image*) ep->param1.description, + NULL); if (image_id < 0) { Edje_Image_Directory_Entry *ie; @@ -1528,7 +1563,7 @@ _edje_image_recalc_apply(Edje *ed, Edje_Real_Part *ep, Edje_Calc_Params *p3, Edj { image_count = 2; if (ep->param2) - image_count += eina_list_count(ep->param2->description->image.tween_list); + image_count += eina_list_count(((Edje_Part_Description_Image*) ep->param2->description)->image.tween_list); image_num = TO_INT(MUL(pos, SUB(FROM_INT(image_count), FROM_DOUBLE(0.5)))); if (image_num > (image_count - 1)) @@ -1536,7 +1571,8 @@ _edje_image_recalc_apply(Edje *ed, Edje_Real_Part *ep, Edje_Calc_Params *p3, Edj if (image_num == 0) { image_id = _edje_image_find(ep->object, ed, - &ep->param1.set, ep->param1.description, + &ep->param1.set, + (Edje_Part_Description_Image*) ep->param1.description, NULL); } else @@ -1545,14 +1581,15 @@ _edje_image_recalc_apply(Edje *ed, Edje_Real_Part *ep, Edje_Calc_Params *p3, Edj if (image_num == (image_count - 1)) { image_id = _edje_image_find(ep->object, ed, - &ep->param2->set, ep->param2->description, + &ep->param2->set, + (Edje_Part_Description_Image*) ep->param2->description, NULL); } else { Edje_Part_Image_Id *imid; - imid = eina_list_nth(ep->param2->description->image.tween_list, + imid = eina_list_nth(((Edje_Part_Description_Image*) ep->param2->description)->image.tween_list, image_num - 1); image_id = _edje_image_find(ep->object, ed, NULL, NULL, imid); } @@ -1562,8 +1599,8 @@ _edje_image_recalc_apply(Edje *ed, Edje_Real_Part *ep, Edje_Calc_Params *p3, Edj ERR("¨Part \"%s\" has description, " "\"%s\" %3.3f with a missing image id!!!", ep->part->name, - ep->param1.description->common.state.name, - ep->param1.description->common.state.value); + ep->param1.description->state.name, + ep->param1.description->state.value); } else { @@ -1618,14 +1655,17 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags) Edje_Calc_Params lp1, lp2; #endif Edje_Calc_Params *p1, *pf; - Edje_Part_Description *chosen_desc; + Edje_Part_Description_Common *chosen_desc; Edje_Real_Part *confine_to = NULL; FLOAT_T pos = ZERO; Edje_Calc_Params lp3; /* GRADIENT ARE GONE, WE MUST IGNORE IT FROM OLD FILE. */ if (ep->part->type == EDJE_PART_TYPE_GRADIENT) - return; + { + ERR("GRADIENT spotted during recalc ! That should never happen ! Send your edje file to devel ml."); + return; + } if ((ep->calculated & FLAG_XY) == FLAG_XY) { @@ -1932,8 +1972,12 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags) switch (ep->part->type) { case EDJE_PART_TYPE_IMAGE: - evas_object_image_scale_hint_set(ep->object, - chosen_desc->image.scale_hint); + { + Edje_Part_Description_Image *img_desc = (Edje_Part_Description_Image*) chosen_desc; + + evas_object_image_scale_hint_set(ep->object, + img_desc->image.scale_hint); + } case EDJE_PART_TYPE_RECTANGLE: case EDJE_PART_TYPE_TEXTBLOCK: case EDJE_PART_TYPE_BOX: @@ -1972,16 +2016,16 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags) switch (ep->part->type) { case EDJE_PART_TYPE_TEXT: - _edje_text_recalc_apply(ed, ep, pf, chosen_desc); + _edje_text_recalc_apply(ed, ep, pf, (Edje_Part_Description_Text*) chosen_desc); break; case EDJE_PART_TYPE_IMAGE: - _edje_image_recalc_apply(ed, ep, pf, chosen_desc, pos); + _edje_image_recalc_apply(ed, ep, pf, (Edje_Part_Description_Image*) chosen_desc, pos); break; case EDJE_PART_TYPE_BOX: - _edje_box_recalc_apply(ed, ep, pf, chosen_desc); + _edje_box_recalc_apply(ed, ep, pf, (Edje_Part_Description_Box*) chosen_desc); break; case EDJE_PART_TYPE_TABLE: - _edje_table_recalc_apply(ed, ep, pf, chosen_desc); + _edje_table_recalc_apply(ed, ep, pf, (Edje_Part_Description_Table*) chosen_desc); break; case EDJE_PART_TYPE_EXTERNAL: case EDJE_PART_TYPE_RECTANGLE: @@ -2017,12 +2061,12 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags) mo = ep->swallowed_object; } else mo = ep->object; - if (chosen_desc->common.map.on) + if (chosen_desc->map.on) { Evas_Map *map; Evas_Coord cx, cy, cz; double rx, ry, rz; - Edje_Part_Description *desc1, *desc2; + Edje_Part_Description_Common *desc1, *desc2; desc1 = ep->param1.description; desc2 = NULL; @@ -2051,12 +2095,12 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags) // if another center is specified - find it and caculate it if ((desc1) && - (desc1->common.map.rot.id_center >= 0) && - (desc1->common.map.rot.id_center != ep->part->id)) + (desc1->map.rot.id_center >= 0) && + (desc1->map.rot.id_center != ep->part->id)) { Evas_Coord cx1, cy1, cz1, cx2, cy2, cz2; Edje_Real_Part *ep2 = - ed->table_parts[desc1->common.map.rot.id_center % + ed->table_parts[desc1->map.rot.id_center % ed->table_parts_size]; // get center for desc1 if (ep2) @@ -2068,10 +2112,10 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags) } // if we have a desc2 and are on a partiual position to it if ((pos != ZERO) && (desc2) && - (desc2->common.map.rot.id_center >= 0) && - (desc2->common.map.rot.id_center != ep->part->id)) + (desc2->map.rot.id_center >= 0) && + (desc2->map.rot.id_center != ep->part->id)) { - ep2 = ed->table_parts[desc2->common.map.rot.id_center % + ep2 = ed->table_parts[desc2->map.rot.id_center % ed->table_parts_size]; // get 2nd center & merge with pos with center 1 if (ep2) @@ -2093,32 +2137,32 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags) // rotation - interpolate wit pos, if appropriate if ((pos != ZERO) && (desc2)) { - rx = TO_DOUBLE(ADD(desc1->common.map.rot.x, - MUL(pos, SUB(desc2->common.map.rot.x, - desc1->common.map.rot.x)))); - ry = TO_DOUBLE(ADD(desc1->common.map.rot.y, - MUL(pos, SUB(desc2->common.map.rot.y, - desc1->common.map.rot.y)))); - rz = TO_DOUBLE(ADD(desc1->common.map.rot.z, - MUL(pos, SUB(desc2->common.map.rot.z, - desc1->common.map.rot.z)))); + rx = TO_DOUBLE(ADD(desc1->map.rot.x, + MUL(pos, SUB(desc2->map.rot.x, + desc1->map.rot.x)))); + ry = TO_DOUBLE(ADD(desc1->map.rot.y, + MUL(pos, SUB(desc2->map.rot.y, + desc1->map.rot.y)))); + rz = TO_DOUBLE(ADD(desc1->map.rot.z, + MUL(pos, SUB(desc2->map.rot.z, + desc1->map.rot.z)))); } else { // no 2 descriptions - just use rot - rx = TO_DOUBLE(desc1->common.map.rot.x); - ry = TO_DOUBLE(desc1->common.map.rot.y); - rz = TO_DOUBLE(desc1->common.map.rot.z); + rx = TO_DOUBLE(desc1->map.rot.x); + ry = TO_DOUBLE(desc1->map.rot.y); + rz = TO_DOUBLE(desc1->map.rot.z); } evas_map_util_3d_rotate(map, rx, ry, rz, cx, cy, cz); // calculate light color & position etc. if there is one if (((desc1) && - (desc1->common.map.id_light >= 0) && - (desc1->common.map.id_light != ep->part->id)) || + (desc1->map.id_light >= 0) && + (desc1->map.id_light != ep->part->id)) || ((desc2) && - (desc2->common.map.id_light >= 0) && - (desc2->common.map.id_light != ep->part->id))) + (desc2->map.id_light >= 0) && + (desc2->map.id_light != ep->part->id))) { Evas_Coord lx, ly, lz; int lr, lg, lb, lar, lag, lab; @@ -2130,16 +2174,16 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags) do1 = do2 = 0; if ((desc1) && - (desc1->common.map.id_light >= 0) && - (desc1->common.map.id_light != ep->part->id)) + (desc1->map.id_light >= 0) && + (desc1->map.id_light != ep->part->id)) { Edje_Real_Part *ep2 = - ed->table_parts[desc1->common.map.id_light % + ed->table_parts[desc1->map.id_light % ed->table_parts_size]; // get light part if (ep2) { - Edje_Part_Description *ep2desc1, *ep2desc2; + Edje_Part_Description_Common *ep2desc1, *ep2desc2; FLOAT_T ep2pos; do1 = 1; @@ -2156,51 +2200,51 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags) // if light is transitioning - interpolate it if ((ep2pos != ZERO) && (ep2desc2)) { - lz1 = ep2desc1->common.persp.zplane + - TO_INT(SCALE(ep2pos, ep2desc2->common.persp.zplane - - ep2desc1->common.persp.zplane)); - lr1 = ep2desc1->common.color.r + - TO_INT(SCALE(ep2pos, ep2desc2->common.color.r - - ep2desc1->common.color.r)); - lg1 = ep2desc1->common.color.g + - TO_INT(SCALE(ep2pos, ep2desc2->common.color.g - - ep2desc1->common.color.b)); - lb1 = ep2desc1->common.color.b + - TO_INT(SCALE(ep2pos, ep2desc2->common.color.g - - ep2desc1->common.color.b)); - lar1 = ep2desc1->common.color2.r + - TO_INT(SCALE(ep2pos, ep2desc2->common.color2.r - - ep2desc1->common.color2.r)); - lag1 = ep2desc1->common.color2.g + - TO_INT(SCALE(ep2pos, ep2desc2->common.color2.g - - ep2desc1->common.color2.b)); - lab1 = ep2desc1->common.color2.b + - TO_INT(SCALE(ep2pos, ep2desc2->common.color2.g - - ep2desc1->common.color2.b)); + lz1 = ep2desc1->persp.zplane + + TO_INT(SCALE(ep2pos, ep2desc2->persp.zplane - + ep2desc1->persp.zplane)); + lr1 = ep2desc1->color.r + + TO_INT(SCALE(ep2pos, ep2desc2->color.r - + ep2desc1->color.r)); + lg1 = ep2desc1->color.g + + TO_INT(SCALE(ep2pos, ep2desc2->color.g - + ep2desc1->color.b)); + lb1 = ep2desc1->color.b + + TO_INT(SCALE(ep2pos, ep2desc2->color.g - + ep2desc1->color.b)); + lar1 = ep2desc1->color2.r + + TO_INT(SCALE(ep2pos, ep2desc2->color2.r - + ep2desc1->color2.r)); + lag1 = ep2desc1->color2.g + + TO_INT(SCALE(ep2pos, ep2desc2->color2.g - + ep2desc1->color2.b)); + lab1 = ep2desc1->color2.b + + TO_INT(SCALE(ep2pos, ep2desc2->color2.g - + ep2desc1->color2.b)); } else { - lz1 = ep2desc1->common.persp.zplane; - lr1 = ep2desc1->common.color.r; - lg1 = ep2desc1->common.color.g; - lb1 = ep2desc1->common.color.b; - lar1 = ep2desc1->common.color2.r; - lag1 = ep2desc1->common.color2.g; - lab1 = ep2desc1->common.color2.b; + lz1 = ep2desc1->persp.zplane; + lr1 = ep2desc1->color.r; + lg1 = ep2desc1->color.g; + lb1 = ep2desc1->color.b; + lar1 = ep2desc1->color2.r; + lag1 = ep2desc1->color2.g; + lab1 = ep2desc1->color2.b; } } } if ((desc2) && - (desc2->common.map.id_light >= 0) && - (desc2->common.map.id_light != ep->part->id)) + (desc2->map.id_light >= 0) && + (desc2->map.id_light != ep->part->id)) { Edje_Real_Part *ep2 = - ed->table_parts[desc2->common.map.id_light % + ed->table_parts[desc2->map.id_light % ed->table_parts_size]; // get light part if (ep2) { - Edje_Part_Description *ep2desc1, *ep2desc2; + Edje_Part_Description_Common *ep2desc1, *ep2desc2; FLOAT_T ep2pos; do2 = 1; @@ -2217,37 +2261,37 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags) // if light is transitioning - interpolate it if ((ep2pos != ZERO) && (ep2desc2)) { - lz2 = ep2desc1->common.persp.zplane + - TO_INT(SCALE(ep2pos, ep2desc2->common.persp.zplane - - ep2desc1->common.persp.zplane)); - lr2 = ep2desc1->common.color.r + - TO_INT(SCALE(ep2pos, ep2desc2->common.color.r - - ep2desc1->common.color.r)); - lg2 = ep2desc1->common.color.g + - TO_INT(SCALE(ep2pos, ep2desc2->common.color.g - - ep2desc1->common.color.b)); - lb2 = ep2desc1->common.color.b + - TO_INT(SCALE(ep2pos, ep2desc2->common.color.g - - ep2desc1->common.color.b)); - lar2 = ep2desc1->common.color2.r + - TO_INT(SCALE(ep2pos, ep2desc2->common.color2.r - - ep2desc1->common.color2.r)); - lag2 = ep2desc1->common.color2.g + - TO_INT(SCALE(ep2pos, ep2desc2->common.color2.g - - ep2desc1->common.color2.b)); - lab2 = ep2desc1->common.color2.b + - TO_INT(SCALE(ep2pos, ep2desc2->common.color2.g - - ep2desc1->common.color2.b)); + lz2 = ep2desc1->persp.zplane + + TO_INT(SCALE(ep2pos, ep2desc2->persp.zplane - + ep2desc1->persp.zplane)); + lr2 = ep2desc1->color.r + + TO_INT(SCALE(ep2pos, ep2desc2->color.r - + ep2desc1->color.r)); + lg2 = ep2desc1->color.g + + TO_INT(SCALE(ep2pos, ep2desc2->color.g - + ep2desc1->color.b)); + lb2 = ep2desc1->color.b + + TO_INT(SCALE(ep2pos, ep2desc2->color.g - + ep2desc1->color.b)); + lar2 = ep2desc1->color2.r + + TO_INT(SCALE(ep2pos, ep2desc2->color2.r - + ep2desc1->color2.r)); + lag2 = ep2desc1->color2.g + + TO_INT(SCALE(ep2pos, ep2desc2->color2.g - + ep2desc1->color2.b)); + lab2 = ep2desc1->color2.b + + TO_INT(SCALE(ep2pos, ep2desc2->color2.g - + ep2desc1->color2.b)); } else { - lz2 = ep2desc1->common.persp.zplane; - lr2 = ep2desc1->common.color.r; - lg2 = ep2desc1->common.color.g; - lb2 = ep2desc1->common.color.b; - lar2 = ep2desc1->common.color2.r; - lag2 = ep2desc1->common.color2.g; - lab2 = ep2desc1->common.color2.b; + lz2 = ep2desc1->persp.zplane; + lr2 = ep2desc1->color.r; + lg2 = ep2desc1->color.g; + lb2 = ep2desc1->color.b; + lar2 = ep2desc1->color2.r; + lag2 = ep2desc1->color2.g; + lab2 = ep2desc1->color2.b; } } } @@ -2282,7 +2326,7 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags) } // calculate perspective point - if (chosen_desc->common.map.persp_on) + if (chosen_desc->map.persp_on) { Evas_Coord px, py, zplane, foc; Evas_Coord px1, py1, zplane1, foc1; @@ -2298,14 +2342,14 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags) foc = 1000; if ((desc1) && - (desc1->common.map.id_persp >= 0) && - (desc1->common.map.id_persp != ep->part->id)) + (desc1->map.id_persp >= 0) && + (desc1->map.id_persp != ep->part->id)) { - Edje_Real_Part *ep2 = ed->table_parts[desc1->common.map.id_persp % + Edje_Real_Part *ep2 = ed->table_parts[desc1->map.id_persp % ed->table_parts_size]; if (ep2) { - Edje_Part_Description *ep2desc1, *ep2desc2; + Edje_Part_Description_Common *ep2desc1, *ep2desc2; FLOAT_T ep2pos; do1 = 1; @@ -2320,30 +2364,30 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags) py1 = ed->y + ep2->y + (ep2->h / 2); if ((ep2pos != ZERO) && (ep2desc2)) { - zplane1 = ep2desc1->common.persp.zplane + - TO_INT(SCALE(ep2pos, ep2desc2->common.persp.zplane - - ep2desc1->common.persp.zplane)); - foc1 = ep2desc1->common.persp.focal + - TO_INT(SCALE(ep2pos, ep2desc2->common.persp.focal - - ep2desc1->common.persp.focal)); + zplane1 = ep2desc1->persp.zplane + + TO_INT(SCALE(ep2pos, ep2desc2->persp.zplane - + ep2desc1->persp.zplane)); + foc1 = ep2desc1->persp.focal + + TO_INT(SCALE(ep2pos, ep2desc2->persp.focal - + ep2desc1->persp.focal)); } else { - zplane1 = ep2desc1->common.persp.zplane; - foc1 = ep2desc1->common.persp.focal; + zplane1 = ep2desc1->persp.zplane; + foc1 = ep2desc1->persp.focal; } } } if ((desc2) && - (desc2->common.map.id_persp >= 0) && - (desc2->common.map.id_persp != ep->part->id)) + (desc2->map.id_persp >= 0) && + (desc2->map.id_persp != ep->part->id)) { - Edje_Real_Part *ep2 = ed->table_parts[desc2->common.map.id_persp % + Edje_Real_Part *ep2 = ed->table_parts[desc2->map.id_persp % ed->table_parts_size]; if (ep2) { - Edje_Part_Description *ep2desc1, *ep2desc2; + Edje_Part_Description_Common *ep2desc1, *ep2desc2; FLOAT_T ep2pos; do2 = 1; @@ -2358,17 +2402,17 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags) py2 = ed->y + ep2->y + (ep2->h / 2); if ((ep2pos != ZERO) && (ep2desc2)) { - zplane2 = ep2desc1->common.persp.zplane + - TO_INT(SCALE(ep2pos, ep2desc2->common.persp.zplane - - ep2desc1->common.persp.zplane)); - foc2 = ep2desc1->common.persp.focal + - TO_INT(SCALE(ep2pos, ep2desc2->common.persp.focal - - ep2desc1->common.persp.focal)); + zplane2 = ep2desc1->persp.zplane + + TO_INT(SCALE(ep2pos, ep2desc2->persp.zplane - + ep2desc1->persp.zplane)); + foc2 = ep2desc1->persp.focal + + TO_INT(SCALE(ep2pos, ep2desc2->persp.focal - + ep2desc1->persp.focal)); } else { - zplane2 = ep2desc1->common.persp.zplane; - foc2 = ep2desc1->common.persp.focal; + zplane2 = ep2desc1->persp.zplane; + foc2 = ep2desc1->persp.focal; } } } @@ -2412,7 +2456,7 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags) } // handle backface culling (object is facing away from view - if (chosen_desc->common.map.backcull) + if (chosen_desc->map.backcull) { if (pf->visible) { @@ -2423,10 +2467,10 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags) } // handle smooth - if (chosen_desc->common.map.smooth) evas_map_smooth_set(map, 1); + if (chosen_desc->map.smooth) evas_map_smooth_set(map, 1); else evas_map_smooth_set(map, 0); // handle alpha - if (chosen_desc->common.map.alpha) evas_map_alpha_set(map, 1); + if (chosen_desc->map.alpha) evas_map_alpha_set(map, 1); else evas_map_alpha_set(map, 0); evas_object_map_set(mo, map); diff --git a/legacy/edje/src/lib/edje_convert.c b/legacy/edje/src/lib/edje_convert.c index b3efb544a6..237c668cd7 100644 --- a/legacy/edje/src/lib/edje_convert.c +++ b/legacy/edje/src/lib/edje_convert.c @@ -53,7 +53,7 @@ _edje_collection_string_free(void *data) edf->path, edf->references, ce->ref->part, ce->ref->references); - _edje_collection_free(edf, ce->ref); + _edje_collection_free(edf, ce->ref, ce); } free(ce); @@ -242,15 +242,13 @@ _edje_collection_convert(Edje_File *file, Old_Edje_Part_Collection *oedc) { Edje_Part_Collection_Directory_Entry *ce; Edje_Part_Collection *edc; - Edje_Part *part; + Old_Edje_Part *part; + Edje_Data *di; Eina_List *l; - - edc = oedc; + unsigned int k; ce = eina_hash_find(file->collection, oedc->part); - ce->ref = edc; - /* Count each type part and their respective state */ EINA_LIST_FOREACH(oedc->parts, l, part) { @@ -281,7 +279,150 @@ _edje_collection_convert(Edje_File *file, Old_Edje_Part_Collection *oedc) *count += eina_list_count(part->other_desc) + 1; } + ce->count.part = eina_list_count(oedc->parts); + +#define EMN(Tp, Sz, Ce) \ + Ce->mp.Tp = eina_mempool_add("one_big", #Tp, NULL, sizeof (Sz), Ce->count.Tp); + + EMN(RECTANGLE, Edje_Part_Description_Common, ce); + EMN(TEXT, Edje_Part_Description_Text, ce); + EMN(IMAGE, Edje_Part_Description_Image, ce); + EMN(SWALLOW, Edje_Part_Description_Common, ce); + EMN(TEXTBLOCK, Edje_Part_Description_Text, ce); + EMN(GROUP, Edje_Part_Description_Common, ce); + EMN(BOX, Edje_Part_Description_Box, ce); + EMN(TABLE, Edje_Part_Description_Table, ce); + EMN(EXTERNAL, Edje_Part_Description_External, ce); + EMN(part, Edje_Part, ce); + + /* Change structure layout */ + edc = calloc(1, sizeof (Edje_Part_Collection)); + if (!edc) return NULL; + ce->ref = edc; + + edc->programs = oedc->programs; + oedc->programs = NULL; + + edc->data = eina_hash_string_small_new(NULL); + EINA_LIST_FREE(oedc->data, di) + { + eina_hash_direct_add(edc->data, di->key, di->value); + free(di); + } + + edc->parts_count = eina_list_count(oedc->parts); + edc->parts = calloc(edc->parts_count, sizeof (Edje_Part *)); + k = 0; + + EINA_LIST_FREE(oedc->parts, part) + { + Old_Edje_Part_Description *oepd; + Edje_Pack_Element *elm; + Edje_Part *replacement; + unsigned int i; + + replacement = eina_mempool_malloc(ce->mp.part, sizeof (Edje_Part)); + + replacement->name = part->name; + replacement->default_desc = _edje_description_convert(part->type, ce, part->default_desc); + + replacement->other_count = eina_list_count(part->other_desc); + replacement->other_desc = calloc(replacement->other_count, sizeof (Edje_Part_Description_Common*)); + + i = 0; + EINA_LIST_FREE(part->other_desc, oepd) + replacement->other_desc[i++] = _edje_description_convert(part->type, ce, oepd); + + replacement->source = part->source; + replacement->source2 = part->source2; + replacement->source3 = part->source3; + replacement->source4 = part->source4; + replacement->source5 = part->source5; + replacement->source6 = part->source6; + replacement->id = part->id; + replacement->clip_to_id = part->clip_to_id; + replacement->dragable = part->dragable; + replacement->items_count = eina_list_count(part->items); + replacement->items = calloc(replacement->items_count, sizeof (Edje_Pack_Element*)); + + i = 0; + EINA_LIST_FREE(part->items, elm) + replacement->items[i++] = elm; + + replacement->type = part->type; + replacement->effect = part->effect; + replacement->mouse_events = part->mouse_events; + replacement->repeat_events = part->repeat_events; + replacement->ignore_flags = part->ignore_flags; + replacement->scale = part->scale; + replacement->precise_is_inside = part->precise_is_inside; + replacement->use_alternate_font_metrics = part->use_alternate_font_metrics; + replacement->pointer_mode = part->pointer_mode; + replacement->entry_mode = part->entry_mode; + replacement->select_mode = part->select_mode; + replacement->multiline = part->multiline; + replacement->api = part->api; + + edc->parts[k++] = replacement; + + free(part); + } + + edc->id = oedc->id; + edc->alias = oedc->alias; + edc->prop.min = oedc->prop.min; + edc->prop.max = oedc->prop.max; + edc->script = oedc->script; + edc->part = oedc->part; + edc->script_only = oedc->script_only; + edc->lua_script_only = oedc->lua_script_only; + edc->checked = oedc->checked; + + free(oedc); - /* FIXME : change structure layout */ return edc; } + +Edje_Part_Description_Common* +_edje_description_convert(int type, + Edje_Part_Collection_Directory_Entry *ce, + Old_Edje_Part_Description *oed) +{ + Edje_Part_Description_Common *result = NULL; + + switch (type) + { + case EDJE_PART_TYPE_RECTANGLE: + result = eina_mempool_malloc(ce->mp.RECTANGLE, sizeof (Edje_Part_Description_Common)); + break; + case EDJE_PART_TYPE_SWALLOW: + result = eina_mempool_malloc(ce->mp.SWALLOW, sizeof (Edje_Part_Description_Common)); + break; + case EDJE_PART_TYPE_GROUP: + result = eina_mempool_malloc(ce->mp.GROUP, sizeof (Edje_Part_Description_Common)); + break; + +#define ALLOC_POOL(Short, Type, Name) \ + case EDJE_PART_TYPE_##Short: \ + { \ + Edje_Part_Description_##Type *Name; \ + \ + Name = eina_mempool_malloc(ce->mp.Short, sizeof (Edje_Part_Description_##Type)); \ + Name->Name = oed->Name; \ + result = &Name->common; \ + break; \ + } + + ALLOC_POOL(IMAGE, Image, image); + ALLOC_POOL(TEXT, Text, text); + ALLOC_POOL(TEXTBLOCK, Text, text); + ALLOC_POOL(BOX, Box, box); + ALLOC_POOL(TABLE, Table, table); + ALLOC_POOL(EXTERNAL, External, external_params); + } + + *result = oed->common; + + free(oed); + return result; +} diff --git a/legacy/edje/src/lib/edje_convert.h b/legacy/edje/src/lib/edje_convert.h index 7cddb1b8a4..966f588cd5 100644 --- a/legacy/edje/src/lib/edje_convert.h +++ b/legacy/edje/src/lib/edje_convert.h @@ -1,10 +1,21 @@ #ifndef EDJE_CONVERT_H__ # define EDJE_CONVERT_H__ -typedef struct _Edje_Part_Collection Old_Edje_Part_Collection; typedef struct _Old_Edje_Image_Directory Old_Edje_Image_Directory; typedef struct _Old_Edje_Font_Directory Old_Edje_Font_Directory; typedef struct _Old_Edje_External_Directory Old_Edje_External_Directory; +typedef struct _Old_Edje_Part Old_Edje_Part; +typedef struct _Old_Edje_Part_Collection Old_Edje_Part_Collection; +typedef struct _Old_Edje_Part_Description Old_Edje_Part_Description; +typedef struct _Edje_Data Edje_Data; + +struct _Edje_Data +{ + const char *key; + char *value; +}; + +/*----------*/ struct _Old_Edje_Font_Directory { @@ -40,9 +51,80 @@ struct _Old_Edje_File int feature_ver; }; +struct _Old_Edje_Part_Collection +{ + Eina_List *programs; /* a list of Edje_Program */ + Eina_List *parts; /* a list of Edje_Part */ + Eina_List *data; + + int id; /* the collection id */ + + Eina_Hash *alias; /* aliasing part*/ + + struct { + Edje_Size min, max; + } prop; + + int references; +#ifdef EDJE_PROGRAM_CACHE + struct { + Eina_Hash *no_matches; + Eina_Hash *matches; + } prog_cache; +#endif + + Embryo_Program *script; /* all the embryo script code for this group */ + const char *part; + + unsigned char script_only; + + unsigned char lua_script_only; + + unsigned char checked : 1; +}; + +struct _Old_Edje_Part +{ + const char *name; /* the name if any of the part */ + Old_Edje_Part_Description *default_desc; /* the part descriptor for default */ + Eina_List *other_desc; /* other possible descriptors */ + const char *source, *source2, *source3, *source4, *source5, *source6; + int id; /* its id number */ + int clip_to_id; /* the part id to clip this one to */ + Edje_Part_Dragable dragable; + Eina_List *items; /* packed items for box and table */ + unsigned char type; /* what type (image, rect, text) */ + unsigned char effect; /* 0 = plain... */ + unsigned char mouse_events; /* it will affect/respond to mouse events */ + unsigned char repeat_events; /* it will repeat events to objects below */ + Evas_Event_Flags ignore_flags; + unsigned char scale; /* should certain properties scale with edje scale factor? */ + unsigned char precise_is_inside; + unsigned char use_alternate_font_metrics; + unsigned char pointer_mode; + unsigned char entry_mode; + unsigned char select_mode; + unsigned char multiline; + Edje_Part_Api api; +}; + +struct _Old_Edje_Part_Description +{ + Edje_Part_Description_Common common; + Edje_Part_Description_Spec_Image image; + Edje_Part_Description_Spec_Text text; + Edje_Part_Description_Spec_Box box; + Edje_Part_Description_Spec_Table table; + + Eina_List *external_params; /* parameters for external objects */ +}; + Edje_File *_edje_file_convert(Eet_File *file, Old_Edje_File *oedf); Edje_Part_Collection *_edje_collection_convert(Edje_File *file, Old_Edje_Part_Collection *oedc); +Edje_Part_Description_Common *_edje_description_convert(int type, + Edje_Part_Collection_Directory_Entry *ce, + Old_Edje_Part_Description *oed); const Edje_File *_edje_file_get(void); void _edje_file_set(const Edje_File *edf); diff --git a/legacy/edje/src/lib/edje_data.c b/legacy/edje/src/lib/edje_data.c index faf8abd240..424c090ff5 100644 --- a/legacy/edje/src/lib/edje_data.c +++ b/legacy/edje/src/lib/edje_data.c @@ -244,116 +244,116 @@ _edje_edd_init(void) EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_external_param, Edje_External_Param, "d", d, EET_T_DOUBLE); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_external_param, Edje_External_Param, "s", s, EET_T_STRING); - EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Description); + eet_eina_file_data_descriptor_class_set(&eddc, "Edje_Part_Description", sizeof (Old_Edje_Part_Description)); _edje_edd_edje_part_description = eet_data_descriptor_file_new(&eddc); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "state.name", common.state.name, EET_T_STRING); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "state.value", common.state.value, EET_T_DOUBLE); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "visible", common.visible, EET_T_CHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "align.x", common.align.x, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "align.y", common.align.y, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "fixed.w", common.fixed.w, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "fixed.h", common.fixed.h, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "min.w", common.min.w, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "min.h", common.min.h, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "max.w", common.max.w, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "max.h", common.max.h, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "step.x", common.step.x, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "step.y", common.step.y, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "aspect.min", common.aspect.min, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "aspect.max", common.aspect.max, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "aspect.prefer", common.aspect.prefer, EET_T_CHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "rel1.relative_x", common.rel1.relative_x, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "rel1.relative_y", common.rel1.relative_y, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "rel1.offset_x", common.rel1.offset_x, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "rel1.offset_y", common.rel1.offset_y, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "rel1.id_x", common.rel1.id_x, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "rel1.id_y", common.rel1.id_y, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "rel2.relative_x", common.rel2.relative_x, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "rel2.relative_y", common.rel2.relative_y, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "rel2.offset_x", common.rel2.offset_x, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "rel2.offset_y", common.rel2.offset_y, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "rel2.id_x", common.rel2.id_x, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "rel2.id_y", common.rel2.id_y, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "image.id", image.id, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "image.set", image.set, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_part_description, Edje_Part_Description, "image.tween_list", image.tween_list, _edje_edd_edje_part_image_id); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "state.name", common.state.name, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "state.value", common.state.value, EET_T_DOUBLE); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "visible", common.visible, EET_T_CHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "align.x", common.align.x, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "align.y", common.align.y, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "fixed.w", common.fixed.w, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "fixed.h", common.fixed.h, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "min.w", common.min.w, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "min.h", common.min.h, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "max.w", common.max.w, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "max.h", common.max.h, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "step.x", common.step.x, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "step.y", common.step.y, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "aspect.min", common.aspect.min, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "aspect.max", common.aspect.max, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "aspect.prefer", common.aspect.prefer, EET_T_CHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "rel1.relative_x", common.rel1.relative_x, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "rel1.relative_y", common.rel1.relative_y, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "rel1.offset_x", common.rel1.offset_x, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "rel1.offset_y", common.rel1.offset_y, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "rel1.id_x", common.rel1.id_x, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "rel1.id_y", common.rel1.id_y, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "rel2.relative_x", common.rel2.relative_x, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "rel2.relative_y", common.rel2.relative_y, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "rel2.offset_x", common.rel2.offset_x, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "rel2.offset_y", common.rel2.offset_y, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "rel2.id_x", common.rel2.id_x, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "rel2.id_y", common.rel2.id_y, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "image.id", image.id, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "image.set", image.set, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_part_description, Old_Edje_Part_Description, "image.tween_list", image.tween_list, _edje_edd_edje_part_image_id); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "border.l", image.border.l, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "border.r", image.border.r, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "border.t", image.border.t, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "border.b", image.border.b, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "border.no_fill", image.border.no_fill, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "border.scale", image.border.scale, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "fill.smooth", image.fill.smooth, EET_T_CHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "fill.pos_rel_x", image.fill.pos_rel_x, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "fill.pos_abs_x", image.fill.pos_abs_x, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "fill.rel_x", image.fill.rel_x, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "fill.abs_x", image.fill.abs_x, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "fill.pos_rel_y", image.fill.pos_rel_y, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "fill.pos_abs_y", image.fill.pos_abs_y, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "fill.rel_y", image.fill.rel_y, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "fill.abs_y", image.fill.abs_y, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "fill.angle", image.fill.angle, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "fill.spread", image.fill.spread, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "fill.type", image.fill.type, EET_T_CHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "color_class", common.color_class, EET_T_STRING); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "color.r", common.color.r, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "color.g", common.color.g, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "color.b", common.color.b, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "color.a", common.color.a, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "color2.r", common.color2.r, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "color2.g", common.color2.g, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "color2.b", common.color2.b, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "color2.a", common.color2.a, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "color3.r", text.color3.r, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "color3.g", text.color3.g, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "color3.b", text.color3.b, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "color3.a", text.color3.a, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "text.text", text.text, EET_T_STRING); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "text.text_class", text.text_class, EET_T_STRING); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "text.style", text.style, EET_T_STRING); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "text.font", text.font, EET_T_STRING); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "text.repch", text.repch, EET_T_STRING); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "text.size", text.size, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "text.fit_x", text.fit_x, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "text.fit_y", text.fit_y, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "text.min_x", text.min_x, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "text.min_y", text.min_y, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "text.max_x", text.max_x, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "text.max_y", text.max_y, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "text.align.x", text.align.x, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "text.align.y", text.align.y, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "text.id_source", text.id_source, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "text.id_text_source", text.id_text_source, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "text.elipsis", text.elipsis, EET_T_DOUBLE); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "box.layout", box.layout, EET_T_STRING); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "box.alt_layout", box.alt_layout, EET_T_STRING); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "box.align.x", box.align.x, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "box.align.y", box.align.y, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "box.padding.x", box.padding.x, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "box.padding.y", box.padding.y, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "box.min.h", box.min.h, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "box.min.v", box.min.v, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "table.homogeneous", table.homogeneous, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "table.align.x", table.align.x, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "table.align.y", table.align.y, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "table.padding.x", table.padding.x, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "table.padding.y", table.padding.y, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "map.id_persp", common.map.id_persp, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "map.id_light", common.map.id_light, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "map.rot.id_center", common.map.rot.id_center, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "map.rot.x", common.map.rot.x, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "map.rot.y", common.map.rot.y, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "map.rot.z", common.map.rot.z, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "map.on", common.map.on, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "map.smooth", common.map.smooth, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "map.alpha", common.map.alpha, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "map.persp_on", common.map.persp_on, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "map.backcull", common.map.backcull, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "persp.zplane", common.persp.zplane, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Edje_Part_Description, "persp.focal", common.persp.focal, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_part_description, Edje_Part_Description, "external_params", external_params, _edje_edd_edje_external_param); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "border.l", image.border.l, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "border.r", image.border.r, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "border.t", image.border.t, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "border.b", image.border.b, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "border.no_fill", image.border.no_fill, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "border.scale", image.border.scale, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "fill.smooth", image.fill.smooth, EET_T_CHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "fill.pos_rel_x", image.fill.pos_rel_x, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "fill.pos_abs_x", image.fill.pos_abs_x, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "fill.rel_x", image.fill.rel_x, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "fill.abs_x", image.fill.abs_x, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "fill.pos_rel_y", image.fill.pos_rel_y, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "fill.pos_abs_y", image.fill.pos_abs_y, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "fill.rel_y", image.fill.rel_y, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "fill.abs_y", image.fill.abs_y, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "fill.angle", image.fill.angle, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "fill.spread", image.fill.spread, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "fill.type", image.fill.type, EET_T_CHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "color_class", common.color_class, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "color.r", common.color.r, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "color.g", common.color.g, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "color.b", common.color.b, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "color.a", common.color.a, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "color2.r", common.color2.r, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "color2.g", common.color2.g, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "color2.b", common.color2.b, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "color2.a", common.color2.a, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "color3.r", text.color3.r, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "color3.g", text.color3.g, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "color3.b", text.color3.b, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "color3.a", text.color3.a, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "text.text", text.text, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "text.text_class", text.text_class, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "text.style", text.style, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "text.font", text.font, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "text.repch", text.repch, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "text.size", text.size, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "text.fit_x", text.fit_x, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "text.fit_y", text.fit_y, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "text.min_x", text.min_x, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "text.min_y", text.min_y, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "text.max_x", text.max_x, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "text.max_y", text.max_y, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "text.align.x", text.align.x, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "text.align.y", text.align.y, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "text.id_source", text.id_source, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "text.id_text_source", text.id_text_source, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "text.elipsis", text.elipsis, EET_T_DOUBLE); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "box.layout", box.layout, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "box.alt_layout", box.alt_layout, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "box.align.x", box.align.x, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "box.align.y", box.align.y, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "box.padding.x", box.padding.x, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "box.padding.y", box.padding.y, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "box.min.h", box.min.h, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "box.min.v", box.min.v, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "table.homogeneous", table.homogeneous, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "table.align.x", table.align.x, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "table.align.y", table.align.y, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "table.padding.x", table.padding.x, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "table.padding.y", table.padding.y, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "map.id_persp", common.map.id_persp, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "map.id_light", common.map.id_light, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "map.rot.id_center", common.map.rot.id_center, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "map.rot.x", common.map.rot.x, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "map.rot.y", common.map.rot.y, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "map.rot.z", common.map.rot.z, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "map.on", common.map.on, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "map.smooth", common.map.smooth, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "map.alpha", common.map.alpha, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "map.persp_on", common.map.persp_on, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "map.backcull", common.map.backcull, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "persp.zplane", common.persp.zplane, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description, Old_Edje_Part_Description, "persp.focal", common.persp.focal, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_part_description, Old_Edje_Part_Description, "external_params", external_params, _edje_edd_edje_external_param); EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Pack_Element); _edje_edd_edje_pack_element = @@ -384,60 +384,60 @@ _edje_edd_init(void) EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "colspan", colspan, EET_T_USHORT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "rowspan", rowspan, EET_T_USHORT); - EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part); + eet_eina_file_data_descriptor_class_set(&eddc, "Edje_Part", sizeof (Old_Edje_Part)); _edje_edd_edje_part = eet_data_descriptor_file_new(&eddc); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "name", name, EET_T_STRING); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "id", id, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "type", type, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "effect", effect, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "mouse_events", mouse_events, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "repeat_events", repeat_events, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "ignore_flags", ignore_flags, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "scale", scale, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "pointer_mode", pointer_mode, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "precise_is_inside", precise_is_inside, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "clip_to_id", clip_to_id, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "use_alternate_font_metrics", use_alternate_font_metrics, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_SUB(_edje_edd_edje_part, Edje_Part, "default_desc", default_desc, _edje_edd_edje_part_description); - EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_part, Edje_Part, "other_desc", other_desc, _edje_edd_edje_part_description); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "dragable.x", dragable.x, EET_T_CHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "dragable.step_x", dragable.step_x, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "dragable.count_x", dragable.count_x, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "dragable.y", dragable.y, EET_T_CHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "dragable.step_y", dragable.step_y, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "dragable.count_y", dragable.count_y, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "dragable.counfine_id", dragable.confine_id, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "dragable.events_id", dragable.event_id, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "entry_mode", entry_mode, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "select_mode", select_mode, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "multiline", multiline, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "source", source, EET_T_STRING); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "source2", source2, EET_T_STRING); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "source3", source3, EET_T_STRING); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "source4", source4, EET_T_STRING); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "source5", source5, EET_T_STRING); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "source6", source6, EET_T_STRING); - EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_part, Edje_Part, "items", items, _edje_edd_edje_pack_element); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "api.name", api.name, EET_T_STRING); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "api.description", api.description, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Old_Edje_Part, "name", name, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Old_Edje_Part, "id", id, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Old_Edje_Part, "type", type, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Old_Edje_Part, "effect", effect, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Old_Edje_Part, "mouse_events", mouse_events, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Old_Edje_Part, "repeat_events", repeat_events, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Old_Edje_Part, "ignore_flags", ignore_flags, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Old_Edje_Part, "scale", scale, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Old_Edje_Part, "pointer_mode", pointer_mode, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Old_Edje_Part, "precise_is_inside", precise_is_inside, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Old_Edje_Part, "clip_to_id", clip_to_id, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Old_Edje_Part, "use_alternate_font_metrics", use_alternate_font_metrics, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_SUB(_edje_edd_edje_part, Old_Edje_Part, "default_desc", default_desc, _edje_edd_edje_part_description); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_part, Old_Edje_Part, "other_desc", other_desc, _edje_edd_edje_part_description); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Old_Edje_Part, "dragable.x", dragable.x, EET_T_CHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Old_Edje_Part, "dragable.step_x", dragable.step_x, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Old_Edje_Part, "dragable.count_x", dragable.count_x, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Old_Edje_Part, "dragable.y", dragable.y, EET_T_CHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Old_Edje_Part, "dragable.step_y", dragable.step_y, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Old_Edje_Part, "dragable.count_y", dragable.count_y, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Old_Edje_Part, "dragable.counfine_id", dragable.confine_id, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Old_Edje_Part, "dragable.events_id", dragable.event_id, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Old_Edje_Part, "entry_mode", entry_mode, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Old_Edje_Part, "select_mode", select_mode, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Old_Edje_Part, "multiline", multiline, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Old_Edje_Part, "source", source, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Old_Edje_Part, "source2", source2, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Old_Edje_Part, "source3", source3, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Old_Edje_Part, "source4", source4, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Old_Edje_Part, "source5", source5, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Old_Edje_Part, "source6", source6, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_part, Old_Edje_Part, "items", items, _edje_edd_edje_pack_element); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Old_Edje_Part, "api.name", api.name, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Old_Edje_Part, "api.description", api.description, EET_T_STRING); - EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Collection); + eet_eina_file_data_descriptor_class_set(&eddc, "Edje_Part_Collection", sizeof (Old_Edje_Part_Collection)); _edje_edd_edje_part_collection = eet_data_descriptor_file_new(&eddc); - EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_part_collection, Edje_Part_Collection, "programs", programs, _edje_edd_edje_program); - EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_part_collection, Edje_Part_Collection, "parts", parts, _edje_edd_edje_part); - EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_part_collection, Edje_Part_Collection, "data", data, _edje_edd_edje_data); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "prop.min.w", prop.min.w, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "prop.min.h", prop.min.h, EET_T_INT); - 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", script_only, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "lua_script_only", lua_script_only, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_part_collection, Old_Edje_Part_Collection, "programs", programs, _edje_edd_edje_program); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_part_collection, Old_Edje_Part_Collection, "parts", parts, _edje_edd_edje_part); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_part_collection, Old_Edje_Part_Collection, "data", data, _edje_edd_edje_data); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Old_Edje_Part_Collection, "prop.min.w", prop.min.w, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Old_Edje_Part_Collection, "prop.min.h", prop.min.h, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Old_Edje_Part_Collection, "prop.max.w", prop.max.w, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Old_Edje_Part_Collection, "prop.max.h", prop.max.h, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Old_Edje_Part_Collection, "id", id, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Old_Edje_Part_Collection, "script_only", script_only, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Old_Edje_Part_Collection, "lua_script_only", lua_script_only, EET_T_UCHAR); { - Edje_Part_Collection epc; + Old_Edje_Part_Collection epc; eet_data_descriptor_element_add(_edje_edd_edje_part_collection, "alias", EET_T_STRING, EET_G_HASH, diff --git a/legacy/edje/src/lib/edje_edit.c b/legacy/edje/src/lib/edje_edit.c index ab8782d431..9d533675c8 100644 --- a/legacy/edje/src/lib/edje_edit.c +++ b/legacy/edje/src/lib/edje_edit.c @@ -62,7 +62,7 @@ #define GET_PD_OR_RETURN(RET) \ Edje *ed; \ Edje_Edit *eed; \ - Edje_Part_Description *pd; \ + Edje_Part_Description_Common *pd; \ if (!evas_object_smart_type_check_ptr(obj, _edje_edit_type)) \ return RET; \ eed = evas_object_smart_data_get(obj); \ @@ -184,15 +184,11 @@ edje_edit_object_add(Evas *e) } /* End of Edje_Edit smart stuff */ - - - - -static Edje_Part_Description * +static Edje_Part_Description_Common * _edje_part_description_find_byname(Edje_Edit *eed, const char *part, const char *state, double value) { Edje_Real_Part *rp; - Edje_Part_Description *pd; + Edje_Part_Description_Common *pd; if (!eed || !part || !state) return NULL; @@ -275,7 +271,11 @@ _edje_real_part_free(Edje_Real_Part *rp) if (rp->text.cache.out_str) eina_stringshare_del(rp->text.cache.out_str); if (rp->custom) - _edje_collection_free_part_description_free(rp->custom->description, 0); + { + _edje_collection_free_part_description_clean(rp->part->type, rp->custom->description, 0); + free(rp->custom); + rp->custom = NULL; + } free(rp->drag); @@ -452,6 +452,26 @@ _edje_part_id_find(Edje *ed, const char *part) return -1; } +static void +_edje_part_description_id_set(int type, Edje_Part_Description_Common *c, int old_id, int new_id) +{ + if (c->rel1.id_x == old_id) c->rel1.id_x = new_id; + if (c->rel1.id_y == old_id) c->rel1.id_y = new_id; + if (c->rel2.id_x == old_id) c->rel2.id_x = new_id; + if (c->rel2.id_y == old_id) c->rel2.id_y = new_id; + + if (type == EDJE_PART_TYPE_TEXT + || type == EDJE_PART_TYPE_TEXTBLOCK) + { + Edje_Part_Description_Text *t; + + t = (Edje_Part_Description_Text *) c; + + if (t->text.id_source == old_id) t->text.id_source = new_id; + if (t->text.id_text_source == old_id) t->text.id_text_source = new_id; + } +} + static void _edje_part_id_set(Edje *ed, Edje_Real_Part *rp, int new_id) { @@ -464,8 +484,8 @@ _edje_part_id_set(Edje *ed, Edje_Real_Part *rp, int new_id) int old_id; Edje_Part *part; Eina_List *l, *ll, *l_next; - Edje_Part *p; Edje_Program *epr; + unsigned int j; part = rp->part; @@ -480,38 +500,23 @@ _edje_part_id_set(Edje *ed, Edje_Real_Part *rp, int new_id) part->id = new_id; /* Fix all the dependecies in all parts... */ - EINA_LIST_FOREACH(ed->collection->parts, l, p) + for (j = 0; j < ed->collection->parts_count; ++j) { - Edje_Part_Description *d; - Edje_Part_Description_Common *c; + Edje_Part *p; + unsigned int k; + + p = ed->collection->parts[j]; //printf(" search id: %d in %s\n", old_id, p->name); if (p->clip_to_id == old_id) p->clip_to_id = new_id; if (p->dragable.confine_id == old_id) p->dragable.confine_id = new_id; /* ...in default description */ - d = p->default_desc; - c = &d->common; - //printf(" search in %s (%s)\n", p->name, d->state.name); - if (c->rel1.id_x == old_id) c->rel1.id_x = new_id; - if (c->rel1.id_y == old_id) c->rel1.id_y = new_id; - if (c->rel2.id_x == old_id) c->rel2.id_x = new_id; - if (c->rel2.id_y == old_id) c->rel2.id_y = new_id; - if (d->text.id_source == old_id) d->text.id_source = new_id; - if (d->text.id_text_source == old_id) d->text.id_text_source = new_id; - /* ...and in all other descriptions */ - EINA_LIST_FOREACH(p->other_desc, ll, d) - { - c = &d->common; + _edje_part_description_id_set(p->type, p->default_desc, old_id, new_id); - //printf(" search in %s (%s)\n", p->name, d->state.name); - if (c->rel1.id_x == old_id) c->rel1.id_x = new_id; - if (c->rel1.id_y == old_id) c->rel1.id_y = new_id; - if (c->rel2.id_x == old_id) c->rel2.id_x = new_id; - if (c->rel2.id_y == old_id) c->rel2.id_y = new_id; - if (d->text.id_source == old_id) d->text.id_source = new_id; - if (d->text.id_text_source == old_id) d->text.id_text_source = new_id; - } + /* ...and in all other descriptions */ + for (k = 0; k < p->other_count; ++k) + _edje_part_description_id_set(p->type, p->other_desc[k], old_id, new_id); } /*...and also in programs targets */ @@ -539,6 +544,32 @@ _edje_part_id_set(Edje *ed, Edje_Real_Part *rp, int new_id) ed->table_parts[new_id] = rp; } +static void +_edje_part_description_id_switch(int type, Edje_Part_Description_Common *c, int id1, int id2) +{ + if (c->rel1.id_x == id1) c->rel1.id_x = id2; + else if (c->rel1.id_x == id2) c->rel1.id_x = id1; + if (c->rel1.id_y == id1) c->rel1.id_y = id2; + else if (c->rel1.id_y == id2) c->rel1.id_y = id1; + if (c->rel2.id_x == id1) c->rel2.id_x = id2; + else if (c->rel2.id_x == id2) c->rel2.id_x = id1; + if (c->rel2.id_y == id1) c->rel2.id_y = id2; + else if (c->rel2.id_y == id2) c->rel2.id_y = id1; + + if (type == EDJE_PART_TYPE_TEXT + || type == EDJE_PART_TYPE_TEXTBLOCK) + { + Edje_Part_Description_Text *t; + + t = (Edje_Part_Description_Text *) c; + + if (t->text.id_source == id1) t->text.id_source = id2; + else if (t->text.id_source == id2) t->text.id_source = id1; + if (t->text.id_text_source == id1) t->text.id_text_source = id2; + else if (t->text.id_text_source == id2) t->text.id_text_source = id2; + } +} + static void _edje_parts_id_switch(Edje *ed, Edje_Real_Part *rp1, Edje_Real_Part *rp2) { @@ -550,8 +581,8 @@ _edje_parts_id_switch(Edje *ed, Edje_Real_Part *rp1, Edje_Real_Part *rp2) int id1; int id2; Eina_List *l, *ll; - Edje_Part *p; Edje_Program *epr; + unsigned int i; //printf("SWITCH ID OF PART %d AND %d\n", rp1->part->id, rp2->part->id); @@ -570,11 +601,12 @@ _edje_parts_id_switch(Edje *ed, Edje_Real_Part *rp1, Edje_Real_Part *rp2) ed->table_parts[id2] = rp1; // Fix all the dependecies in all parts... - EINA_LIST_FOREACH(ed->collection->parts, l, p) + for (i = 0; i < ed->collection->parts_count; ++i) { - Eina_List *ll; - Edje_Part_Description *d; - Edje_Part_Description_Common *c; + unsigned int j; + Edje_Part *p; + + p = ed->collection->parts[i]; //printf(" search id: %d in %s\n", old_id, p->name); if (p->clip_to_id == id1) p->clip_to_id = id2; @@ -583,40 +615,13 @@ _edje_parts_id_switch(Edje *ed, Edje_Real_Part *rp1, Edje_Real_Part *rp2) else if (p->dragable.confine_id == id2) p->dragable.confine_id = id1; // ...in default description - d = p->default_desc; - c = &d->common; - // printf(" search in %s (%s)\n", p->name, d->state.name); - if (c->rel1.id_x == id1) c->rel1.id_x = id2; - else if (c->rel1.id_x == id2) c->rel1.id_x = id1; - if (c->rel1.id_y == id1) c->rel1.id_y = id2; - else if (c->rel1.id_y == id2) c->rel1.id_y = id1; - if (c->rel2.id_x == id1) c->rel2.id_x = id2; - else if (c->rel2.id_x == id2) c->rel2.id_x = id1; - if (c->rel2.id_y == id1) c->rel2.id_y = id2; - else if (c->rel2.id_y == id2) c->rel2.id_y = id1; - if (d->text.id_source == id1) d->text.id_source = id2; - else if (d->text.id_source == id2) d->text.id_source = id1; - if (d->text.id_text_source == id1) d->text.id_text_source = id2; - else if (d->text.id_text_source == id2) d->text.id_text_source = id2; + _edje_part_description_id_switch(p->type, p->default_desc, id1, id2); + // ...and in all other descriptions - EINA_LIST_FOREACH(p->other_desc, ll, d) - { - c = &d->common; - //printf(" search in %s (%s)\n", p->name, d->state.name); - if (c->rel1.id_x == id1) c->rel1.id_x = id2; - else if (c->rel1.id_x == id2) c->rel1.id_x = id1; - if (c->rel1.id_y == id1) c->rel1.id_y = id2; - else if (c->rel1.id_y == id2) c->rel1.id_y = id1; - if (c->rel2.id_x == id1) c->rel2.id_x = id2; - else if (c->rel2.id_x == id2) c->rel2.id_x = id1; - if (c->rel2.id_y == id1) c->rel2.id_y = id2; - else if (c->rel2.id_y == id2) c->rel2.id_y = id1; - if (d->text.id_source == id1) d->text.id_source = id2; - else if (d->text.id_source == id2) d->text.id_source = id1; - if (d->text.id_text_source == id1) d->text.id_text_source = id2; - else if (d->text.id_text_source == id2) d->text.id_text_source = id2; - } + for (j = 0; j < p->other_count; ++j) + _edje_part_description_id_switch(p->type, p->other_desc[j], id1, id2); } + //...and also in programs targets EINA_LIST_FOREACH(ed->collection->programs, l, epr) { @@ -641,8 +646,7 @@ _edje_fix_parts_id(Edje *ed) * After the execution of this function all parts will have a right * (uniqe & ordered) id. The table_parts is also updated. */ - Eina_List *l; - Edje_Part *p; + unsigned int i; int correct_id; int count; @@ -652,8 +656,12 @@ _edje_fix_parts_id(Edje *ed) /* Give a correct id to all the parts */ correct_id = 0; - EINA_LIST_FOREACH(ed->collection->parts, l, p) + for (i = 0; i < ed->collection->parts_count; ++i) { + Edje_Part *p; + + p = ed->collection->parts[i]; + //printf(" [%d]Checking part: %s id: %d\n", correct_id, p->name, p->id); if (p->id != correct_id) _edje_part_id_set(ed, ed->table_parts[p->id], correct_id); @@ -662,7 +670,7 @@ _edje_fix_parts_id(Edje *ed) } /* If we have removed some parts realloc table_parts */ - count = eina_list_count(ed->collection->parts); + count = ed->collection->parts_count; if (count != ed->table_parts_size) { ed->table_parts = realloc(ed->table_parts, sizeof(Edje_Real_Part *) * count); @@ -980,7 +988,7 @@ edje_edit_group_del(Evas_Object *obj, const char *group_name) eet_close(eetf); /* Free Group */ - if (die) _edje_collection_free(ed->file, die); + if (die) _edje_collection_free(ed->file, die, e); /* we need to save everything to make sure the file won't have broken * references the next time is loaded */ @@ -1060,9 +1068,9 @@ FUNC_GROUP_ACCESSOR(max, h); EAPI Eina_List * edje_edit_group_data_list_get(Evas_Object * obj) { + Eina_Iterator *it; Eina_List *datas; - Eina_List *l; - Edje_Data *d; + const char *key; GET_ED_OR_RETURN(NULL); @@ -1070,8 +1078,12 @@ edje_edit_group_data_list_get(Evas_Object * obj) return NULL; datas = NULL; - EINA_LIST_FOREACH(ed->collection->data, l, d) - datas = eina_list_append(datas, eina_stringshare_add(d->key)); + it = eina_hash_iterator_key_new(ed->collection->data); + + EINA_ITERATOR_FOREACH(it, key) + datas = eina_list_append(datas, eina_stringshare_add(key)); + + eina_iterator_free(it); return datas; } @@ -1101,31 +1113,18 @@ edje_edit_data_list_get(Evas_Object * obj) EAPI Eina_Bool edje_edit_group_data_add(Evas_Object *obj, const char *key, const char *value) { - Edje_Data *new; - Edje_Data *d; - Eina_List *l; - int len; - GET_ED_OR_RETURN(EINA_FALSE); if (!key || !ed->file || !ed->collection) return EINA_FALSE; - len = strlen(key); - EINA_LIST_FOREACH(ed->collection->data, l, d) - if ((d->key) && (!strncmp(d->key, key, len))) - return EINA_FALSE; + if (!ed->collection->data) + ed->collection->data = eina_hash_string_small_new(NULL); - new = _alloc(sizeof(Edje_Data)); - if (!new) return EINA_FALSE; + if (eina_hash_find(ed->collection->data, key)) + return EINA_FALSE; - new->key = (char*)eina_stringshare_add(key); - if (value) new->value = (char*)eina_stringshare_add(value); - else new->value = NULL; - - ed->collection->data = eina_list_append(ed->collection->data, new); - - return EINA_TRUE; + return eina_hash_add(ed->collection->data, key, eina_stringshare_add(value)); } EAPI Eina_Bool @@ -1147,29 +1146,18 @@ edje_edit_data_add(Evas_Object *obj, const char *itemname, const char *value) EAPI Eina_Bool edje_edit_group_data_del(Evas_Object *obj, const char *key) { - Eina_List *l; - Edje_Data *d; - int len; + const char *value; GET_ED_OR_RETURN(EINA_FALSE); if (!key || !ed->file || !ed->collection) return EINA_FALSE; - len = strlen(key); - EINA_LIST_FOREACH(ed->collection->data, l, d) - { - if (strncmp(d->key, key, len) == 0) - { - _edje_if_string_free(ed, d->key); - _edje_if_string_free(ed, d->value); - ed->collection->data = eina_list_remove(ed->collection->data, d); - free(d); - return EINA_TRUE; - } - } + value = eina_hash_find(ed->collection->data, key); + if (!value) return EINA_FALSE; - return EINA_FALSE; + _edje_if_string_free(ed, value); + return eina_hash_del(ed->collection->data, key, value); } EAPI Eina_Bool @@ -1186,21 +1174,16 @@ edje_edit_data_del(Evas_Object *obj, const char *itemname) EAPI const char * edje_edit_group_data_value_get(Evas_Object * obj, char *key) { - Eina_List *l; - Edje_Data *d; - int len; + const char *value; GET_ED_OR_RETURN(NULL); if (!key || !ed->file || !ed->collection) return NULL; - len = strlen(key); - EINA_LIST_FOREACH(ed->collection->data, l, d) - if (strncmp(d->key, key, len) == 0) - return eina_stringshare_add(d->value); - - return NULL; + value = eina_hash_find(ed->collection->data, key); + if (value) value = eina_stringshare_add(value); + return value; } EAPI const char * @@ -1217,23 +1200,20 @@ edje_edit_data_value_get(Evas_Object * obj, char *itemname) EAPI Eina_Bool edje_edit_group_data_value_set(Evas_Object *obj, const char *key, const char *value) { - Eina_List *l; - Edje_Data *d; - int len; + const char *old_value; GET_ED_OR_RETURN(EINA_FALSE); if (!key || !value || !ed->file || !ed->collection) return EINA_FALSE; - len = strlen(key); - EINA_LIST_FOREACH(ed->collection->data, l, d) - if (strncmp(d->key, key, len) == 0) - { - _edje_if_string_free(ed, d->value); - d->value = (char*)eina_stringshare_add(value); - return EINA_TRUE; - } + old_value = eina_hash_find(ed->collection->data, key); + if (old_value) + { + eina_hash_modify(ed->collection->data, key, value); + _edje_if_string_free(ed, old_value); + return EINA_TRUE; + } return EINA_FALSE; } @@ -1257,9 +1237,7 @@ edje_edit_data_value_set(Evas_Object *obj, const char *itemname, const char *val EAPI Eina_Bool edje_edit_group_data_name_set(Evas_Object *obj, const char *key, const char *new_key) { - Eina_List *l; - Edje_Data *d; - int len; + const char *value; GET_ED_OR_RETURN(EINA_FALSE); @@ -1267,15 +1245,12 @@ edje_edit_group_data_name_set(Evas_Object *obj, const char *key, const char *ne return EINA_FALSE; } - len = strlen(key); - EINA_LIST_FOREACH(ed->collection->data, l, d) { - if (strncmp(d->key, key, len) == 0) - { - _edje_if_string_free(ed, d->key); - d->key = (char*)eina_stringshare_add(new_key); - return EINA_TRUE; - } - } + value = eina_hash_find(ed->collection->data, key); + if (value) + { + eina_hash_del(ed->collection->data, key, value); + return eina_hash_add(ed->collection->data, new_key, value); + } return EINA_FALSE; } @@ -1808,8 +1783,10 @@ Eina_Bool _edje_edit_real_part_add(Evas_Object *obj, const char *name, Edje_Part_Type type, const char *source) { Edje_Part_Collection *pc; + Edje_Part **tmp; Edje_Part *ep; Edje_Real_Part *rp; + int id; GET_ED_OR_RETURN(EINA_FALSE); @@ -1833,9 +1810,21 @@ _edje_edit_real_part_add(Evas_Object *obj, const char *name, Edje_Part_Type type /* Init Edje_Part */ pc = ed->collection; - pc->parts = eina_list_append(pc->parts, ep); - ep->id = eina_list_count(pc->parts) - 1; + tmp = realloc(pc->parts, (pc->parts_count + 1) * sizeof (Edje_Part *)); + if (!tmp) + { + free(ep); + free(rp); + return EINA_FALSE; + } + + id = pc->parts_count++; + + pc->parts = tmp; + pc->parts[id] = ep; + + ep->id = id; ep->type = type; ep->name = eina_stringshare_add(name); ep->mouse_events = 1; @@ -1950,9 +1939,12 @@ edje_edit_part_external_add(Evas_Object *obj, const char *name, const char *sour EAPI Eina_Bool edje_edit_part_del(Evas_Object *obj, const char* part) { - Edje_Part *ep; + Edje_Part_Collection_Directory_Entry *ce; Edje_Part_Collection *pc; + Edje_Part *ep; + unsigned int k; int id; + int i; GET_RP_OR_RETURN(EINA_FALSE); @@ -1964,7 +1956,6 @@ edje_edit_part_del(Evas_Object *obj, const char* part) //if (ed->table_parts_size <= 1) return EINA_FALSE; //don't remove the last part /* Unlik Edje_Real_Parts that link to the removed one */ - int i; for (i = 0; i < ed->table_parts_size; i++) { Edje_Real_Part *real; @@ -2010,24 +2001,23 @@ edje_edit_part_del(Evas_Object *obj, const char* part) /* Remove part from parts list */ pc = ed->collection; - pc->parts = eina_list_remove(pc->parts, ep); + pc->parts[ep->id] = NULL; /* During save stage we need to garbage collect this empty id. */ _edje_fix_parts_id(ed); /* Free Edje_Part and all descriptions */ + ce = eina_hash_find(ed->file->collection, ep->name); + _edje_if_string_free(ed, ep->name); if (ep->default_desc) { - _edje_collection_free_part_description_free(ep->default_desc, 0); + _edje_collection_free_part_description_free(ep->type, ep->default_desc, ce, 0); ep->default_desc = NULL; } - while (ep->other_desc) - { - Edje_Part_Description *desc; - desc = eina_list_data_get(ep->other_desc); - ep->other_desc = eina_list_remove(ep->other_desc, desc); - _edje_collection_free_part_description_free(desc, 0); - } + for (k = 0; k < ep->other_count; ++k) + _edje_collection_free_part_description_free(ep->type, ep->other_desc[k], ce, 0); + + free(ep->other_desc); free(ep); /* Free Edje_Real_Part */ @@ -2081,6 +2071,7 @@ edje_edit_part_restack_below(Evas_Object *obj, const char* part) { Edje_Part_Collection *group; Edje_Real_Part *prev; + Edje_Part *swap; GET_RP_OR_RETURN(EINA_FALSE); @@ -2091,8 +2082,10 @@ edje_edit_part_restack_below(Evas_Object *obj, const char* part) /* update parts list */ prev = ed->table_parts[(rp->part->id - 1) % ed->table_parts_size]; - group->parts = eina_list_remove(group->parts, rp->part); - group->parts = eina_list_prepend_relative(group->parts, rp->part, prev->part); + + swap = group->parts[rp->part->id]; + group->parts[rp->part->id] = group->parts[prev->part->id]; + group->parts[prev->part->id] = swap; _edje_parts_id_switch(ed, rp, prev); @@ -2108,6 +2101,7 @@ edje_edit_part_restack_above(Evas_Object *obj, const char* part) { Edje_Part_Collection *group; Edje_Real_Part *next; + Edje_Part *swap; GET_RP_OR_RETURN(EINA_FALSE); @@ -2119,8 +2113,10 @@ edje_edit_part_restack_above(Evas_Object *obj, const char* part) /* update parts list */ next = ed->table_parts[(rp->part->id + 1) % ed->table_parts_size]; - group->parts = eina_list_remove(group->parts, rp->part); - group->parts = eina_list_append_relative(group->parts, rp->part, next->part); + + swap = group->parts[rp->part->id]; + group->parts[rp->part->id] = group->parts[next->part->id]; + group->parts[next->part->id] = swap; /* update ids */ _edje_parts_id_switch(ed, rp, next); @@ -2151,14 +2147,14 @@ edje_edit_part_selected_state_get(Evas_Object *obj, const char *part, double *va return eina_stringshare_add("default"); } - if (value) *value = rp->chosen_description->common.state.value; - return eina_stringshare_add(rp->chosen_description->common.state.name); + if (value) *value = rp->chosen_description->state.value; + return eina_stringshare_add(rp->chosen_description->state.name); } EAPI Eina_Bool edje_edit_part_selected_state_set(Evas_Object *obj, const char *part, const char *state, double value) { - Edje_Part_Description *pd; + Edje_Part_Description_Common *pd; GET_RP_OR_RETURN(EINA_FALSE); @@ -2166,7 +2162,7 @@ edje_edit_part_selected_state_set(Evas_Object *obj, const char *part, const char if (!pd) return EINA_FALSE; //printf("EDJE: Set state: %s %f\n", pd->state.name, pd->state.value); - _edje_part_description_apply(ed, rp, pd->common.state.name, pd->common.state.value, NULL, 0.0); + _edje_part_description_apply(ed, rp, pd->state.name, pd->state.value, NULL, 0.0); edje_object_calc_force(obj); return EINA_TRUE; @@ -2505,8 +2501,7 @@ edje_edit_part_states_list_get(Evas_Object *obj, const char *part) { char state_name[PATH_MAX]; Eina_List *states = NULL; - Eina_List *l; - Edje_Part_Description *state; + unsigned int i; GET_RP_OR_RETURN(NULL); @@ -2518,17 +2513,20 @@ edje_edit_part_states_list_get(Evas_Object *obj, const char *part) states = NULL; //append default state - state = rp->part->default_desc; snprintf(state_name, PATH_MAX, - "%s %.2f", state->common.state.name, state->common.state.value); + "%s %.2f", + rp->part->default_desc->state.name, + rp->part->default_desc->state.value); states = eina_list_append(states, eina_stringshare_add(state_name)); //printf("NEW STATE def: %s\n", state->state.name); //append other states - EINA_LIST_FOREACH(rp->part->other_desc, l, state) + for (i = 0; i < rp->part->other_count; ++i) { snprintf(state_name, sizeof(state_name), - "%s %.2f", state->common.state.name, state->common.state.value); + "%s %.2f", + rp->part->other_desc[i]->state.name, + rp->part->other_desc[i]->state.value); states = eina_list_append(states, eina_stringshare_add(state_name)); //printf("NEW STATE: %s\n", state_name); } @@ -2560,8 +2558,8 @@ edje_edit_state_name_set(Evas_Object *obj, const char *part, const char *state, Edje_Program_Target *t = eina_list_data_get(epr->targets); if (t->id == part_id && - !strcmp(epr->state, pd->common.state.name) && - pd->common.state.value == epr->value) + !strcmp(epr->state, pd->state.name) && + pd->state.value == epr->value) { _edje_if_string_free(ed, epr->state); epr->state = eina_stringshare_add(new_name); @@ -2571,10 +2569,10 @@ edje_edit_state_name_set(Evas_Object *obj, const char *part, const char *state, } /* set name */ - _edje_if_string_free(ed, pd->common.state.name); - pd->common.state.name = (char *)eina_stringshare_add(new_name); + _edje_if_string_free(ed, pd->state.name); + pd->state.name = (char *)eina_stringshare_add(new_name); /* set value */ - pd->common.state.value = new_value; + pd->state.value = new_value; return EINA_TRUE; } @@ -2582,7 +2580,9 @@ edje_edit_state_name_set(Evas_Object *obj, const char *part, const char *state, EAPI void edje_edit_state_del(Evas_Object *obj, const char *part, const char *state, double value) { - Edje_Part_Description *pd; + Edje_Part_Collection_Directory_Entry *ce; + Edje_Part_Description_Common *pd; + unsigned int i; GET_RP_OR_RETURN(); @@ -2597,86 +2597,165 @@ edje_edit_state_del(Evas_Object *obj, const char *part, const char *state, doubl if (pd == rp->chosen_description) _edje_part_description_apply(ed, rp, "default", 0.0, NULL, 0.0); - rp->part->other_desc = eina_list_remove(rp->part->other_desc, pd); + ce = eina_hash_find(ed->file->collection, part); - _edje_collection_free_part_description_free(pd, 0); + for (i = 0; i < rp->part->other_count; ++i) + if (pd == rp->part->other_desc[i]) + { + memmove(rp->part->other_desc + i, + rp->part->other_desc + i + 1, + sizeof (Edje_Part_Description_Common*) * (rp->part->other_count - i - 1)); + rp->part->other_count--; + break; + } + + _edje_collection_free_part_description_free(rp->part->type, pd, ce, 0); +} + +static Edje_Part_Description_Common * +_edje_edit_state_alloc(int type, Edje *ed) +{ + Edje_Part_Collection_Directory_Entry *ce; + Edje_Part_Description_Common *pd = NULL; + + ce = eina_hash_find(ed->file->collection, ed->group); + + switch (type) + { + case EDJE_PART_TYPE_RECTANGLE: + pd = eina_mempool_malloc(ce->mp.RECTANGLE, sizeof (Edje_Part_Description_Common)); + memset(pd, 0, sizeof (pd)); + break; + case EDJE_PART_TYPE_SWALLOW: + pd = eina_mempool_malloc(ce->mp.SWALLOW, sizeof (Edje_Part_Description_Common)); + memset(pd, 0, sizeof (pd)); + break; + case EDJE_PART_TYPE_GROUP: + pd = eina_mempool_malloc(ce->mp.GROUP, sizeof (Edje_Part_Description_Common)); + memset(pd, 0, sizeof (pd)); + break; + +#define ALLOC_POOL(Short, Type, Name) \ + case EDJE_PART_TYPE_##Short: \ + { \ + Edje_Part_Description_##Type *Name; \ + \ + Name = eina_mempool_malloc(ce->mp.Short, sizeof (Edje_Part_Description_##Type)); \ + memset(Name, 0, sizeof (Name)); \ + pd = &Name->common; \ + break; \ + } + + ALLOC_POOL(IMAGE, Image, image); + ALLOC_POOL(TEXT, Text, text); + ALLOC_POOL(TEXTBLOCK, Text, text); + ALLOC_POOL(BOX, Box, box); + ALLOC_POOL(TABLE, Table, table); + ALLOC_POOL(EXTERNAL, External, external); + } + + return pd; } EAPI void edje_edit_state_add(Evas_Object *obj, const char *part, const char *name, double value) { - Edje_Part_Description *pd; + Edje_Part_Description_Common *pd; GET_RP_OR_RETURN(); //printf("ADD STATE: %s TO PART: %s\n", name , part); - - pd = _alloc(sizeof(Edje_Part_Description)); + pd = _edje_edit_state_alloc(rp->part->type, ed); if (!pd) return; if (!rp->part->default_desc) - rp->part->default_desc = pd; - else - rp->part->other_desc = eina_list_append(rp->part->other_desc, pd); - - pd->common.state.name = eina_stringshare_add(name); - pd->common.state.value = value; - pd->common.visible = 1; - pd->common.align.x = 0.5; - pd->common.align.y = 0.5; - pd->common.min.w = 0; - pd->common.min.h = 0; - pd->common.fixed.w = 0; - pd->common.fixed.h = 0; - pd->common.max.w = -1; - pd->common.max.h = -1; - pd->common.rel1.relative_x = 0.0; - pd->common.rel1.relative_y = 0.0; - pd->common.rel1.offset_x = 0; - pd->common.rel1.offset_y = 0; - pd->common.rel1.id_x = -1; - pd->common.rel1.id_y = -1; - pd->common.rel2.relative_x = 1.0; - pd->common.rel2.relative_y = 1.0; - pd->common.rel2.offset_x = -1; - pd->common.rel2.offset_y = -1; - pd->common.rel2.id_x = -1; - pd->common.rel2.id_y = -1; - pd->image.id = -1; - pd->image.fill.smooth = 1; - pd->image.fill.pos_rel_x = 0.0; - pd->image.fill.pos_abs_x = 0; - pd->image.fill.rel_x = 1.0; - pd->image.fill.abs_x = 0; - pd->image.fill.pos_rel_y = 0.0; - pd->image.fill.pos_abs_y = 0; - pd->image.fill.rel_y = 1.0; - pd->image.fill.abs_y = 0; - pd->image.fill.angle = 0; - pd->image.fill.spread = 0; - pd->image.fill.type = EDJE_FILL_TYPE_SCALE; - pd->common.color_class = NULL; - pd->common.color.r = 255; - pd->common.color.g = 255; - pd->common.color.b = 255; - pd->common.color.a = 255; - pd->common.color2.r = 0; - pd->common.color2.g = 0; - pd->common.color2.b = 0; - pd->common.color2.a = 255; - pd->text.color3.r = 0; - pd->text.color3.g = 0; - pd->text.color3.b = 0; - pd->text.color3.a = 128; - pd->text.align.x = 0.5; - pd->text.align.y = 0.5; - pd->text.id_source = -1; - pd->text.id_text_source = -1; - - if ((rp->part->type == EDJE_PART_TYPE_EXTERNAL) && (rp->part->source)) { + rp->part->default_desc = pd; + } + else + { + Edje_Part_Description_Common **tmp; + + tmp = realloc(rp->part->other_desc, + sizeof (Edje_Part_Description_Common *) * (rp->part->other_count + 1)); + rp->part->other_desc[rp->part->other_count++] = pd; + } + + pd->state.name = eina_stringshare_add(name); + pd->state.value = value; + pd->visible = 1; + pd->align.x = 0.5; + pd->align.y = 0.5; + pd->min.w = 0; + pd->min.h = 0; + pd->fixed.w = 0; + pd->fixed.h = 0; + pd->max.w = -1; + pd->max.h = -1; + pd->rel1.relative_x = 0.0; + pd->rel1.relative_y = 0.0; + pd->rel1.offset_x = 0; + pd->rel1.offset_y = 0; + pd->rel1.id_x = -1; + pd->rel1.id_y = -1; + pd->rel2.relative_x = 1.0; + pd->rel2.relative_y = 1.0; + pd->rel2.offset_x = -1; + pd->rel2.offset_y = -1; + pd->rel2.id_x = -1; + pd->rel2.id_y = -1; + pd->color_class = NULL; + pd->color.r = 255; + pd->color.g = 255; + pd->color.b = 255; + pd->color.a = 255; + pd->color2.r = 0; + pd->color2.g = 0; + pd->color2.b = 0; + pd->color2.a = 255; + + if (rp->part->type == EDJE_PART_TYPE_TEXT + || rp->part->type == EDJE_PART_TYPE_TEXTBLOCK) + { + Edje_Part_Description_Text *text; + + text = (Edje_Part_Description_Text*) pd; + + text->text.color3.r = 0; + text->text.color3.g = 0; + text->text.color3.b = 0; + text->text.color3.a = 128; + text->text.align.x = 0.5; + text->text.align.y = 0.5; + text->text.id_source = -1; + text->text.id_text_source = -1; + } + else if (rp->part->type == EDJE_PART_TYPE_IMAGE) + { + Edje_Part_Description_Image *img; + + img = (Edje_Part_Description_Image*) pd; + + img->image.id = -1; + img->image.fill.smooth = 1; + img->image.fill.pos_rel_x = 0.0; + img->image.fill.pos_abs_x = 0; + img->image.fill.rel_x = 1.0; + img->image.fill.abs_x = 0; + img->image.fill.pos_rel_y = 0.0; + img->image.fill.pos_abs_y = 0; + img->image.fill.rel_y = 1.0; + img->image.fill.abs_y = 0; + img->image.fill.angle = 0; + img->image.fill.spread = 0; + img->image.fill.type = EDJE_FILL_TYPE_SCALE; + } + else if ((rp->part->type == EDJE_PART_TYPE_EXTERNAL) && (rp->part->source)) + { + Edje_Part_Description_External *external; Edje_External_Param_Info *pi; + external = (Edje_Part_Description_External*) pd; pi = (Edje_External_Param_Info *)edje_external_param_info_get(rp->part->source); while (pi && pi->name) { @@ -2707,11 +2786,11 @@ edje_edit_state_add(Evas_Object *obj, const char *part, const char *name, double default: ERR("unknown external parameter type '%d'", p->type); } - pd->external_params = eina_list_append(pd->external_params, p); + external->external_params = eina_list_append(external->external_params, p); pi++; } - if (pd->external_params) - rp->param1.external_params = _edje_external_params_parse(rp->swallowed_object, pd->external_params); + if (external->external_params) + rp->param1.external_params = _edje_external_params_parse(rp->swallowed_object, external->external_params); } } @@ -2725,7 +2804,7 @@ edje_edit_state_exist(Evas_Object *obj, const char *part, const char *state, dou EAPI Eina_Bool edje_edit_state_copy(Evas_Object *obj, const char *part, const char *from, double val_from, const char *to, double val_to) { - Edje_Part_Description *pdfrom, *pdto; + Edje_Part_Description_Common *pdfrom, *pdto; Edje_Part_Image_Id *i; Edje_External_Param *p; Eina_List *l; @@ -2738,144 +2817,122 @@ edje_edit_state_copy(Evas_Object *obj, const char *part, const char *from, doubl pdto = _edje_part_description_find_byname(eed, part, to, val_to); if (!pdto) { - pdto = _alloc(sizeof(Edje_Part_Description)); - if (!pdto) - return EINA_FALSE; + Edje_Part_Description_Common **tmp; + + pdto = _edje_edit_state_alloc(rp->part->type, ed); + if (!pdto) return EINA_FALSE; /* No need to check for default desc, at this point it must exist */ - rp->part->other_desc = eina_list_append(rp->part->other_desc, pdto); - pdto->common.state.name = eina_stringshare_add(to); - pdto->common.state.value = val_to; + + tmp = realloc(rp->part->other_desc, + sizeof (Edje_Part_Description_Common *) * (rp->part->other_count + 1)); + rp->part->other_desc[rp->part->other_count++] = pdto; + + pdto->state.name = eina_stringshare_add(to); + pdto->state.value = val_to; } -#define PD_COPY(_x) pdto->_x = pdfrom->_x -#define PD_STRING_COPY(_x) _edje_if_string_free(ed, pdto->_x); \ - pdto->_x = (char *)eina_stringshare_add(pdfrom->_x) - PD_COPY(common.align.x); - PD_COPY(common.align.y); - PD_COPY(common.fixed.w); - PD_COPY(common.fixed.h); - PD_COPY(common.min.w); - PD_COPY(common.min.h); - PD_COPY(common.max.w); - PD_COPY(common.max.h); - PD_COPY(common.aspect.min); - PD_COPY(common.aspect.max); - PD_COPY(common.aspect.prefer); - PD_COPY(common.rel1.relative_x); - PD_COPY(common.rel1.relative_y); - PD_COPY(common.rel1.offset_x); - PD_COPY(common.rel1.offset_y); - PD_COPY(common.rel1.id_x); - PD_COPY(common.rel1.id_y); - PD_COPY(common.rel2.relative_x); - PD_COPY(common.rel2.relative_y); - PD_COPY(common.rel2.offset_x); - PD_COPY(common.rel2.offset_y); - PD_COPY(common.rel2.id_x); - PD_COPY(common.rel2.id_y); - PD_COPY(image.id); - EINA_LIST_FREE(pdto->image.tween_list, i) - free(i); - EINA_LIST_FOREACH(pdfrom->image.tween_list, l, i) +#define PD_STRING_COPY(To, From, _x) \ + _edje_if_string_free(ed, To->_x); \ + To->_x = (char *)eina_stringshare_add(From->_x); + + /* Copy all value */ + *pdto = *pdfrom; + /* Update pointer. */ + PD_STRING_COPY(pdto, pdfrom, color_class); + + switch (rp->part->type) { - Edje_Part_Image_Id *new_i; - new_i = _alloc(sizeof(Edje_Part_Image_Id)); - /* error checking? What to do if failed? Rollback, abort? */ - new_i->id = i->id; - pdto->image.tween_list = eina_list_append(pdto->image.tween_list, new_i); + case EDJE_PART_TYPE_IMAGE: + { + Edje_Part_Description_Image *img_to = (Edje_Part_Description_Image*) pdto; + Edje_Part_Description_Image *img_from = (Edje_Part_Description_Image*) pdfrom; + + img_to->image = img_from->image; + + /* Update pointers. */ + EINA_LIST_FREE(img_to->image.tween_list, i) + free(i); + + EINA_LIST_FOREACH(img_from->image.tween_list, l, i) + { + Edje_Part_Image_Id *new_i; + new_i = _alloc(sizeof(Edje_Part_Image_Id)); + /* error checking? What to do if failed? Rollbacgk, abort? */ + new_i->id = i->id; + img_to->image.tween_list = eina_list_append(img_to->image.tween_list, new_i); + } + } + case EDJE_PART_TYPE_TEXT: + case EDJE_PART_TYPE_TEXTBLOCK: + { + Edje_Part_Description_Text *text_to = (Edje_Part_Description_Text*) pdto; + Edje_Part_Description_Text *text_from = (Edje_Part_Description_Text*) pdfrom; + + text_to->text = text_from->text; + + /* Update pointers. */ + PD_STRING_COPY(text_to, text_from, text.text); + PD_STRING_COPY(text_to, text_from, text.text_class); + PD_STRING_COPY(text_to, text_from, text.style); + PD_STRING_COPY(text_to, text_from, text.font); + PD_STRING_COPY(text_to, text_from, text.repch); + } + case EDJE_PART_TYPE_BOX: + { + Edje_Part_Description_Box *box_to = (Edje_Part_Description_Box*) pdto; + Edje_Part_Description_Box *box_from = (Edje_Part_Description_Box*) pdfrom; + + box_to->box = box_from->box; + + PD_STRING_COPY(box_to, box_from, box.layout); + PD_STRING_COPY(box_to, box_from, box.alt_layout); + } + case EDJE_PART_TYPE_TABLE: + { + Edje_Part_Description_Table *table_to = (Edje_Part_Description_Table*) pdto; + Edje_Part_Description_Table *table_from = (Edje_Part_Description_Table*) pdfrom; + + table_to->table = table_from->table; + } + case EDJE_PART_TYPE_EXTERNAL: + { + Edje_Part_Description_External *ext_to = (Edje_Part_Description_External*) pdto; + Edje_Part_Description_External *ext_from = (Edje_Part_Description_External*) pdfrom; + + /* XXX: optimize this, most likely we don't need to remove and add */ + EINA_LIST_FREE(ext_to->external_params, p) + { + _edje_if_string_free(ed, p->name); + if (p->s) + _edje_if_string_free(ed, p->s); + free(p); + } + EINA_LIST_FOREACH(ext_from->external_params, l, p) + { + Edje_External_Param *new_p; + new_p = _alloc(sizeof(Edje_External_Param)); + new_p->name = eina_stringshare_add(p->name); + new_p->type = p->type; + switch (p->type) + { + case EDJE_EXTERNAL_PARAM_TYPE_INT: + new_p->i = p->i; + break; + case EDJE_EXTERNAL_PARAM_TYPE_DOUBLE: + new_p->d = p->d; + break; + case EDJE_EXTERNAL_PARAM_TYPE_CHOICE: + case EDJE_EXTERNAL_PARAM_TYPE_STRING: + new_p->s = eina_stringshare_add(p->s); + break; + default: + break; + } + ext_to->external_params = eina_list_append(ext_to->external_params, new_p); + } + } } - PD_COPY(image.border.l); - PD_COPY(image.border.r); - PD_COPY(image.border.t); - PD_COPY(image.border.b); - PD_COPY(image.border.no_fill); - PD_COPY(image.fill.pos_rel_x); - PD_COPY(image.fill.rel_x); - PD_COPY(image.fill.pos_rel_y); - PD_COPY(image.fill.rel_y); - PD_COPY(image.fill.pos_abs_x); - PD_COPY(image.fill.abs_x); - PD_COPY(image.fill.pos_abs_y); - PD_COPY(image.fill.abs_y); - PD_COPY(image.fill.angle); - PD_COPY(image.fill.spread); - PD_COPY(image.fill.smooth); - PD_COPY(image.fill.type); - PD_STRING_COPY(common.color_class); - PD_STRING_COPY(text.text); - PD_STRING_COPY(text.text_class); - PD_STRING_COPY(text.style); - PD_STRING_COPY(text.font); - PD_STRING_COPY(text.repch); - PD_COPY(text.align.x); - PD_COPY(text.align.y); - PD_COPY(text.elipsis); - PD_COPY(text.size); - PD_COPY(text.id_source); - PD_COPY(text.id_text_source); - PD_COPY(text.fit_x); - PD_COPY(text.fit_y); - PD_COPY(text.min_x); - PD_COPY(text.min_y); - PD_COPY(text.max_x); - PD_COPY(text.max_y); - PD_STRING_COPY(box.layout); - PD_STRING_COPY(box.alt_layout); - PD_COPY(box.align.x); - PD_COPY(box.align.y); - PD_COPY(box.padding.x); - PD_COPY(box.padding.y); - PD_COPY(box.min.h); - PD_COPY(box.min.v); - PD_COPY(table.homogeneous); - PD_COPY(table.align.x); - PD_COPY(table.align.y); - PD_COPY(table.padding.x); - PD_COPY(table.padding.y); - PD_COPY(common.color.r); - PD_COPY(common.color.g); - PD_COPY(common.color.b); - PD_COPY(common.color.a); - PD_COPY(common.color2.r); - PD_COPY(common.color2.g); - PD_COPY(common.color2.b); - PD_COPY(common.color2.a); - PD_COPY(text.color3.r); - PD_COPY(text.color3.g); - PD_COPY(text.color3.b); - PD_COPY(text.color3.a); - /* XXX: optimize this, most likely we don't need to remove and add */ - EINA_LIST_FREE(pdto->external_params, p) - { - _edje_if_string_free(ed, p->name); - if (p->s) - _edje_if_string_free(ed, p->s); - free(p); - } - EINA_LIST_FOREACH(pdfrom->external_params, l, p) - { - Edje_External_Param *new_p; - new_p = _alloc(sizeof(Edje_External_Param)); - new_p->name = eina_stringshare_add(p->name); - new_p->type = p->type; - switch (p->type) - { - case EDJE_EXTERNAL_PARAM_TYPE_INT: - new_p->i = p->i; - break; - case EDJE_EXTERNAL_PARAM_TYPE_DOUBLE: - new_p->d = p->d; - break; - case EDJE_EXTERNAL_PARAM_TYPE_CHOICE: - case EDJE_EXTERNAL_PARAM_TYPE_STRING: - new_p->s = eina_stringshare_add(p->s); - break; - default: - break; - } - pdto->external_params = eina_list_append(pdto->external_params, new_p); - } - PD_COPY(common.visible); + #undef PD_STRING_COPY #undef PD_COPY @@ -2887,13 +2944,13 @@ edje_edit_state_copy(Evas_Object *obj, const char *part, const char *from, doubl edje_edit_state_##Sub##_relative_##Value##_get(Evas_Object *obj, const char *part, const char *state, double value) \ { \ GET_PD_OR_RETURN(0); \ - return TO_DOUBLE(pd->common.Sub.relative_##Value); \ + return TO_DOUBLE(pd->Sub.relative_##Value); \ } \ EAPI void \ edje_edit_state_##Sub##_relative_##Value##_set(Evas_Object *obj, const char *part, const char *state, double value, double v) \ { \ GET_PD_OR_RETURN(); \ - pd->common.Sub.relative_##Value = FROM_DOUBLE(v); \ + pd->Sub.relative_##Value = FROM_DOUBLE(v); \ edje_object_calc_force(obj); \ } @@ -2907,13 +2964,13 @@ FUNC_STATE_RELATIVE_DOUBLE(rel2, y); edje_edit_state_##Sub##_offset_##Value##_get(Evas_Object *obj, const char *part, const char *state, double value) \ { \ GET_PD_OR_RETURN(0); \ - return pd->common.Sub.offset_##Value; \ + return pd->Sub.offset_##Value; \ } \ EAPI void \ edje_edit_state_##Sub##_offset_##Value##_set(Evas_Object *obj, const char *part, const char *state, double value, double v) \ { \ GET_PD_OR_RETURN(); \ - pd->common.Sub.offset_##Value = TO_INT(FROM_DOUBLE(v)); \ + pd->Sub.offset_##Value = TO_INT(FROM_DOUBLE(v)); \ edje_object_calc_force(obj); \ } @@ -2930,9 +2987,9 @@ FUNC_STATE_OFFSET_INT(rel2, y); \ GET_PD_OR_RETURN(NULL); \ \ - if (pd->common.Sub.id_##Value == -1) return NULL; \ + if (pd->Sub.id_##Value == -1) return NULL; \ \ - rel = ed->table_parts[pd->common.Sub.id_##Value % ed->table_parts_size]; \ + rel = ed->table_parts[pd->Sub.id_##Value % ed->table_parts_size]; \ \ if (rel->part->name) return eina_stringshare_add(rel->part->name); \ return NULL; \ @@ -2948,10 +3005,10 @@ FUNC_STATE_OFFSET_INT(rel2, y); { \ relp = _edje_real_part_get(ed, to); \ if (!relp) return; \ - pd->common.Sub.id_##Value = relp->part->id; \ + pd->Sub.id_##Value = relp->part->id; \ } \ else \ - pd->common.Sub.id_##Value = -1; \ + pd->Sub.id_##Value = -1; \ \ } //note after this call edje_edit_part_selected_state_set() to update !! need to fix this @@ -2964,46 +3021,77 @@ FUNC_STATE_REL(rel2, x); FUNC_STATE_REL(rel2, y); //colors -#define FUNC_COLOR(Class, Code) \ +#define FUNC_COLOR(Code) \ EAPI void \ - edje_edit_state_color##Code##_get(Evas_Object *obj, const char *part, const char *state, double value, int *r, int *g, int *b, int *a) \ + edje_edit_state_##Code##_get(Evas_Object *obj, const char *part, const char *state, double value, int *r, int *g, int *b, int *a) \ { \ GET_PD_OR_RETURN(); \ \ - if (r) *r = pd->Class.color##Code.r; \ - if (g) *g = pd->Class.color##Code.g; \ - if (b) *b = pd->Class.color##Code.b; \ - if (a) *a = pd->Class.color##Code.a; \ + if (r) *r = pd->Code.r; \ + if (g) *g = pd->Code.g; \ + if (b) *b = pd->Code.b; \ + if (a) *a = pd->Code.a; \ } \ EAPI void \ - edje_edit_state_color##Code##_set(Evas_Object *obj, const char *part, const char *state, double value, int r, int g, int b, int a) \ + edje_edit_state_##Code##_set(Evas_Object *obj, const char *part, const char *state, double value, int r, int g, int b, int a) \ { \ GET_PD_OR_RETURN(); \ \ - if (r > -1 && r < 256) pd->Class.color##Code.r = r; \ - if (g > -1 && g < 256) pd->Class.color##Code.g = g; \ - if (b > -1 && b < 256) pd->Class.color##Code.b = b; \ - if (a > -1 && a < 256) pd->Class.color##Code.a = a; \ - \ + if (r > -1 && r < 256) pd->Code.r = r; \ + if (g > -1 && g < 256) pd->Code.g = g; \ + if (b > -1 && b < 256) pd->Code.b = b; \ + if (a > -1 && a < 256) pd->Code.a = a; \ + \ edje_object_calc_force(obj); \ } -FUNC_COLOR(common, ); -FUNC_COLOR(common, 2); -FUNC_COLOR(text, 3); +FUNC_COLOR(color); +FUNC_COLOR(color2); + +EAPI void +edje_edit_state_color3_get(Evas_Object *obj, const char *part, const char *state, double value, int *r, int *g, int *b, int *a) +{ + Edje_Part_Description_Text *txt; + + GET_PD_OR_RETURN(); + + txt = (Edje_Part_Description_Text*) pd; + + if (r) *r = txt->text.color3.r; + if (g) *g = txt->text.color3.g; + if (b) *b = txt->text.color3.b; + if (a) *a = txt->text.color3.a; +} + +EAPI void +edje_edit_state_color3_set(Evas_Object *obj, const char *part, const char *state, double value, int r, int g, int b, int a) +{ + Edje_Part_Description_Text *txt; + + GET_PD_OR_RETURN(); + + txt = (Edje_Part_Description_Text*) pd; + + if (r > -1 && r < 256) txt->text.color3.r = r; + if (g > -1 && g < 256) txt->text.color3.g = g; + if (b > -1 && b < 256) txt->text.color3.b = b; + if (a > -1 && a < 256) txt->text.color3.a = a; + + edje_object_calc_force(obj); +} #define FUNC_STATE_DOUBLE(Class, Value) \ EAPI double \ edje_edit_state_##Class##_##Value##_get(Evas_Object *obj, const char *part, const char *state, double value) \ { \ GET_PD_OR_RETURN(0); \ - return TO_DOUBLE(pd->common.Class.Value); \ + return TO_DOUBLE(pd->Class.Value); \ } \ EAPI void \ edje_edit_state_##Class##_##Value##_set(Evas_Object *obj, const char *part, const char *state, double value, double v) \ { \ GET_PD_OR_RETURN(); \ - pd->common.Class.Value = FROM_DOUBLE(v); \ + pd->Class.Value = FROM_DOUBLE(v); \ edje_object_calc_force(obj); \ } @@ -3012,13 +3100,13 @@ FUNC_COLOR(text, 3); edje_edit_state_##Class##_##Value##_get(Evas_Object *obj, const char *part, const char *state, double value) \ { \ GET_PD_OR_RETURN(0); \ - return pd->common.Class.Value; \ + return pd->Class.Value; \ } \ EAPI void \ edje_edit_state_##Class##_##Value##_set(Evas_Object *obj, const char *part, const char *state, double value, int v) \ { \ GET_PD_OR_RETURN(); \ - pd->common.Class.Value = v; \ + pd->Class.Value = v; \ edje_object_calc_force(obj); \ } @@ -3035,14 +3123,24 @@ FUNC_STATE_DOUBLE(aspect, max); EAPI double \ edje_edit_state_fill_##Type##_relative_##Value##_get(Evas_Object *obj, const char *part, const char *state, double value) \ { \ + Edje_Part_Description_Image *img; \ + \ GET_PD_OR_RETURN(0); \ - return TO_DOUBLE(pd->image.fill.Class##rel_##Value); \ + \ + img = (Edje_Part_Description_Image*) pd; \ + \ + return TO_DOUBLE(img->image.fill.Class##rel_##Value); \ } \ EAPI void \ edje_edit_state_fill_##Type##_relative_##Value##_set(Evas_Object *obj, const char *part, const char *state, double value, double v) \ { \ + Edje_Part_Description_Image *img; \ + \ GET_PD_OR_RETURN(); \ - pd->image.fill.Class##rel_##Value = FROM_DOUBLE(v); \ + \ + img = (Edje_Part_Description_Image*) pd; \ + \ + img->image.fill.Class##rel_##Value = FROM_DOUBLE(v); \ edje_object_calc_force(obj); \ } @@ -3050,14 +3148,24 @@ FUNC_STATE_DOUBLE(aspect, max); EAPI int \ edje_edit_state_fill_##Type##_offset_##Value##_get(Evas_Object *obj, const char *part, const char *state, double value) \ { \ + Edje_Part_Description_Image *img; \ + \ GET_PD_OR_RETURN(0); \ - return pd->image.fill.Class##abs_##Value; \ + \ + img = (Edje_Part_Description_Image*) pd; \ + \ + return img->image.fill.Class##abs_##Value; \ } \ EAPI void \ edje_edit_state_fill_##Type##_offset_##Value##_set(Evas_Object *obj, const char *part, const char *state, double value, double v) \ { \ + Edje_Part_Description_Image *img; \ + \ GET_PD_OR_RETURN(); \ - pd->image.fill.Class##abs_##Value = FROM_DOUBLE(v); \ + \ + img = (Edje_Part_Description_Image*) pd; \ + \ + img->image.fill.Class##abs_##Value = FROM_DOUBLE(v); \ edje_object_calc_force(obj); \ } @@ -3076,7 +3184,7 @@ edje_edit_state_visible_get(Evas_Object *obj, const char *part, const char *stat { GET_PD_OR_RETURN(EINA_FALSE); //printf("Get state visible flag of part: %s state: %s\n", part, state); - return pd->common.visible; + return pd->visible; } EAPI void @@ -3084,8 +3192,8 @@ edje_edit_state_visible_set(Evas_Object *obj, const char *part, const char *stat { GET_PD_OR_RETURN(); //printf("Set state visible flag of part: %s state: %s to: %d\n", part, state, visible); - if (visible) pd->common.visible = 1; - else pd->common.visible = 0; + if (visible) pd->visible = 1; + else pd->visible = 0; edje_object_calc_force(obj); } @@ -3095,7 +3203,7 @@ edje_edit_state_aspect_pref_get(Evas_Object *obj, const char *part, const char * GET_PD_OR_RETURN(0); //printf("GET ASPECT_PREF of state '%s' [%d]\n", state, pd->aspect.prefer); - return pd->common.aspect.prefer; + return pd->aspect.prefer; } EAPI void @@ -3104,7 +3212,7 @@ edje_edit_state_aspect_pref_set(Evas_Object *obj, const char *part, const char * GET_PD_OR_RETURN(); //printf("SET ASPECT_PREF of state '%s' [to: %d]\n", state, pref); - pd->common.aspect.prefer = pref; + pd->aspect.prefer = pref; } EAPI const char* @@ -3112,7 +3220,7 @@ edje_edit_state_color_class_get(Evas_Object *obj, const char *part, const char * { GET_PD_OR_RETURN(NULL); //printf("Get ColorClass of part: %s state: %s\n", part, state); - return eina_stringshare_add(pd->common.color_class); + return eina_stringshare_add(pd->color_class); } EAPI void @@ -3120,25 +3228,34 @@ edje_edit_state_color_class_set(Evas_Object *obj, const char *part, const char * { GET_PD_OR_RETURN(); //printf("Set ColorClass of part: %s state: %s [to: %s]\n", part, state, color_class); - _edje_if_string_free(ed, pd->common.color_class); - pd->common.color_class = (char*)eina_stringshare_add(color_class); + _edje_if_string_free(ed, pd->color_class); + pd->color_class = (char*)eina_stringshare_add(color_class); } EAPI const Eina_List * edje_edit_state_external_params_list_get(Evas_Object *obj, const char *part, const char *state, double value) { + Edje_Part_Description_External *external; + GET_PD_OR_RETURN(NULL); - return pd->external_params; + + external = (Edje_Part_Description_External *) pd; + + return external->external_params; } EAPI Eina_Bool edje_edit_state_external_param_get(Evas_Object *obj, const char *part, const char *state, double value, const char *param, Edje_External_Param_Type *type, void **val) { - Eina_List *l; + Edje_Part_Description_External *external; Edje_External_Param *p; + Eina_List *l; + GET_PD_OR_RETURN(EINA_FALSE); - EINA_LIST_FOREACH(pd->external_params, l, p) + external = (Edje_Part_Description_External *) pd; + + EINA_LIST_FOREACH(external->external_params, l, p) if (!strcmp(p->name, param)) { if (type) *type = p->type; @@ -3168,11 +3285,15 @@ edje_edit_state_external_param_get(Evas_Object *obj, const char *part, const cha EAPI Eina_Bool edje_edit_state_external_param_int_get(Evas_Object *obj, const char *part, const char *state, double value, const char *param, int *val) { - Eina_List *l; + Edje_Part_Description_External *external; Edje_External_Param *p; + Eina_List *l; + GET_PD_OR_RETURN(EINA_FALSE); - EINA_LIST_FOREACH(pd->external_params, l, p) + external = (Edje_Part_Description_External *) pd; + + EINA_LIST_FOREACH(external->external_params, l, p) if (!strcmp(p->name, param)) { if (p->type != EDJE_EXTERNAL_PARAM_TYPE_INT) @@ -3188,11 +3309,15 @@ edje_edit_state_external_param_int_get(Evas_Object *obj, const char *part, const EAPI Eina_Bool edje_edit_state_external_param_bool_get(Evas_Object *obj, const char *part, const char *state, double value, const char *param, Eina_Bool *val) { - Eina_List *l; + Edje_Part_Description_External *external; Edje_External_Param *p; + Eina_List *l; + GET_PD_OR_RETURN(EINA_FALSE); - EINA_LIST_FOREACH(pd->external_params, l, p) + external = (Edje_Part_Description_External *) pd; + + EINA_LIST_FOREACH(external->external_params, l, p) if (!strcmp(p->name, param)) { if (p->type != EDJE_EXTERNAL_PARAM_TYPE_BOOL) @@ -3208,11 +3333,15 @@ edje_edit_state_external_param_bool_get(Evas_Object *obj, const char *part, cons EAPI Eina_Bool edje_edit_state_external_param_double_get(Evas_Object *obj, const char *part, const char *state, double value, const char *param, double *val) { - Eina_List *l; + Edje_Part_Description_External *external; Edje_External_Param *p; + Eina_List *l; + GET_PD_OR_RETURN(EINA_FALSE); - EINA_LIST_FOREACH(pd->external_params, l, p) + external = (Edje_Part_Description_External *) pd; + + EINA_LIST_FOREACH(external->external_params, l, p) if (!strcmp(p->name, param)) { if (p->type != EDJE_EXTERNAL_PARAM_TYPE_DOUBLE) @@ -3228,11 +3357,15 @@ edje_edit_state_external_param_double_get(Evas_Object *obj, const char *part, co EAPI Eina_Bool edje_edit_state_external_param_string_get(Evas_Object *obj, const char *part, const char *state, double value, const char *param, const char **val) { - Eina_List *l; + Edje_Part_Description_External *external; Edje_External_Param *p; + Eina_List *l; + GET_PD_OR_RETURN(EINA_FALSE); - EINA_LIST_FOREACH(pd->external_params, l, p) + external = (Edje_Part_Description_External *) pd; + + EINA_LIST_FOREACH(external->external_params, l, p) if (!strcmp(p->name, param)) { if (p->type != EDJE_EXTERNAL_PARAM_TYPE_STRING) @@ -3248,11 +3381,15 @@ edje_edit_state_external_param_string_get(Evas_Object *obj, const char *part, co EAPI Eina_Bool edje_edit_state_external_param_choice_get(Evas_Object *obj, const char *part, const char *state, double value, const char *param, const char **val) { - Eina_List *l; + Edje_Part_Description_External *external; Edje_External_Param *p; + Eina_List *l; + GET_PD_OR_RETURN(EINA_FALSE); - EINA_LIST_FOREACH(pd->external_params, l, p) + external = (Edje_Part_Description_External *) pd; + + EINA_LIST_FOREACH(external->external_params, l, p) if (!strcmp(p->name, param)) { if (p->type != EDJE_EXTERNAL_PARAM_TYPE_CHOICE) @@ -3281,17 +3418,20 @@ edje_edit_state_external_param_set(Evas_Object *obj, const char *part, const cha { va_list ap; Eina_List *l; - Edje_External_Param *p, old_p; + Edje_Part_Description_External *external; + Edje_External_Param *p = NULL, old_p = { 0, 0, 0, 0, 0 }; Edje_Real_Part *rp; int found = 0; GET_PD_OR_RETURN(EINA_FALSE); + external = (Edje_Part_Description_External *) pd; + rp = _edje_real_part_get(ed, part); va_start(ap, type); - EINA_LIST_FOREACH(pd->external_params, l, p) + EINA_LIST_FOREACH(external->external_params, l, p) if (!strcmp(p->name, param)) { found = 1; @@ -3361,13 +3501,13 @@ edje_edit_state_external_param_set(Evas_Object *obj, const char *part, const cha } if (!found) - pd->external_params = eina_list_append(pd->external_params, p); + external->external_params = eina_list_append(external->external_params, p); _edje_external_parsed_params_free(rp->swallowed_object, rp->param1.external_params); rp->param1.external_params = \ _edje_external_params_parse(rp->swallowed_object, - pd->external_params); + external->external_params); return EINA_TRUE; @@ -3410,12 +3550,15 @@ edje_edit_state_external_param_choice_set(Evas_Object *obj, const char *part, co EAPI const char * edje_edit_state_text_get(Evas_Object *obj, const char *part, const char *state, double value) { + Edje_Part_Description_Text *txt; + GET_PD_OR_RETURN(NULL); + txt = (Edje_Part_Description_Text *) pd; //printf("GET TEXT of state: %s\n", state); - if (pd->text.text) - return eina_stringshare_add(pd->text.text); + if (txt->text.text) + return eina_stringshare_add(txt->text.text); return NULL; } @@ -3423,14 +3566,18 @@ edje_edit_state_text_get(Evas_Object *obj, const char *part, const char *state, EAPI void edje_edit_state_text_set(Evas_Object *obj, const char *part, const char *state, double value, const char *text) { + Edje_Part_Description_Text *txt; + GET_PD_OR_RETURN(); //printf("SET TEXT of state: %s\n", state); if (!text) return; - _edje_if_string_free(ed, pd->text.text); - pd->text.text = (char *)eina_stringshare_add(text); + txt = (Edje_Part_Description_Text *) pd; + + _edje_if_string_free(ed, txt->text.text); + txt->text.text = (char *)eina_stringshare_add(text); edje_object_calc_force(obj); } @@ -3438,22 +3585,29 @@ edje_edit_state_text_set(Evas_Object *obj, const char *part, const char *state, EAPI int edje_edit_state_text_size_get(Evas_Object *obj, const char *part, const char *state, double value) { + Edje_Part_Description_Text *txt; + GET_PD_OR_RETURN(-1); + txt = (Edje_Part_Description_Text *) pd; //printf("GET TEXT_SIZE of state: %s [%d]\n", state, pd->text.size); - return pd->text.size; + return txt->text.size; } EAPI void edje_edit_state_text_size_set(Evas_Object *obj, const char *part, const char *state, double value, int size) { + Edje_Part_Description_Text *txt; + GET_PD_OR_RETURN(); //printf("SET TEXT_SIZE of state: %s [%d]\n", state, size); if (size < 0) return; - pd->text.size = size; + txt = (Edje_Part_Description_Text *) pd; + + txt->text.size = size; edje_object_calc_force(obj); } @@ -3462,14 +3616,22 @@ edje_edit_state_text_size_set(Evas_Object *obj, const char *part, const char *st EAPI double \ edje_edit_state_text_##Name##_get(Evas_Object *obj, const char *part, const char *state, double value) \ { \ + Edje_Part_Description_Text *txt; \ + \ GET_PD_OR_RETURN(0); \ - return TO_DOUBLE(pd->text.Value); \ + \ + txt = (Edje_Part_Description_Text *) pd; \ + return TO_DOUBLE(txt->text.Value); \ } \ EAPI void \ edje_edit_state_text_##Name##_set(Evas_Object *obj, const char *part, const char *state, double value, double v) \ { \ + Edje_Part_Description_Text *txt; \ + \ GET_PD_OR_RETURN(); \ - pd->text.Value = FROM_DOUBLE(v); \ + \ + txt = (Edje_Part_Description_Text *) pd; \ + txt->text.Value = FROM_DOUBLE(v); \ edje_object_calc_force(obj); \ } \ @@ -3481,14 +3643,22 @@ FUNC_TEXT_DOUBLE(elipsis, elipsis); EAPI Eina_Bool \ edje_edit_state_text_fit_##Value##_get(Evas_Object *obj, const char *part, const char *state, double value) \ { \ + Edje_Part_Description_Text *txt; \ + \ GET_PD_OR_RETURN(EINA_FALSE); \ - return pd->text.fit_##Value; \ + \ + txt = (Edje_Part_Description_Text *) pd; \ + return txt->text.fit_##Value; \ } \ EAPI void \ edje_edit_state_text_fit_##Value##_set(Evas_Object *obj, const char *part, const char *state, double value, Eina_Bool fit) \ { \ + Edje_Part_Description_Text *txt; \ + \ GET_PD_OR_RETURN(); \ - pd->text.fit_##Value = fit ? 1 : 0; \ + \ + txt = (Edje_Part_Description_Text *) pd; \ + txt->text.fit_##Value = fit ? 1 : 0; \ edje_object_calc_force(obj); \ } @@ -3625,22 +3795,29 @@ edje_edit_font_del(Evas_Object *obj, const char* alias) EAPI const char * edje_edit_state_font_get(Evas_Object *obj, const char *part, const char *state, double value) { + Edje_Part_Description_Text *txt; + GET_PD_OR_RETURN(NULL); //printf("GET FONT of state: %s [%s]\n", state, pd->text.font); - if (!pd->text.font) return NULL; - return eina_stringshare_add(pd->text.font); + txt = (Edje_Part_Description_Text*) pd; + + if (!txt->text.font) return NULL; + return eina_stringshare_add(txt->text.font); } EAPI void edje_edit_state_font_set(Evas_Object *obj, const char *part, const char *state, double value, const char *font) { + Edje_Part_Description_Text *txt; + GET_PD_OR_RETURN(); //printf("SET FONT of state: %s [%s]\n", state, font); + txt = (Edje_Part_Description_Text*) pd; - _edje_if_string_free(ed, pd->text.font); - pd->text.font = (char *)eina_stringshare_add(font); + _edje_if_string_free(ed, txt->text.font); + txt->text.font = (char *)eina_stringshare_add(font); edje_object_calc_force(obj); } @@ -3929,11 +4106,14 @@ edje_edit_image_compression_rate_get(Evas_Object *obj, const char *image) EAPI const char * edje_edit_state_image_get(Evas_Object *obj, const char *part, const char *state, double value) { + Edje_Part_Description_Image *img; char *image; GET_PD_OR_RETURN(NULL); - image = (char *)_edje_image_name_find(obj, pd->image.id); + img = (Edje_Part_Description_Image *) pd; + + image = (char *)_edje_image_name_find(obj, img->image.id); if (!image) return NULL; //printf("GET IMAGE for %s [%s]\n", state, image); @@ -3943,6 +4123,7 @@ edje_edit_state_image_get(Evas_Object *obj, const char *part, const char *state, EAPI void edje_edit_state_image_set(Evas_Object *obj, const char *part, const char *state, double value, const char *image) { + Edje_Part_Description_Image *img; int id; GET_PD_OR_RETURN(); @@ -3952,7 +4133,9 @@ edje_edit_state_image_set(Evas_Object *obj, const char *part, const char *state, id = _edje_image_id_find(obj, image); //printf("SET IMAGE for %s [%s]\n", state, image); - if (id > -1) pd->image.id = id; + img = (Edje_Part_Description_Image *) pd; + + if (id > -1) img->image.id = id; edje_object_calc_force(obj); } @@ -3960,6 +4143,7 @@ edje_edit_state_image_set(Evas_Object *obj, const char *part, const char *state, EAPI Eina_List * edje_edit_state_tweens_list_get(Evas_Object *obj, const char *part, const char *state, double value) { + Edje_Part_Description_Image *img; Edje_Part_Image_Id *i; Eina_List *tweens = NULL, *l; const char *name; @@ -3968,7 +4152,9 @@ edje_edit_state_tweens_list_get(Evas_Object *obj, const char *part, const char * //printf("GET TWEEN LIST for %s\n", state); - EINA_LIST_FOREACH(pd->image.tween_list, l, i) + img = (Edje_Part_Description_Image *) pd; + + EINA_LIST_FOREACH(img->image.tween_list, l, i) { name = _edje_image_name_find(obj, i->id); //printf(" t: %s\n", name); @@ -3981,6 +4167,7 @@ edje_edit_state_tweens_list_get(Evas_Object *obj, const char *part, const char * EAPI Eina_Bool edje_edit_state_tween_add(Evas_Object *obj, const char *part, const char *state, double value, const char *tween) { + Edje_Part_Description_Image *img; Edje_Part_Image_Id *i; int id; @@ -3994,8 +4181,10 @@ edje_edit_state_tween_add(Evas_Object *obj, const char *part, const char *state, if (!i) return EINA_FALSE; i->id = id; + img = (Edje_Part_Description_Image *) pd; + /* add to tween list */ - pd->image.tween_list = eina_list_append(pd->image.tween_list, i); + img->image.tween_list = eina_list_append(img->image.tween_list, i); return EINA_TRUE; } @@ -4003,22 +4192,25 @@ edje_edit_state_tween_add(Evas_Object *obj, const char *part, const char *state, EAPI Eina_Bool edje_edit_state_tween_del(Evas_Object *obj, const char *part, const char *state, double value, const char *tween) { - Eina_List *l; + Edje_Part_Description_Image *img; Edje_Part_Image_Id *i; + Eina_List *l; int id; GET_PD_OR_RETURN(EINA_FALSE); - if (!pd->image.tween_list) return EINA_FALSE; + img = (Edje_Part_Description_Image *) pd; + + if (!img->image.tween_list) return EINA_FALSE; id = _edje_image_id_find(obj, tween); if (id < 0) return EINA_FALSE; - EINA_LIST_FOREACH(pd->image.tween_list, l, i) + EINA_LIST_FOREACH(img->image.tween_list, l, i) { if (i->id == id) { - pd->image.tween_list = eina_list_remove_list(pd->image.tween_list, l); + img->image.tween_list = eina_list_remove_list(img->image.tween_list, l); return EINA_TRUE; } } @@ -4028,27 +4220,35 @@ edje_edit_state_tween_del(Evas_Object *obj, const char *part, const char *state, EAPI void edje_edit_state_image_border_get(Evas_Object *obj, const char *part, const char *state, double value, int *l, int *r, int *t, int *b) { + Edje_Part_Description_Image *img; + GET_PD_OR_RETURN(); + img = (Edje_Part_Description_Image *) pd; + //printf("GET IMAGE_BORDER of state '%s'\n", state); - if (l) *l = pd->image.border.l; - if (r) *r = pd->image.border.r; - if (t) *t = pd->image.border.t; - if (b) *b = pd->image.border.b; + if (l) *l = img->image.border.l; + if (r) *r = img->image.border.r; + if (t) *t = img->image.border.t; + if (b) *b = img->image.border.b; } EAPI void edje_edit_state_image_border_set(Evas_Object *obj, const char *part, const char *state, double value, int l, int r, int t, int b) { + Edje_Part_Description_Image *img; + GET_PD_OR_RETURN(); + img = (Edje_Part_Description_Image *) pd; + //printf("SET IMAGE_BORDER of state '%s'\n", state); - if (l > -1) pd->image.border.l = l; - if (r > -1) pd->image.border.r = r; - if (t > -1) pd->image.border.t = t; - if (b > -1) pd->image.border.b = b; + if (l > -1) img->image.border.l = l; + if (r > -1) img->image.border.r = r; + if (t > -1) img->image.border.t = t; + if (b > -1) img->image.border.b = b; edje_object_calc_force(obj); } @@ -4056,20 +4256,30 @@ edje_edit_state_image_border_set(Evas_Object *obj, const char *part, const char EAPI unsigned char edje_edit_state_image_border_fill_get(Evas_Object *obj, const char *part, const char *state, double value) { + Edje_Part_Description_Image *img; + GET_PD_OR_RETURN(0); - if (pd->image.border.no_fill == 0) return 1; - else if (pd->image.border.no_fill == 1) return 0; - else if (pd->image.border.no_fill == 2) return 2; + + img = (Edje_Part_Description_Image *) pd; + + if (img->image.border.no_fill == 0) return 1; + else if (img->image.border.no_fill == 1) return 0; + else if (img->image.border.no_fill == 2) return 2; return 0; } EAPI void edje_edit_state_image_border_fill_set(Evas_Object *obj, const char *part, const char *state, double value, unsigned char fill) { + Edje_Part_Description_Image *img; + GET_PD_OR_RETURN(); - if (fill == 0) pd->image.border.no_fill = 1; - else if (fill == 1) pd->image.border.no_fill = 0; - else if (fill == 2) pd->image.border.no_fill = 2; + + img = (Edje_Part_Description_Image *) pd; + + if (fill == 0) img->image.border.no_fill = 1; + else if (fill == 1) img->image.border.no_fill = 0; + else if (fill == 2) img->image.border.no_fill = 2; edje_object_calc_force(obj); } @@ -5083,7 +5293,6 @@ _edje_generate_source_of_state(Evas_Object *obj, const char *part, const char *s { Eina_List *l, *ll; Edje_Real_Part *rp; - const char *str; Eina_Bool ret = EINA_TRUE; GET_PD_OR_RETURN(EINA_FALSE); @@ -5091,84 +5300,93 @@ _edje_generate_source_of_state(Evas_Object *obj, const char *part, const char *s rp = _edje_real_part_get(ed, part); if (!rp) return EINA_FALSE; - BUF_APPENDF(I4"description { state: \"%s\" %g;\n", pd->common.state.name, pd->common.state.value); + BUF_APPENDF(I4"description { state: \"%s\" %g;\n", pd->state.name, pd->state.value); //TODO Support inherit - if (!pd->common.visible) + if (!pd->visible) BUF_APPEND(I5"visible: 0;\n"); - if (pd->common.align.x != 0.5 || pd->common.align.y != 0.5) - BUF_APPENDF(I5"align: %g %g;\n", TO_DOUBLE(pd->common.align.x), TO_DOUBLE(pd->common.align.y)); + if (pd->align.x != 0.5 || pd->align.y != 0.5) + BUF_APPENDF(I5"align: %g %g;\n", TO_DOUBLE(pd->align.x), TO_DOUBLE(pd->align.y)); //TODO Support fixed - if (pd->common.min.w || pd->common.min.h) - BUF_APPENDF(I5"min: %d %d;\n", pd->common.min.w, pd->common.min.h); - if (pd->common.max.w != -1 || pd->common.max.h != -1) - BUF_APPENDF(I5"max: %d %d;\n", pd->common.max.w, pd->common.max.h); + if (pd->min.w || pd->min.h) + BUF_APPENDF(I5"min: %d %d;\n", pd->min.w, pd->min.h); + if (pd->max.w != -1 || pd->max.h != -1) + BUF_APPENDF(I5"max: %d %d;\n", pd->max.w, pd->max.h); //TODO Support step - if (pd->common.aspect.min || pd->common.aspect.max) - BUF_APPENDF(I5"aspect: %g %g;\n", TO_DOUBLE(pd->common.aspect.min), TO_DOUBLE(pd->common.aspect.max)); - if (pd->common.aspect.prefer) - BUF_APPENDF(I5"aspect_preference: %s;\n", prefers[pd->common.aspect.prefer]); + if (pd->aspect.min || pd->aspect.max) + BUF_APPENDF(I5"aspect: %g %g;\n", TO_DOUBLE(pd->aspect.min), TO_DOUBLE(pd->aspect.max)); + if (pd->aspect.prefer) + BUF_APPENDF(I5"aspect_preference: %s;\n", prefers[pd->aspect.prefer]); - if (pd->common.color_class) - BUF_APPENDF(I5"color_class: \"%s\";\n", pd->common.color_class); + if (pd->color_class) + BUF_APPENDF(I5"color_class: \"%s\";\n", pd->color_class); - if (pd->common.color.r != 255 || pd->common.color.g != 255 || - pd->common.color.b != 255 || pd->common.color.a != 255) + if (pd->color.r != 255 || pd->color.g != 255 || + pd->color.b != 255 || pd->color.a != 255) BUF_APPENDF(I5"color: %d %d %d %d;\n", - pd->common.color.r, pd->common.color.g, pd->common.color.b, pd->common.color.a); - if (pd->common.color2.r != 0 || pd->common.color2.g != 0 || - pd->common.color2.b != 0 || pd->common.color2.a != 255) + pd->color.r, pd->color.g, pd->color.b, pd->color.a); + if (pd->color2.r != 0 || pd->color2.g != 0 || + pd->color2.b != 0 || pd->color2.a != 255) BUF_APPENDF(I5"color2: %d %d %d %d;\n", - pd->common.color2.r, pd->common.color2.g, pd->common.color2.b, pd->common.color2.a); - if (pd->text.color3.r != 0 || pd->text.color3.g != 0 || - pd->text.color3.b != 0 || pd->text.color3.a != 128) - BUF_APPENDF(I5"color3: %d %d %d %d;\n", - pd->text.color3.r, pd->text.color3.g, pd->text.color3.b, pd->text.color3.a); + pd->color2.r, pd->color2.g, pd->color2.b, pd->color2.a); + + if (rp->part->type == EDJE_PART_TYPE_TEXT + || rp->part->type == EDJE_PART_TYPE_TEXTBLOCK) + { + Edje_Part_Description_Text *txt; + + txt = (Edje_Part_Description_Text *) pd; + + if (txt->text.color3.r != 0 || txt->text.color3.g != 0 || + txt->text.color3.b != 0 || txt->text.color3.a != 128) + BUF_APPENDF(I5"color3: %d %d %d %d;\n", + txt->text.color3.r, txt->text.color3.g, txt->text.color3.b, txt->text.color3.a); + } //Rel1 - if (pd->common.rel1.relative_x || pd->common.rel1.relative_y || pd->common.rel1.offset_x || - pd->common.rel1.offset_y || pd->common.rel1.id_x != -1 || pd->common.rel1.id_y != -1) + if (pd->rel1.relative_x || pd->rel1.relative_y || pd->rel1.offset_x || + pd->rel1.offset_y || pd->rel1.id_x != -1 || pd->rel1.id_y != -1) { BUF_APPEND(I5"rel1 {\n"); - if (pd->common.rel1.relative_x || pd->common.rel1.relative_y) - BUF_APPENDF(I6"relative: %g %g;\n", TO_DOUBLE(pd->common.rel1.relative_x), TO_DOUBLE(pd->common.rel1.relative_y)); - if (pd->common.rel1.offset_x || pd->common.rel1.offset_y) - BUF_APPENDF(I6"offset: %d %d;\n", pd->common.rel1.offset_x, pd->common.rel1.offset_y); - if (pd->common.rel1.id_x != -1 && pd->common.rel1.id_x == pd->common.rel1.id_y) - BUF_APPENDF(I6"to: \"%s\";\n", ed->table_parts[pd->common.rel1.id_x]->part->name); + if (pd->rel1.relative_x || pd->rel1.relative_y) + BUF_APPENDF(I6"relative: %g %g;\n", TO_DOUBLE(pd->rel1.relative_x), TO_DOUBLE(pd->rel1.relative_y)); + if (pd->rel1.offset_x || pd->rel1.offset_y) + BUF_APPENDF(I6"offset: %d %d;\n", pd->rel1.offset_x, pd->rel1.offset_y); + if (pd->rel1.id_x != -1 && pd->rel1.id_x == pd->rel1.id_y) + BUF_APPENDF(I6"to: \"%s\";\n", ed->table_parts[pd->rel1.id_x]->part->name); else { - if (pd->common.rel1.id_x != -1) - BUF_APPENDF(I6"to_x: \"%s\";\n", ed->table_parts[pd->common.rel1.id_x]->part->name); - if (pd->common.rel1.id_y != -1) - BUF_APPENDF(I6"to_y: \"%s\";\n", ed->table_parts[pd->common.rel1.id_y]->part->name); + if (pd->rel1.id_x != -1) + BUF_APPENDF(I6"to_x: \"%s\";\n", ed->table_parts[pd->rel1.id_x]->part->name); + if (pd->rel1.id_y != -1) + BUF_APPENDF(I6"to_y: \"%s\";\n", ed->table_parts[pd->rel1.id_y]->part->name); } BUF_APPEND(I5"}\n");//rel1 } //Rel2 - if (pd->common.rel2.relative_x != 1.0 || pd->common.rel2.relative_y != 1.0 || - pd->common.rel2.offset_x != -1 || pd->common.rel2.offset_y != -1 || - pd->common.rel2.id_x != -1 || pd->common.rel2.id_y != -1) + if (pd->rel2.relative_x != 1.0 || pd->rel2.relative_y != 1.0 || + pd->rel2.offset_x != -1 || pd->rel2.offset_y != -1 || + pd->rel2.id_x != -1 || pd->rel2.id_y != -1) { BUF_APPEND(I5"rel2 {\n"); - if (TO_DOUBLE(pd->common.rel2.relative_x) != 1.0 || TO_DOUBLE(pd->common.rel2.relative_y) != 1.0) - BUF_APPENDF(I6"relative: %g %g;\n", TO_DOUBLE(pd->common.rel2.relative_x), TO_DOUBLE(pd->common.rel2.relative_y)); - if (pd->common.rel2.offset_x != -1 || pd->common.rel2.offset_y != -1) - BUF_APPENDF(I6"offset: %d %d;\n", pd->common.rel2.offset_x, pd->common.rel2.offset_y); - if (pd->common.rel2.id_x != -1 && pd->common.rel2.id_x == pd->common.rel2.id_y) - BUF_APPENDF(I6"to: \"%s\";\n", ed->table_parts[pd->common.rel2.id_x]->part->name); + if (TO_DOUBLE(pd->rel2.relative_x) != 1.0 || TO_DOUBLE(pd->rel2.relative_y) != 1.0) + BUF_APPENDF(I6"relative: %g %g;\n", TO_DOUBLE(pd->rel2.relative_x), TO_DOUBLE(pd->rel2.relative_y)); + if (pd->rel2.offset_x != -1 || pd->rel2.offset_y != -1) + BUF_APPENDF(I6"offset: %d %d;\n", pd->rel2.offset_x, pd->rel2.offset_y); + if (pd->rel2.id_x != -1 && pd->rel2.id_x == pd->rel2.id_y) + BUF_APPENDF(I6"to: \"%s\";\n", ed->table_parts[pd->rel2.id_x]->part->name); else { - if (pd->common.rel2.id_x != -1) - BUF_APPENDF(I6"to_x: \"%s\";\n", ed->table_parts[pd->common.rel2.id_x]->part->name); - if (pd->common.rel2.id_y != -1) - BUF_APPENDF(I6"to_y: \"%s\";\n", ed->table_parts[pd->common.rel2.id_y]->part->name); + if (pd->rel2.id_x != -1) + BUF_APPENDF(I6"to_x: \"%s\";\n", ed->table_parts[pd->rel2.id_x]->part->name); + if (pd->rel2.id_y != -1) + BUF_APPENDF(I6"to_y: \"%s\";\n", ed->table_parts[pd->rel2.id_y]->part->name); } BUF_APPEND(I5"}\n");//rel2 } @@ -5178,53 +5396,55 @@ _edje_generate_source_of_state(Evas_Object *obj, const char *part, const char *s { char *data; + Edje_Part_Description_Image *img; + + img = (Edje_Part_Description_Image *) pd; + BUF_APPEND(I5"image {\n"); - BUF_APPENDF(I6"normal: \"%s\";\n", _edje_image_name_find(obj, pd->image.id)); + BUF_APPENDF(I6"normal: \"%s\";\n", _edje_image_name_find(obj, img->image.id)); ll = edje_edit_state_tweens_list_get(obj, part, state, value); EINA_LIST_FOREACH(ll, l, data) BUF_APPENDF(I6"tween: \"%s\";\n", data); edje_edit_string_list_free(ll); - if (pd->image.border.l || pd->image.border.r || pd->image.border.t || pd->image.border.b) - BUF_APPENDF(I6"border: %d %d %d %d;\n", pd->image.border.l, pd->image.border.r, pd->image.border.t, pd->image.border.b); - if (pd->image.border.no_fill == 1) + if (img->image.border.l || img->image.border.r || img->image.border.t || img->image.border.b) + BUF_APPENDF(I6"border: %d %d %d %d;\n", img->image.border.l, img->image.border.r, img->image.border.t, img->image.border.b); + if (img->image.border.no_fill == 1) BUF_APPEND(I6"middle: NONE;\n"); - else if (pd->image.border.no_fill == 0) + else if (img->image.border.no_fill == 0) BUF_APPEND(I6"middle: DEFAULT;\n"); - else if (pd->image.border.no_fill == 2) + else if (img->image.border.no_fill == 2) BUF_APPEND(I6"middle: SOLID;\n"); BUF_APPEND(I5"}\n");//image - } - //Fill - if (rp->part->type == EDJE_PART_TYPE_IMAGE) - { + //Fill + BUF_APPEND(I5"fill {\n"); - if (rp->part->type == EDJE_PART_TYPE_IMAGE && !pd->image.fill.smooth) + if (rp->part->type == EDJE_PART_TYPE_IMAGE && !img->image.fill.smooth) BUF_APPEND(I6"smooth: 0;\n"); //TODO Support spread - if (pd->image.fill.pos_rel_x || pd->image.fill.pos_rel_y || - pd->image.fill.pos_abs_x || pd->image.fill.pos_abs_y) + if (img->image.fill.pos_rel_x || img->image.fill.pos_rel_y || + img->image.fill.pos_abs_x || img->image.fill.pos_abs_y) { BUF_APPEND(I6"origin {\n"); - if (pd->image.fill.pos_rel_x || pd->image.fill.pos_rel_y) - BUF_APPENDF(I7"relative: %g %g;\n", TO_DOUBLE(pd->image.fill.pos_rel_x), TO_DOUBLE(pd->image.fill.pos_rel_y)); - if (pd->image.fill.pos_abs_x || pd->image.fill.pos_abs_y) - BUF_APPENDF(I7"offset: %d %d;\n", pd->image.fill.pos_abs_x, pd->image.fill.pos_abs_y); + if (img->image.fill.pos_rel_x || img->image.fill.pos_rel_y) + BUF_APPENDF(I7"relative: %g %g;\n", TO_DOUBLE(img->image.fill.pos_rel_x), TO_DOUBLE(img->image.fill.pos_rel_y)); + if (img->image.fill.pos_abs_x || img->image.fill.pos_abs_y) + BUF_APPENDF(I7"offset: %d %d;\n", img->image.fill.pos_abs_x, img->image.fill.pos_abs_y); BUF_APPEND(I6"}\n"); } - if (TO_DOUBLE(pd->image.fill.rel_x) != 1.0 || TO_DOUBLE(pd->image.fill.rel_y) != 1.0 || - pd->image.fill.abs_x || pd->image.fill.abs_y) + if (TO_DOUBLE(img->image.fill.rel_x) != 1.0 || TO_DOUBLE(img->image.fill.rel_y) != 1.0 || + img->image.fill.abs_x || img->image.fill.abs_y) { BUF_APPEND(I6"size {\n"); - if (pd->image.fill.rel_x != 1.0 || pd->image.fill.rel_y != 1.0) - BUF_APPENDF(I7"relative: %g %g;\n", TO_DOUBLE(pd->image.fill.rel_x), TO_DOUBLE(pd->image.fill.rel_y)); - if (pd->image.fill.abs_x || pd->image.fill.abs_y) - BUF_APPENDF(I7"offset: %d %d;\n", pd->image.fill.abs_x, pd->image.fill.abs_y); + if (img->image.fill.rel_x != 1.0 || img->image.fill.rel_y != 1.0) + BUF_APPENDF(I7"relative: %g %g;\n", TO_DOUBLE(img->image.fill.rel_x), TO_DOUBLE(img->image.fill.rel_y)); + if (img->image.fill.abs_x || img->image.fill.abs_y) + BUF_APPENDF(I7"offset: %d %d;\n", img->image.fill.abs_x, img->image.fill.abs_y); BUF_APPEND(I6"}\n"); } @@ -5234,22 +5454,26 @@ _edje_generate_source_of_state(Evas_Object *obj, const char *part, const char *s //Text if (rp->part->type == EDJE_PART_TYPE_TEXT) { + Edje_Part_Description_Text *txt; + + txt = (Edje_Part_Description_Text *) pd; + BUF_APPEND(I5"text {\n"); - if (pd->text.text) - BUF_APPENDF(I6"text: \"%s\";\n", pd->text.text); - BUF_APPENDF(I6"font: \"%s\";\n", pd->text.font); - BUF_APPENDF(I6"size: %d;\n", pd->text.size); - if (pd->text.text_class) - BUF_APPENDF(I6"text_class: \"%s\";\n", pd->text.text_class); - if (pd->text.fit_x || pd->text.fit_y) - BUF_APPENDF(I6"fit: %d %d;\n", pd->text.fit_x, pd->text.fit_y); + if (txt->text.text) + BUF_APPENDF(I6"text: \"%s\";\n", txt->text.text); + BUF_APPENDF(I6"font: \"%s\";\n", txt->text.font); + BUF_APPENDF(I6"size: %d;\n", txt->text.size); + if (txt->text.text_class) + BUF_APPENDF(I6"text_class: \"%s\";\n", txt->text.text_class); + if (txt->text.fit_x || txt->text.fit_y) + BUF_APPENDF(I6"fit: %d %d;\n", txt->text.fit_x, txt->text.fit_y); //TODO Support min & max - if (TO_DOUBLE(pd->text.align.x) != 0.5 || TO_DOUBLE(pd->text.align.y) != 0.5) - BUF_APPENDF(I6"align: %g %g;\n", TO_DOUBLE(pd->text.align.x), TO_DOUBLE(pd->text.align.y)); + if (TO_DOUBLE(txt->text.align.x) != 0.5 || TO_DOUBLE(txt->text.align.y) != 0.5) + BUF_APPENDF(I6"align: %g %g;\n", TO_DOUBLE(txt->text.align.x), TO_DOUBLE(txt->text.align.y)); //TODO Support source //TODO Support text_source - if (pd->text.elipsis) - BUF_APPENDF(I6"elipsis: %g;\n", pd->text.elipsis); + if (txt->text.elipsis) + BUF_APPENDF(I6"elipsis: %g;\n", txt->text.elipsis); BUF_APPEND(I5"}\n"); } @@ -5695,7 +5919,7 @@ _edje_edit_convert_to_old(Edje_File *ef) { Eina_Iterator *itr; Eina_Hash_Tuple *tpl; - int i; + unsigned int i; itr = eina_hash_iterator_tuple_new(ef->data); EINA_ITERATOR_FOREACH(itr, tpl) @@ -5795,19 +6019,145 @@ _edje_edit_edje_file_save(Eet_File *eetf, Edje_File *ef) return EINA_TRUE; } +static Old_Edje_Part_Description * +_edje_edit_description_save(int type, Edje_Part_Description_Common *desc) +{ + Old_Edje_Part_Description *result; + + result = calloc(1, sizeof (Old_Edje_Part_Description)); + if (!result) return NULL; + + result->common = *desc; + + switch (type) + { +#define COPY_OLD(Short, Type, Name) \ + case EDJE_PART_TYPE_##Short: \ + { \ + Edje_Part_Description_##Type *Name = (Edje_Part_Description_##Type *) desc; \ + \ + result->Name = Name->Name; \ + break; \ + } + + COPY_OLD(IMAGE, Image, image); + COPY_OLD(TEXT, Text, text); + COPY_OLD(TEXTBLOCK, Text, text); + COPY_OLD(BOX, Box, box); + COPY_OLD(TABLE, Table, table); + COPY_OLD(EXTERNAL, External, external_params); + } + + return result; +} + +static Old_Edje_Part * +_edje_edit_part_save(Edje_Part *ep) +{ + Old_Edje_Part *oep; + unsigned int i; + + oep = calloc(1, sizeof (oep)); + if (!oep) return NULL; + + oep->name = ep->name; + oep->default_desc = _edje_edit_description_save(ep->type, ep->default_desc); + + for (i = 0; i < ep->other_count; ++i) + oep->other_desc = eina_list_append(oep->other_desc, _edje_edit_description_save(ep->type, ep->other_desc[i])); + + oep->source = ep->source; + oep->source2 = ep->source2; + oep->source3 = ep->source3; + oep->source4 = ep->source4; + oep->source5 = ep->source5; + oep->source6 = ep->source6; + oep->id = ep->id; + oep->clip_to_id = ep->clip_to_id; + oep->dragable = ep->dragable; + + for (i = 0; i < ep->items_count; ++i) + oep->items = eina_list_append(oep->items, ep->items[i]); + + oep->type = ep->type; + oep->effect = ep->effect; + oep->mouse_events = ep->mouse_events; + oep->repeat_events = ep->repeat_events; + oep->ignore_flags = ep->ignore_flags; + oep->scale = ep->scale; + oep->precise_is_inside = ep->precise_is_inside; + oep->use_alternate_font_metrics = ep->use_alternate_font_metrics; + oep->pointer_mode = ep->pointer_mode; + oep->entry_mode = ep->entry_mode; + oep->select_mode = ep->select_mode; + oep->multiline = ep->multiline; + oep->api = ep->api; + + return oep; +} + static Eina_Bool _edje_edit_collection_save(Eet_File *eetf, Edje_Part_Collection *epc) { + Old_Edje_Part_Description *oepd; + Old_Edje_Part_Collection oepc; + Old_Edje_Part *oep; + Eina_Iterator *it; + Eina_Hash_Tuple *tu; + Edje_Data *di; char buf[256]; + unsigned int i; + Eina_Bool err = EINA_TRUE; + + memset(&oepc, 0, sizeof(oepc)); snprintf(buf, sizeof(buf), "collections/%i", epc->id); - if (eet_data_write(eetf, _edje_edd_edje_part_collection, buf, epc, 1) <= 0) + oepc.programs = epc->programs; + + it = eina_hash_iterator_tuple_new(epc->data); + EINA_ITERATOR_FOREACH(it, tu) + { + di = malloc(sizeof (di)); + if (!di) return EINA_FALSE; + + di->key = tu->key; + di->value = tu->data; + + oepc.data = eina_list_append(oepc.data, di); + } + eina_iterator_free(it); + + for (i = 0; i < epc->parts_count; ++i) + oepc.parts = eina_list_append(oepc.parts, _edje_edit_part_save(epc->parts[i])); + + oepc.id = epc->id; + oepc.alias = epc->alias; + oepc.prop.min = epc->prop.min; + oepc.prop.max = epc->prop.max; + oepc.script = epc->script; + oepc.script_only = epc->script_only; + oepc.lua_script_only = epc->lua_script_only; + oepc.checked = epc->checked; + + if (eet_data_write(eetf, _edje_edd_edje_part_collection, buf, &oepc, 1) <= 0) { ERR("Error. unable to write \"%s\" part entry", buf); - return EINA_FALSE; + err = EINA_FALSE; } - return EINA_TRUE; + + // FIXME + EINA_LIST_FREE(oepc.data, di) + free(di); + EINA_LIST_FREE(oepc.parts, oep) + { + EINA_LIST_FREE(oep->other_desc, oepd) + free(oepd); + eina_list_free(oep->items); + free(oep); + } + + return err; } static Eina_Bool @@ -6002,9 +6352,9 @@ edje_edit_save_all(Evas_Object *obj) EAPI void edje_edit_print_internal_status(Evas_Object *obj) { - Eina_List *l; - Edje_Part *p; Edje_Program *epr; + Eina_List *l; + unsigned int i; GET_ED_OR_RETURN(); @@ -6019,10 +6369,13 @@ edje_edit_print_internal_status(Evas_Object *obj) INF(" parent: '%s'", ed->parent); INF("*** Parts [table:%d list:%d]", ed->table_parts_size, - eina_list_count(ed->collection->parts)); - EINA_LIST_FOREACH(ed->collection->parts, l, p) + ed->collection->parts_count); + for (i = 0; i < ed->collection->parts_count; ++i) { Edje_Real_Part *rp; + Edje_Part *p; + + p = ed->collection->parts[i]; rp = ed->table_parts[p->id % ed->table_parts_size]; printf(" [%d]%s ", p->id, p->name); diff --git a/legacy/edje/src/lib/edje_embryo.c b/legacy/edje/src/lib/edje_embryo.c index b691551054..4a7f19bab7 100644 --- a/legacy/edje/src/lib/edje_embryo.c +++ b/legacy/edje/src/lib/edje_embryo.c @@ -871,8 +871,8 @@ _edje_embryo_fn_get_state(Embryo_Program *ep, Embryo_Cell *params) rp = ed->table_parts[part_id % ed->table_parts_size]; if (rp->chosen_description) { - SETFLOAT(rp->chosen_description->common.state.value, params[4]); - s = rp->chosen_description->common.state.name; + SETFLOAT(rp->chosen_description->state.value, params[4]); + s = rp->chosen_description->state.name; if (s) { if ((int) strlen(s) < params[3]) @@ -1557,7 +1557,7 @@ _edje_embryo_fn_custom_state(Embryo_Program *ep, Embryo_Cell *params) { Edje *ed = embryo_program_data_get(ep); Edje_Real_Part *rp; - Edje_Part_Description *parent, *d; + Edje_Part_Description_Common *parent, *d = NULL; Edje_Part_Image_Id *iid; Eina_List *l; char *name; @@ -1585,8 +1585,38 @@ _edje_embryo_fn_custom_state(Embryo_Program *ep, Embryo_Cell *params) return 0; /* now create the custom state */ - if (!(d = calloc(1, sizeof(Edje_Part_Description)))) - return 0; + switch (rp->part->type) + { +#define ALLOC_DESC(Short, Type, To) \ + case EDJE_PART_TYPE_##Short: To = calloc(1, sizeof (Edje_Part_Description_##Type)); break; + +#define ALLOC_COPY_DESC(Short, Type, To, Spec) \ + case EDJE_PART_TYPE_##Short: \ + { \ + Edje_Part_Description_##Type *tmp; \ + Edje_Part_Description_##Type *new; \ + \ + tmp = (Edje_Part_Description_##Type *) parent; \ + \ + new = calloc(1, sizeof (Edje_Part_Description_##Type)); \ + new->Spec = tmp->Spec; \ + d = &new->common; \ + break; \ + } + + ALLOC_DESC(RECTANGLE, Common, d); + ALLOC_DESC(SWALLOW, Common, d); + ALLOC_DESC(GROUP, Common, d); + + ALLOC_COPY_DESC(IMAGE, Image, d, image); + ALLOC_COPY_DESC(TEXT, Text, d, text); + ALLOC_COPY_DESC(TEXTBLOCK, Text, d, text); + ALLOC_COPY_DESC(BOX, Box, d, box); + ALLOC_COPY_DESC(TABLE, Table, d, table); + ALLOC_COPY_DESC(EXTERNAL, External, d, external_params); + } + + if (!d) return 0; rp->custom = eina_mempool_malloc(_edje_real_part_state_mp, sizeof (Edje_Real_Part_State)); if (!rp->custom) @@ -1599,32 +1629,50 @@ _edje_embryo_fn_custom_state(Embryo_Program *ep, Embryo_Cell *params) *d = *parent; - d->common.state.name = (char *)eina_stringshare_add("custom"); - d->common.state.value = 0.0; + d->state.name = (char *)eina_stringshare_add("custom"); + d->state.value = 0.0; /* make sure all the allocated memory is getting copied, * not just referenced */ - d->image.tween_list = NULL; - - EINA_LIST_FOREACH(parent->image.tween_list, l, iid) + if (rp->part->type == EDJE_PART_TYPE_IMAGE) { - Edje_Part_Image_Id *iid_new; + Edje_Part_Description_Image *img_desc; + Edje_Part_Description_Image *parent_img_desc; - iid_new = calloc(1, sizeof(Edje_Part_Image_Id)); - if (!iid_new) continue; + img_desc = (Edje_Part_Description_Image*) d; + parent_img_desc = (Edje_Part_Description_Image*) parent; - iid_new->id = iid->id; + img_desc->image.tween_list = NULL; - d->image.tween_list = eina_list_append(d->image.tween_list, iid_new); + EINA_LIST_FOREACH(parent_img_desc->image.tween_list, l, iid) + { + Edje_Part_Image_Id *iid_new; + + iid_new = calloc(1, sizeof(Edje_Part_Image_Id)); + if (!iid_new) continue; + + iid_new->id = iid->id; + + img_desc->image.tween_list = eina_list_append(img_desc->image.tween_list, iid_new); + } } #define DUP(x) x ? (char *)eina_stringshare_add(x) : NULL - d->common.color_class = DUP(d->common.color_class); - d->text.text = DUP(d->text.text); - d->text.text_class = DUP(d->text.text_class); - d->text.font = DUP(d->text.font); - d->text.style = DUP(d->text.style); + d->color_class = DUP(d->color_class); + + if (rp->part->type == EDJE_PART_TYPE_TEXT + || rp->part->type == EDJE_PART_TYPE_TEXTBLOCK) + { + Edje_Part_Description_Text *text_desc; + + text_desc = (Edje_Part_Description_Text*) d; + + text_desc->text.text = DUP(text_desc->text.text); + text_desc->text.text_class = DUP(text_desc->text.text_class); + text_desc->text.font = DUP(text_desc->text.font); + text_desc->text.style = DUP(text_desc->text.style); + } #undef DUP rp->custom->description = d; @@ -1659,323 +1707,414 @@ _edje_embryo_fn_set_state_val(Embryo_Program *ep, Embryo_Cell *params) case EDJE_STATE_PARAM_ALIGNMENT: CHKPARAM(4); - GETFLOAT_T(rp->custom->description->common.align.x, params[3]); - GETFLOAT_T(rp->custom->description->common.align.y, params[4]); + GETFLOAT_T(rp->custom->description->align.x, params[3]); + GETFLOAT_T(rp->custom->description->align.y, params[4]); break; case EDJE_STATE_PARAM_MIN: CHKPARAM(4); - GETINT(rp->custom->description->common.min.w, params[3]); - GETINT(rp->custom->description->common.min.h, params[4]); + GETINT(rp->custom->description->min.w, params[3]); + GETINT(rp->custom->description->min.h, params[4]); break; case EDJE_STATE_PARAM_MAX: CHKPARAM(4); - GETINT(rp->custom->description->common.max.w, params[3]); - GETINT(rp->custom->description->common.max.h, params[4]); + GETINT(rp->custom->description->max.w, params[3]); + GETINT(rp->custom->description->max.h, params[4]); break; case EDJE_STATE_PARAM_STEP: CHKPARAM(4); - GETINT(rp->custom->description->common.step.x, params[3]); - GETINT(rp->custom->description->common.step.y, params[4]); + GETINT(rp->custom->description->step.x, params[3]); + GETINT(rp->custom->description->step.y, params[4]); break; case EDJE_STATE_PARAM_ASPECT: CHKPARAM(4); - GETFLOAT_T(rp->custom->description->common.aspect.min, params[3]); - GETFLOAT_T(rp->custom->description->common.aspect.max, params[4]); + GETFLOAT_T(rp->custom->description->aspect.min, params[3]); + GETFLOAT_T(rp->custom->description->aspect.max, params[4]); break; case EDJE_STATE_PARAM_ASPECT_PREF: CHKPARAM(3); - GETINT(rp->custom->description->common.aspect.prefer, params[3]); + GETINT(rp->custom->description->aspect.prefer, params[3]); break; case EDJE_STATE_PARAM_COLOR: CHKPARAM(6); - GETINT(rp->custom->description->common.color.r, params[3]); - GETINT(rp->custom->description->common.color.g, params[4]); - GETINT(rp->custom->description->common.color.b, params[5]); - GETINT(rp->custom->description->common.color.a, params[6]); + GETINT(rp->custom->description->color.r, params[3]); + GETINT(rp->custom->description->color.g, params[4]); + GETINT(rp->custom->description->color.b, params[5]); + GETINT(rp->custom->description->color.a, params[6]); break; case EDJE_STATE_PARAM_COLOR2: CHKPARAM(6); - GETINT(rp->custom->description->common.color2.r, params[3]); - GETINT(rp->custom->description->common.color2.g, params[4]); - GETINT(rp->custom->description->common.color2.b, params[5]); - GETINT(rp->custom->description->common.color2.a, params[6]); + GETINT(rp->custom->description->color2.r, params[3]); + GETINT(rp->custom->description->color2.g, params[4]); + GETINT(rp->custom->description->color2.b, params[5]); + GETINT(rp->custom->description->color2.a, params[6]); break; case EDJE_STATE_PARAM_COLOR3: - CHKPARAM(6); + { + Edje_Part_Description_Text *text; - GETINT(rp->custom->description->text.color3.r, params[3]); - GETINT(rp->custom->description->text.color3.g, params[4]); - GETINT(rp->custom->description->text.color3.b, params[5]); - GETINT(rp->custom->description->text.color3.a, params[6]); + if ( (rp->part->type != EDJE_PART_TYPE_TEXT) && + (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + return 0; - break; + CHKPARAM(6); + + text = (Edje_Part_Description_Text*) rp->custom->description; + + GETINT(text->text.color3.r, params[3]); + GETINT(text->text.color3.g, params[4]); + GETINT(text->text.color3.b, params[5]); + GETINT(text->text.color3.a, params[6]); + break; + } case EDJE_STATE_PARAM_COLOR_CLASS: CHKPARAM(3); GETSTR(s, params[3]); - GETSTREVAS(s, rp->custom->description->common.color_class); + GETSTREVAS(s, rp->custom->description->color_class); break; case EDJE_STATE_PARAM_REL1: CHKPARAM(4); - GETFLOAT_T(rp->custom->description->common.rel1.relative_x, params[3]); - GETFLOAT_T(rp->custom->description->common.rel1.relative_y, params[4]); + GETFLOAT_T(rp->custom->description->rel1.relative_x, params[3]); + GETFLOAT_T(rp->custom->description->rel1.relative_y, params[4]); break; case EDJE_STATE_PARAM_REL1_TO: CHKPARAM(4); - GETINT(rp->custom->description->common.rel1.id_x, params[3]); - GETINT(rp->custom->description->common.rel1.id_y, params[4]); + GETINT(rp->custom->description->rel1.id_x, params[3]); + GETINT(rp->custom->description->rel1.id_y, params[4]); - if (rp->param1.description->common.rel1.id_x >= 0) - rp->param1.rel1_to_x = ed->table_parts[rp->param1.description->common.rel1.id_x % ed->table_parts_size]; - if (rp->param1.description->common.rel1.id_y >= 0) - rp->param1.rel1_to_y = ed->table_parts[rp->param1.description->common.rel1.id_y % ed->table_parts_size]; + 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]; break; case EDJE_STATE_PARAM_REL1_OFFSET: CHKPARAM(4); - GETINT(rp->custom->description->common.rel1.offset_x, params[3]); - GETINT(rp->custom->description->common.rel1.offset_y, params[4]); + GETINT(rp->custom->description->rel1.offset_x, params[3]); + GETINT(rp->custom->description->rel1.offset_y, params[4]); break; case EDJE_STATE_PARAM_REL2: CHKPARAM(4); - GETFLOAT_T(rp->custom->description->common.rel2.relative_x, params[3]); - GETFLOAT_T(rp->custom->description->common.rel2.relative_y, params[4]); + GETFLOAT_T(rp->custom->description->rel2.relative_x, params[3]); + GETFLOAT_T(rp->custom->description->rel2.relative_y, params[4]); break; case EDJE_STATE_PARAM_REL2_TO: CHKPARAM(4); - GETINT(rp->custom->description->common.rel2.id_x, params[3]); - GETINT(rp->custom->description->common.rel2.id_y, params[4]); + GETINT(rp->custom->description->rel2.id_x, params[3]); + GETINT(rp->custom->description->rel2.id_y, params[4]); - if (rp->param1.description->common.rel2.id_x >= 0) - rp->param1.rel2_to_x = ed->table_parts[rp->param1.description->common.rel2.id_x % ed->table_parts_size]; - if (rp->param1.description->common.rel2.id_y >= 0) - rp->param1.rel2_to_y = ed->table_parts[rp->param1.description->common.rel2.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]; break; case EDJE_STATE_PARAM_REL2_OFFSET: CHKPARAM(4); - GETINT(rp->custom->description->common.rel2.offset_x, params[3]); - GETINT(rp->custom->description->common.rel2.offset_y, params[4]); + GETINT(rp->custom->description->rel2.offset_x, params[3]); + GETINT(rp->custom->description->rel2.offset_y, params[4]); break; case EDJE_STATE_PARAM_IMAGE: - if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0; - CHKPARAM(3); + { + Edje_Part_Description_Image *img; - GETINT(rp->custom->description->image.id, params[3]); + if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0; + CHKPARAM(3); - break; + img = (Edje_Part_Description_Image*) rp->custom->description; + GETINT(img->image.id, params[3]); + + break; + } case EDJE_STATE_PARAM_BORDER: - if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0; - CHKPARAM(6); + { + Edje_Part_Description_Image *img; - GETINT(rp->custom->description->image.border.l, params[3]); - GETINT(rp->custom->description->image.border.r, params[4]); - GETINT(rp->custom->description->image.border.t, params[5]); - GETINT(rp->custom->description->image.border.b, params[6]); + if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0; + CHKPARAM(6); - break; + img = (Edje_Part_Description_Image*) rp->custom->description; + + GETINT(img->image.border.l, params[3]); + GETINT(img->image.border.r, params[4]); + GETINT(img->image.border.t, params[5]); + GETINT(img->image.border.b, params[6]); + + break; + } case EDJE_STATE_PARAM_FILL_SMOOTH: - if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0; - CHKPARAM(3); + { + Edje_Part_Description_Image *img; - GETINT(rp->custom->description->image.fill.smooth, params[3]); + if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0; + CHKPARAM(3); - break; + img = (Edje_Part_Description_Image*) rp->custom->description; + + GETINT(img->image.fill.smooth, params[3]); + + break; + } case EDJE_STATE_PARAM_FILL_POS: - if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0; - CHKPARAM(6); + { + Edje_Part_Description_Image *img; - GETFLOAT_T(rp->custom->description->image.fill.pos_rel_x, params[3]); - GETFLOAT_T(rp->custom->description->image.fill.pos_rel_y, params[4]); - GETINT(rp->custom->description->image.fill.pos_abs_x, params[5]); - GETINT(rp->custom->description->image.fill.pos_abs_y, params[6]); + if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0; + CHKPARAM(6); - break; + img = (Edje_Part_Description_Image*) rp->custom->description; + + GETFLOAT_T(img->image.fill.pos_rel_x, params[3]); + GETFLOAT_T(img->image.fill.pos_rel_y, params[4]); + GETINT(img->image.fill.pos_abs_x, params[5]); + GETINT(img->image.fill.pos_abs_y, params[6]); + + break; + } case EDJE_STATE_PARAM_FILL_SIZE: - if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0; - CHKPARAM(6); + { + Edje_Part_Description_Image *img; - GETFLOAT_T(rp->custom->description->image.fill.rel_x, params[3]); - GETFLOAT_T(rp->custom->description->image.fill.rel_y, params[4]); - GETINT(rp->custom->description->image.fill.abs_x, params[5]); - GETINT(rp->custom->description->image.fill.abs_y, params[6]); + if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0; + CHKPARAM(6); - break; + img = (Edje_Part_Description_Image*) rp->custom->description; + + GETFLOAT_T(img->image.fill.rel_x, params[3]); + GETFLOAT_T(img->image.fill.rel_y, params[4]); + GETINT(img->image.fill.abs_x, params[5]); + GETINT(img->image.fill.abs_y, params[6]); + + break; + } case EDJE_STATE_PARAM_TEXT: - if ( (rp->part->type != EDJE_PART_TYPE_TEXT) && \ - (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) - return 0; - CHKPARAM(3); + { + Edje_Part_Description_Text *text; - GETSTR(s, params[3]); - GETSTREVAS(s, rp->custom->description->text.text); + if ( (rp->part->type != EDJE_PART_TYPE_TEXT) && + (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + return 0; + CHKPARAM(3); - break; + GETSTR(s, params[3]); + + text = (Edje_Part_Description_Text*) rp->custom->description; + GETSTREVAS(s, text->text.text); + + break; + } case EDJE_STATE_PARAM_TEXT_CLASS: - if ( (rp->part->type != EDJE_PART_TYPE_TEXT) && \ - (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) - return 0; - CHKPARAM(3); + { + Edje_Part_Description_Text *text; - GETSTR(s, params[3]); - GETSTREVAS(s, rp->custom->description->text.text_class); + if ( (rp->part->type != EDJE_PART_TYPE_TEXT) && + (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + return 0; + CHKPARAM(3); - break; + GETSTR(s, params[3]); + + text = (Edje_Part_Description_Text*) rp->custom->description; + GETSTREVAS(s, text->text.text_class); + + break; + } case EDJE_STATE_PARAM_TEXT_FONT: - if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0; - CHKPARAM(3); + { + Edje_Part_Description_Text *text; - GETSTR(s, params[3]); - GETSTREVAS(s, rp->custom->description->text.font); + if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0; + CHKPARAM(3); - break; + GETSTR(s, params[3]); + + text = (Edje_Part_Description_Text*) rp->custom->description; + GETSTREVAS(s, text->text.font); + + break; + } case EDJE_STATE_PARAM_TEXT_STYLE: - if ((rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) return 0; - CHKPARAM(3); + { + Edje_Part_Description_Text *text; - GETSTR(s, params[3]); - GETSTREVAS(s, rp->custom->description->text.style); + if ((rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) return 0; + CHKPARAM(3); - break; + GETSTR(s, params[3]); + + text = (Edje_Part_Description_Text*) rp->custom->description; + GETSTREVAS(s, text->text.style); + + break; + } case EDJE_STATE_PARAM_TEXT_SIZE: - if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0; - CHKPARAM(3); + { + Edje_Part_Description_Text *text; - GETINT(rp->custom->description->text.size, params[3]); + if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0; + CHKPARAM(3); - break; + text = (Edje_Part_Description_Text*) rp->custom->description; + GETINT(text->text.size, params[3]); + + break; + } case EDJE_STATE_PARAM_TEXT_FIT: - if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0; - CHKPARAM(4); + { + Edje_Part_Description_Text *text; - GETINT(rp->custom->description->text.fit_x, params[3]); - GETINT(rp->custom->description->text.fit_y, params[4]); + if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0; + CHKPARAM(4); - break; + text = (Edje_Part_Description_Text*) rp->custom->description; + + GETINT(text->text.fit_x, params[3]); + GETINT(text->text.fit_y, params[4]); + + break; + } case EDJE_STATE_PARAM_TEXT_MIN: - if ( (rp->part->type != EDJE_PART_TYPE_TEXT) && \ - (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) - return 0; - CHKPARAM(4); + { + Edje_Part_Description_Text *text; - GETINT(rp->custom->description->text.min_x, params[3]); - GETINT(rp->custom->description->text.min_y, params[4]); + if ( (rp->part->type != EDJE_PART_TYPE_TEXT) && + (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + return 0; + CHKPARAM(4); - break; + text = (Edje_Part_Description_Text*) rp->custom->description; + + GETINT(text->text.min_x, params[3]); + GETINT(text->text.min_y, params[4]); + + break; + } case EDJE_STATE_PARAM_TEXT_MAX: - if ( (rp->part->type != EDJE_PART_TYPE_TEXT) && \ - (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) - return 0; - CHKPARAM(4); + { + Edje_Part_Description_Text *text; - GETINT(rp->custom->description->text.max_x, params[3]); - GETINT(rp->custom->description->text.max_y, params[4]); + if ( (rp->part->type != EDJE_PART_TYPE_TEXT) && + (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + return 0; + CHKPARAM(4); - break; + text = (Edje_Part_Description_Text*) rp->custom->description; + + GETINT(text->text.max_x, params[3]); + GETINT(text->text.max_y, params[4]); + + break; + } case EDJE_STATE_PARAM_TEXT_ALIGN: - if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0; - CHKPARAM(4); + { + Edje_Part_Description_Text *text; - GETFLOAT_T(rp->custom->description->text.align.x, params[3]); - GETFLOAT_T(rp->custom->description->text.align.y, params[4]); + if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0; + CHKPARAM(4); - break; + text = (Edje_Part_Description_Text*) rp->custom->description; + + GETFLOAT_T(text->text.align.x, params[3]); + GETFLOAT_T(text->text.align.y, params[4]); + + break; + } case EDJE_STATE_PARAM_VISIBLE: CHKPARAM(3); - GETINT(rp->custom->description->common.visible, params[3]); + GETINT(rp->custom->description->visible, params[3]); break; case EDJE_STATE_PARAM_MAP_OM: CHKPARAM(3); - GETINT(rp->custom->description->common.map.on, params[3]); + GETINT(rp->custom->description->map.on, params[3]); break; case EDJE_STATE_PARAM_MAP_PERSP: CHKPARAM(3); - GETINT(rp->custom->description->common.map.id_persp, params[3]); + GETINT(rp->custom->description->map.id_persp, params[3]); break; case EDJE_STATE_PARAM_MAP_LIGNT: CHKPARAM(3); - GETINT(rp->custom->description->common.map.id_light, params[3]); + GETINT(rp->custom->description->map.id_light, params[3]); break; case EDJE_STATE_PARAM_MAP_ROT_CENTER: CHKPARAM(3); - GETINT(rp->custom->description->common.map.rot.id_center, params[3]); + GETINT(rp->custom->description->map.rot.id_center, params[3]); break; case EDJE_STATE_PARAM_MAP_ROT_X: CHKPARAM(3); - GETFLOAT_T(rp->custom->description->common.map.rot.x, params[3]); + GETFLOAT_T(rp->custom->description->map.rot.x, params[3]); break; case EDJE_STATE_PARAM_MAP_ROT_Y: CHKPARAM(3); - GETFLOAT_T(rp->custom->description->common.map.rot.y, params[3]); + GETFLOAT_T(rp->custom->description->map.rot.y, params[3]); break; case EDJE_STATE_PARAM_MAP_ROT_Z: CHKPARAM(3); - GETFLOAT_T(rp->custom->description->common.map.rot.z, params[3]); + GETFLOAT_T(rp->custom->description->map.rot.z, params[3]); break; case EDJE_STATE_PARAM_MAP_BACK_CULL: CHKPARAM(3); - GETINT(rp->custom->description->common.map.backcull, params[3]); + GETINT(rp->custom->description->map.backcull, params[3]); break; case EDJE_STATE_PARAM_MAP_PERSP_ON: CHKPARAM(3); - GETINT(rp->custom->description->common.map.persp_on, params[3]); + GETINT(rp->custom->description->map.persp_on, params[3]); break; case EDJE_STATE_PARAM_PERSP_ZPLANE: CHKPARAM(3); - GETINT(rp->custom->description->common.persp.zplane, params[3]); + GETINT(rp->custom->description->persp.zplane, params[3]); break; case EDJE_STATE_PARAM_PERSP_FOCAL: CHKPARAM(3); - GETINT(rp->custom->description->common.persp.focal, params[3]); + GETINT(rp->custom->description->persp.focal, params[3]); break; default: @@ -2016,247 +2155,349 @@ _edje_embryo_fn_get_state_val(Embryo_Program *ep, Embryo_Cell *params) case EDJE_STATE_PARAM_ALIGNMENT: CHKPARAM(4); - SETFLOAT_T(rp->custom->description->common.align.x, params[3]); - SETFLOAT_T(rp->custom->description->common.align.y, params[4]); + SETFLOAT_T(rp->custom->description->align.x, params[3]); + SETFLOAT_T(rp->custom->description->align.y, params[4]); break; case EDJE_STATE_PARAM_MIN: CHKPARAM(4); - SETINT(rp->custom->description->common.min.w, params[3]); - SETINT(rp->custom->description->common.min.h, params[4]); + SETINT(rp->custom->description->min.w, params[3]); + SETINT(rp->custom->description->min.h, params[4]); break; case EDJE_STATE_PARAM_MAX: CHKPARAM(4); - SETINT(rp->custom->description->common.max.w, params[3]); - SETINT(rp->custom->description->common.max.h, params[4]); + SETINT(rp->custom->description->max.w, params[3]); + SETINT(rp->custom->description->max.h, params[4]); break; case EDJE_STATE_PARAM_STEP: CHKPARAM(4); - SETINT(rp->custom->description->common.step.x, params[3]); - SETINT(rp->custom->description->common.step.y, params[4]); + SETINT(rp->custom->description->step.x, params[3]); + SETINT(rp->custom->description->step.y, params[4]); break; case EDJE_STATE_PARAM_ASPECT: CHKPARAM(4); - SETFLOAT_T(rp->custom->description->common.aspect.min, params[3]); - SETFLOAT_T(rp->custom->description->common.aspect.max, params[4]); + SETFLOAT_T(rp->custom->description->aspect.min, params[3]); + SETFLOAT_T(rp->custom->description->aspect.max, params[4]); break; case EDJE_STATE_PARAM_ASPECT_PREF: CHKPARAM(3); - SETINT(rp->custom->description->common.aspect.prefer, params[3]); + SETINT(rp->custom->description->aspect.prefer, params[3]); break; case EDJE_STATE_PARAM_COLOR: CHKPARAM(6); - SETINT(rp->custom->description->common.color.r, params[3]); - SETINT(rp->custom->description->common.color.g, params[4]); - SETINT(rp->custom->description->common.color.b, params[5]); - SETINT(rp->custom->description->common.color.a, params[6]); + SETINT(rp->custom->description->color.r, params[3]); + SETINT(rp->custom->description->color.g, params[4]); + SETINT(rp->custom->description->color.b, params[5]); + SETINT(rp->custom->description->color.a, params[6]); break; case EDJE_STATE_PARAM_COLOR2: CHKPARAM(6); - SETINT(rp->custom->description->common.color2.r, params[3]); - SETINT(rp->custom->description->common.color2.g, params[4]); - SETINT(rp->custom->description->common.color2.b, params[5]); - SETINT(rp->custom->description->common.color2.a, params[6]); + SETINT(rp->custom->description->color2.r, params[3]); + SETINT(rp->custom->description->color2.g, params[4]); + SETINT(rp->custom->description->color2.b, params[5]); + SETINT(rp->custom->description->color2.a, params[6]); break; case EDJE_STATE_PARAM_COLOR3: - CHKPARAM(6); + { + Edje_Part_Description_Text *text; - SETINT(rp->custom->description->text.color3.r, params[3]); - SETINT(rp->custom->description->text.color3.g, params[4]); - SETINT(rp->custom->description->text.color3.b, params[5]); - SETINT(rp->custom->description->text.color3.a, params[6]); + if (rp->part->type == EDJE_PART_TYPE_TEXT + || rp->part->type == EDJE_PART_TYPE_TEXTBLOCK) + return 0; - break; + CHKPARAM(6); + + text = (Edje_Part_Description_Text*) rp->custom->description; + + SETINT(text->text.color3.r, params[3]); + SETINT(text->text.color3.g, params[4]); + SETINT(text->text.color3.b, params[5]); + SETINT(text->text.color3.a, params[6]); + + break; + } case EDJE_STATE_PARAM_COLOR_CLASS: CHKPARAM(4); - s = rp->custom->description->common.color_class; + s = rp->custom->description->color_class; SETSTRALLOCATE(s); break; case EDJE_STATE_PARAM_REL1: CHKPARAM(4); - SETFLOAT_T(rp->custom->description->common.rel1.relative_x, params[3]); - SETFLOAT_T(rp->custom->description->common.rel1.relative_y, params[4]); + SETFLOAT_T(rp->custom->description->rel1.relative_x, params[3]); + SETFLOAT_T(rp->custom->description->rel1.relative_y, params[4]); break; case EDJE_STATE_PARAM_REL1_TO: CHKPARAM(4); - SETINT(rp->custom->description->common.rel1.id_x, params[3]); - SETINT(rp->custom->description->common.rel1.id_y, params[4]); + SETINT(rp->custom->description->rel1.id_x, params[3]); + SETINT(rp->custom->description->rel1.id_y, params[4]); break; case EDJE_STATE_PARAM_REL1_OFFSET: CHKPARAM(4); - SETINT(rp->custom->description->common.rel1.offset_x, params[3]); - SETINT(rp->custom->description->common.rel1.offset_y, params[4]); + SETINT(rp->custom->description->rel1.offset_x, params[3]); + SETINT(rp->custom->description->rel1.offset_y, params[4]); break; case EDJE_STATE_PARAM_REL2: CHKPARAM(4); - SETFLOAT_T(rp->custom->description->common.rel2.relative_x, params[3]); - SETFLOAT_T(rp->custom->description->common.rel2.relative_y, params[4]); + SETFLOAT_T(rp->custom->description->rel2.relative_x, params[3]); + SETFLOAT_T(rp->custom->description->rel2.relative_y, params[4]); break; case EDJE_STATE_PARAM_REL2_TO: CHKPARAM(4); - SETINT(rp->custom->description->common.rel2.id_x, params[3]); - SETINT(rp->custom->description->common.rel2.id_y, params[4]); + SETINT(rp->custom->description->rel2.id_x, params[3]); + SETINT(rp->custom->description->rel2.id_y, params[4]); break; case EDJE_STATE_PARAM_REL2_OFFSET: CHKPARAM(4); - SETINT(rp->custom->description->common.rel2.offset_x, params[3]); - SETINT(rp->custom->description->common.rel2.offset_y, params[4]); + SETINT(rp->custom->description->rel2.offset_x, params[3]); + SETINT(rp->custom->description->rel2.offset_y, params[4]); break; case EDJE_STATE_PARAM_IMAGE: - if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0; - CHKPARAM(3); + { + Edje_Part_Description_Image *img; - SETINT(rp->custom->description->image.id, params[3]); + if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0; + CHKPARAM(3); - break; + img = (Edje_Part_Description_Image*) rp->custom->description; + + SETINT(img->image.id, params[3]); + + break; + } case EDJE_STATE_PARAM_BORDER: - if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0; - CHKPARAM(6); + { + Edje_Part_Description_Image *img; - SETINT(rp->custom->description->image.border.l, params[3]); - SETINT(rp->custom->description->image.border.r, params[4]); - SETINT(rp->custom->description->image.border.t, params[5]); - SETINT(rp->custom->description->image.border.b, params[6]); + if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0; + CHKPARAM(6); - break; + img = (Edje_Part_Description_Image*) rp->custom->description; + + SETINT(img->image.border.l, params[3]); + SETINT(img->image.border.r, params[4]); + SETINT(img->image.border.t, params[5]); + SETINT(img->image.border.b, params[6]); + + break; + } case EDJE_STATE_PARAM_FILL_SMOOTH: - if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0; - CHKPARAM(3); + { + Edje_Part_Description_Image *img; - SETINT(rp->custom->description->image.fill.smooth, params[3]); + if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0; + CHKPARAM(3); - break; + img = (Edje_Part_Description_Image*) rp->custom->description; + + SETINT(img->image.fill.smooth, params[3]); + + break; + } case EDJE_STATE_PARAM_FILL_POS: - if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0; - CHKPARAM(6); + { + Edje_Part_Description_Image *img; - SETFLOAT_T(rp->custom->description->image.fill.pos_rel_x, params[3]); - SETFLOAT_T(rp->custom->description->image.fill.pos_rel_y, params[4]); - SETINT(rp->custom->description->image.fill.pos_abs_x, params[5]); - SETINT(rp->custom->description->image.fill.pos_abs_y, params[6]); + if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0; + CHKPARAM(6); - break; + img = (Edje_Part_Description_Image*) rp->custom->description; + + SETFLOAT_T(img->image.fill.pos_rel_x, params[3]); + SETFLOAT_T(img->image.fill.pos_rel_y, params[4]); + SETINT(img->image.fill.pos_abs_x, params[5]); + SETINT(img->image.fill.pos_abs_y, params[6]); + + break; + } case EDJE_STATE_PARAM_FILL_SIZE: - if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0; - CHKPARAM(6); + { + Edje_Part_Description_Image *img; - SETFLOAT_T(rp->custom->description->image.fill.rel_x, params[3]); - SETFLOAT_T(rp->custom->description->image.fill.rel_y, params[4]); - SETINT(rp->custom->description->image.fill.abs_x, params[5]); - SETINT(rp->custom->description->image.fill.abs_y, params[6]); + if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0; + CHKPARAM(6); - break; + img = (Edje_Part_Description_Image*) rp->custom->description; + + SETFLOAT_T(img->image.fill.rel_x, params[3]); + SETFLOAT_T(img->image.fill.rel_y, params[4]); + SETINT(img->image.fill.abs_x, params[5]); + SETINT(img->image.fill.abs_y, params[6]); + + break; + } case EDJE_STATE_PARAM_TEXT: - if ( (rp->part->type != EDJE_PART_TYPE_TEXT) && \ - (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) - return 0; - CHKPARAM(4); + { + Edje_Part_Description_Text *text; - s = rp->custom->description->text.text; - SETSTRALLOCATE(s); + if (rp->part->type == EDJE_PART_TYPE_TEXT + || rp->part->type == EDJE_PART_TYPE_TEXTBLOCK) + return 0; - break; + CHKPARAM(4); + + text = (Edje_Part_Description_Text*) rp->custom->description; + + s = text->text.text; + SETSTRALLOCATE(s); + + break; + } case EDJE_STATE_PARAM_TEXT_CLASS: - if ( (rp->part->type != EDJE_PART_TYPE_TEXT) && \ + { + Edje_Part_Description_Text *text; + + if ( (rp->part->type != EDJE_PART_TYPE_TEXT) && (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) - return 0; - CHKPARAM(4); + return 0; - s = rp->custom->description->text.text_class; - SETSTRALLOCATE(s); + CHKPARAM(4); - break; + text = (Edje_Part_Description_Text*) rp->custom->description; + + s = text->text.text_class; + SETSTRALLOCATE(s); + + break; + } case EDJE_STATE_PARAM_TEXT_FONT: - if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0; - CHKPARAM(4); + { + Edje_Part_Description_Text *text; - s = rp->custom->description->text.font; - SETSTRALLOCATE(s); + if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0; - break; + CHKPARAM(4); + + text = (Edje_Part_Description_Text*) rp->custom->description; + + s = text->text.font; + SETSTRALLOCATE(s); + + break; + } case EDJE_STATE_PARAM_TEXT_STYLE: - if ((rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) return 0; - CHKPARAM(4); + { + Edje_Part_Description_Text *text; - s = rp->custom->description->text.style; - SETSTRALLOCATE(s); + if ((rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) return 0; - break; + CHKPARAM(4); + + text = (Edje_Part_Description_Text*) rp->custom->description; + + s = text->text.style; + SETSTRALLOCATE(s); + + break; + } case EDJE_STATE_PARAM_TEXT_SIZE: - if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0; - CHKPARAM(3); + { + Edje_Part_Description_Text *text; - SETINT(rp->custom->description->text.size, params[3]); + if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0; - break; + CHKPARAM(3); + + text = (Edje_Part_Description_Text*) rp->custom->description; + + SETINT(text->text.size, params[3]); + + break; + } case EDJE_STATE_PARAM_TEXT_FIT: - if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0; - CHKPARAM(4); + { + Edje_Part_Description_Text *text; - SETINT(rp->custom->description->text.fit_x, params[3]); - SETINT(rp->custom->description->text.fit_y, params[4]); + if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0; + CHKPARAM(4); - break; + text = (Edje_Part_Description_Text*) rp->custom->description; + + SETINT(text->text.fit_x, params[3]); + SETINT(text->text.fit_y, params[4]); + + break; + } case EDJE_STATE_PARAM_TEXT_MIN: - if ( (rp->part->type != EDJE_PART_TYPE_TEXT) && \ - (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) - return 0; - CHKPARAM(4); + { + Edje_Part_Description_Text *text; - SETINT(rp->custom->description->text.min_x, params[3]); - SETINT(rp->custom->description->text.min_y, params[4]); + if ( (rp->part->type != EDJE_PART_TYPE_TEXT) && + (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + return 0; - break; + CHKPARAM(4); + + text = (Edje_Part_Description_Text*) rp->custom->description; + + SETINT(text->text.min_x, params[3]); + SETINT(text->text.min_y, params[4]); + + break; + } case EDJE_STATE_PARAM_TEXT_MAX: - if ( (rp->part->type != EDJE_PART_TYPE_TEXT) && \ - (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) - return 0; - CHKPARAM(4); + { + Edje_Part_Description_Text *text; - SETINT(rp->custom->description->text.max_x, params[3]); - SETINT(rp->custom->description->text.max_y, params[4]); + if ( (rp->part->type != EDJE_PART_TYPE_TEXT) && + (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + return 0; - break; + CHKPARAM(4); + + text = (Edje_Part_Description_Text*) rp->custom->description; + + SETINT(text->text.max_x, params[3]); + SETINT(text->text.max_y, params[4]); + + break; + } case EDJE_STATE_PARAM_TEXT_ALIGN: - if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0; - CHKPARAM(4); + { + Edje_Part_Description_Text *text; - SETFLOAT_T(rp->custom->description->text.align.x, params[3]); - SETFLOAT_T(rp->custom->description->text.align.y, params[4]); + if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0; - break; + CHKPARAM(4); + + text = (Edje_Part_Description_Text*) rp->custom->description; + + SETFLOAT_T(text->text.align.x, params[3]); + SETFLOAT_T(text->text.align.y, params[4]); + + break; + } case EDJE_STATE_PARAM_VISIBLE: CHKPARAM(3); - SETINT(rp->custom->description->common.visible, params[3]); + SETINT(rp->custom->description->visible, params[3]); break; default: diff --git a/legacy/edje/src/lib/edje_entry.c b/legacy/edje/src/lib/edje_entry.c index 3f3536fefc..4fb2ff89ef 100644 --- a/legacy/edje/src/lib/edje_entry.c +++ b/legacy/edje/src/lib/edje_entry.c @@ -1893,10 +1893,13 @@ _edje_entry_real_part_init(Edje_Real_Part *rp) if (rp->part->entry_mode == EDJE_ENTRY_EDIT_MODE_PASSWORD) { + Edje_Part_Description_Text *txt; + + txt = (Edje_Part_Description_Text *) rp->chosen_description; + en->select_allow = 0; - if ((rp->chosen_description) && - (rp->chosen_description->text.repch)) - evas_object_textblock_replace_char_set(rp->object, rp->chosen_description->text.repch); + if (txt && txt->text.repch) + evas_object_textblock_replace_char_set(rp->object, txt->text.repch); else evas_object_textblock_replace_char_set(rp->object, "*"); } diff --git a/legacy/edje/src/lib/edje_external.c b/legacy/edje/src/lib/edje_external.c index c7bd86653f..f7dc77bcf9 100644 --- a/legacy/edje/src/lib/edje_external.c +++ b/legacy/edje/src/lib/edje_external.c @@ -620,9 +620,10 @@ _edje_external_params_free(Eina_List *external_params, Eina_Bool free_strings) void _edje_external_recalc_apply(Edje *ed, Edje_Real_Part *ep, Edje_Calc_Params *params, - Edje_Part_Description *chosen_desc) + Edje_Part_Description_Common *chosen_desc) { Edje_External_Type *type; + Edje_Part_Description_External *ext; void *params1, *params2 = NULL; if (!ep->swallowed_object) return; @@ -632,14 +633,20 @@ _edje_external_recalc_apply(Edje *ed, Edje_Real_Part *ep, if (!type->state_set) return; + ext = (Edje_Part_Description_External*) ep->param1.description; + params1 = ep->param1.external_params ? ep->param1.external_params : - ep->param1.description->external_params; + ext->external_params; if (ep->param2 && ep->param2->description) - params2 = ep->param2->external_params ? + { + ext = (Edje_Part_Description_External*) ep->param2->description; + + params2 = ep->param2->external_params ? ep->param2->external_params : - ep->param2->description->external_params; + ext->external_params; + } type->state_set(type->data, ep->swallowed_object, params1, params2, ep->description_pos); diff --git a/legacy/edje/src/lib/edje_load.c b/legacy/edje/src/lib/edje_load.c index beb8145b10..2d78b2ae8f 100644 --- a/legacy/edje/src/lib/edje_load.c +++ b/legacy/edje/src/lib/edje_load.c @@ -294,7 +294,7 @@ int _edje_object_file_set_internal(Evas_Object *obj, const char *file, const char *group, Eina_List *group_path) { Edje *ed; - int n; + unsigned int n; Eina_List *parts = NULL; Eina_List *old_swallows; int group_path_started = 0; @@ -348,34 +348,41 @@ _edje_object_file_set_internal(Evas_Object *obj, const char *file, const char *g } else { - Eina_List *l; int i; int errors = 0; - Edje_Part *ep; + unsigned int j; /* colorclass stuff */ - EINA_LIST_FOREACH(ed->collection->parts, l, ep) + for (j = 0; j < ed->collection->parts_count; ++j) { - Eina_List *hist = NULL; - Edje_Part_Description *desc; + Edje_Part *ep; + unsigned int k; + + ep = ed->collection->parts[j]; if (errors) break; /* Register any color classes in this parts descriptions. */ - if ((ep->default_desc) && (ep->default_desc->common.color_class)) - _edje_color_class_member_add(ed, ep->default_desc->common.color_class); + if ((ep->default_desc) && (ep->default_desc->color_class)) + _edje_color_class_member_add(ed, ep->default_desc->color_class); - EINA_LIST_FOREACH(ep->other_desc, hist, desc) - if (desc->common.color_class) - _edje_color_class_member_add(ed, desc->common.color_class); + for (k = 0; k < ep->other_count; k++) + { + Edje_Part_Description_Common *desc; + + desc = ep->other_desc[k]; + + 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 = eina_list_next(l), n++) + for (n = 0; n < ed->collection->parts_count; n++) { Edje_Part *ep; Edje_Real_Part *rp; - ep = eina_list_data_get(l); + ep = ed->collection->parts[n]; rp = eina_mempool_malloc(_edje_real_part_mp, sizeof(Edje_Real_Part)); if (!rp) { @@ -477,6 +484,8 @@ _edje_object_file_set_internal(Evas_Object *obj, const char *file, const char *g if (n > 0) { Edje_Real_Part *rp; + Eina_List *l; + ed->table_parts = malloc(sizeof(Edje_Real_Part *) * n); ed->table_parts_size = n; /* FIXME: check malloc return */ @@ -490,14 +499,14 @@ _edje_object_file_set_internal(Evas_Object *obj, const char *file, const char *g for (i = 0; i < ed->table_parts_size; i++) { rp = ed->table_parts[i]; - if (rp->param1.description->common.rel1.id_x >= 0) - rp->param1.rel1_to_x = ed->table_parts[rp->param1.description->common.rel1.id_x % ed->table_parts_size]; - if (rp->param1.description->common.rel1.id_y >= 0) - rp->param1.rel1_to_y = ed->table_parts[rp->param1.description->common.rel1.id_y % ed->table_parts_size]; - if (rp->param1.description->common.rel2.id_x >= 0) - rp->param1.rel2_to_x = ed->table_parts[rp->param1.description->common.rel2.id_x % ed->table_parts_size]; - if (rp->param1.description->common.rel2.id_y >= 0) - rp->param1.rel2_to_y = ed->table_parts[rp->param1.description->common.rel2.id_y % ed->table_parts_size]; + 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]; if (rp->part->clip_to_id >= 0) { rp->clip_to = ed->table_parts[rp->part->clip_to_id % ed->table_parts_size]; @@ -529,22 +538,31 @@ _edje_object_file_set_internal(Evas_Object *obj, const char *file, const char *g rp->swallow_params.min.w = 0; rp->swallow_params.max.w = -1; rp->swallow_params.max.h = -1; - - if (ed->file->feature_ver < 1) + + if (rp->part->type == EDJE_PART_TYPE_TEXT + || rp->part->type == EDJE_PART_TYPE_TEXTBLOCK) { - rp->param1.description->text.id_source = -1; - rp->param1.description->text.id_text_source = -1; + Edje_Part_Description_Text *text; + + text = (Edje_Part_Description_Text *) rp->param1.description; + + if (ed->file->feature_ver < 1) + { + text->text.id_source = -1; + text->text.id_text_source = -1; + } + + if (text->text.id_source >= 0) + rp->text.source = ed->table_parts[text->text.id_source % ed->table_parts_size]; + if (text->text.id_text_source >= 0) + rp->text.text_source = ed->table_parts[text->text.id_text_source % ed->table_parts_size]; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + _edje_entry_real_part_init(rp); + if (!ed->has_entries) + ed->has_entries = EINA_TRUE; + } } - 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->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) - { - _edje_entry_real_part_init(rp); - if (!ed->has_entries) - ed->has_entries = EINA_TRUE; - } } } @@ -554,6 +572,8 @@ _edje_object_file_set_internal(Evas_Object *obj, const char *file, const char *g if (n > 0) { Edje_Program *pr; + Eina_List *l; + /* 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; @@ -601,7 +621,8 @@ _edje_object_file_set_internal(Evas_Object *obj, const char *file, const char *g * XXX: and they're always set in this case, but GCC fails to * XXX: notice that, so let's shut it up */ - Eina_List *curr_item = NULL; + Edje_Pack_Element **curr_item = NULL; + unsigned int item_count = 0; Edje_Pack_Element *pack_it = NULL; const char *source = NULL; @@ -617,18 +638,30 @@ _edje_object_file_set_internal(Evas_Object *obj, const char *file, const char *g if (rp->part->items) { curr_item = rp->part->items; - pack_it = curr_item->data; - source = pack_it->source; + item_count = rp->part->items_count; + if (item_count > 0) + { + pack_it = *curr_item; + source = pack_it->source; + item_count--; + curr_item++; + } } break; case EDJE_PART_TYPE_EXTERNAL: { + Edje_Part_Description_External *external; Evas_Object *child_obj; - child_obj = _edje_external_type_add(rp->part->source, evas_object_evas_get(ed->obj), ed->obj, rp->part->default_desc->external_params, rp->part->name); + + external = (Edje_Part_Description_External *) rp->part->default_desc; + child_obj = _edje_external_type_add(rp->part->source, + evas_object_evas_get(ed->obj), ed->obj, + external->external_params, rp->part->name); if (child_obj) { _edje_real_part_swallow(rp, child_obj); - rp->param1.external_params = _edje_external_params_parse(child_obj, rp->param1.description->external_params); + rp->param1.external_params = _edje_external_params_parse(child_obj, + external->external_params); _edje_external_recalc_apply(ed, rp, NULL, rp->chosen_description); } } @@ -719,12 +752,19 @@ _edje_object_file_set_internal(Evas_Object *obj, const char *file, const char *g evas_object_data_set(child_obj, "\377 edje.table_item", pack_it); } rp->items = eina_list_append(rp->items, child_obj); - if (!(curr_item = curr_item->next)) - source = NULL; + + if (item_count > 0) + { + pack_it = *curr_item; + source = pack_it->source; + curr_item++; + item_count--; + } else { - pack_it = curr_item->data; - source = pack_it->source; + source = NULL; + curr_item = NULL; + pack_it = NULL; } } } @@ -772,12 +812,16 @@ _edje_object_file_set_internal(Evas_Object *obj, const char *file, const char *g if ((rp->part->type == EDJE_PART_TYPE_TEXTBLOCK) && (rp->part->default_desc)) { + Edje_Part_Description_Text *text; Edje_Style *stl = NULL; const char *style; - - style = rp->part->default_desc->text.style; + + text = (Edje_Part_Description_Text *) rp->part->default_desc; + style = text->text.style; if (style) { + Eina_List *l; + EINA_LIST_FOREACH(ed->file->styles, l, stl) { if ((stl->name) && (!strcmp(stl->name, style))) break; @@ -916,8 +960,11 @@ _edje_file_del(Edje *ed) _edje_lua_free_reg(ed->L, rp->custom->description); // created in edje_lua.c::_edje_lua_part_fn_custom_state } #endif - _edje_collection_free_part_description_free(rp->custom->description, - ed->file->free_strings); + _edje_collection_free_part_description_clean(rp->part->type, + rp->custom->description, + ed->file->free_strings); + free(rp->custom->description); + rp->custom->description = NULL; } /* Cleanup optional part. */ @@ -938,16 +985,18 @@ _edje_file_del(Edje *ed) } if ((ed->file) && (ed->collection)) { - Eina_List *l; Edje_Part *ep; + unsigned int i; _edje_textblock_styles_del(ed); - EINA_LIST_FOREACH(ed->collection->parts, l, ep) + for (i = 0; i < ed->collection->parts_count; ++i) { - _edje_text_part_on_del(ed, ep); - _edje_color_class_on_del(ed, ep); + ep = ed->collection->parts[i]; + + _edje_text_part_on_del(ed, ep); + _edje_color_class_on_del(ed, ep); } - + _edje_cache_coll_unref(ed->file, ed->collection); ed->collection = NULL; } @@ -1009,6 +1058,9 @@ _edje_file_free(Edje_File *edf) eina_hash_free(Hash); \ Hash = NULL; + /* Clean cache before cleaning memory pool */ + if (edf->collection_cache) _edje_cache_coll_flush(edf); + HASH_FREE(edf->fonts); HASH_FREE(edf->collection); HASH_FREE(edf->data); @@ -1064,7 +1116,6 @@ _edje_file_free(Edje_File *edf) if (edf->collection_patterns) edje_match_patterns_free(edf->collection_patterns); if (edf->path) eina_stringshare_del(edf->path); if (edf->free_strings && edf->compiler) eina_stringshare_del(edf->compiler); - if (edf->collection_cache) _edje_cache_coll_flush(edf); _edje_textblock_style_cleanup(edf); if (edf->ef) eet_close(edf->ef); free(edf); @@ -1073,10 +1124,10 @@ _edje_file_free(Edje_File *edf) } void -_edje_collection_free(Edje_File *edf, Edje_Part_Collection *ec) +_edje_collection_free(Edje_File *edf, Edje_Part_Collection *ec, Edje_Part_Collection_Directory_Entry *ce) { Edje_Program *pr; - Edje_Part *ep; + unsigned int i; _edje_embryo_script_shutdown(ec); EINA_LIST_FREE(ec->programs, pr) @@ -1100,34 +1151,26 @@ _edje_collection_free(Edje_File *edf, Edje_Part_Collection *ec) free(pa); free(pr); } - EINA_LIST_FREE(ec->parts, ep) + for (i = 0; i < ec->parts_count; ++i) { - Edje_Part_Description *desc; + Edje_Part *ep; + unsigned int j; + + ep = ec->parts[i]; if (edf->free_strings && ep->name) eina_stringshare_del(ep->name); if (ep->default_desc) { - _edje_collection_free_part_description_free(ep->default_desc, edf->free_strings); + _edje_collection_free_part_description_clean(ep->type, ep->default_desc, edf->free_strings); ep->default_desc = NULL; } - EINA_LIST_FREE(ep->other_desc, desc) - _edje_collection_free_part_description_free(desc, edf->free_strings); - free(ep); - } - if (ec->data) - { - Edje_Data *edt; + for (j = 0; j < ep->other_count; ++j) + _edje_collection_free_part_description_clean(ep->type, ep->other_desc[j], edf->free_strings); - EINA_LIST_FREE(ec->data, edt) - { - if (edf->free_strings) - { - if (edt->key) eina_stringshare_del(edt->key); - if (edt->value) eina_stringshare_del(edt->value); - } - free(edt); - } + free(ep->other_desc); + free(ep->items); } + if (ec->data) eina_hash_free(ec->data); #ifdef EDJE_PROGRAM_CACHE if (ec->prog_cache.no_matches) eina_hash_free(ec->prog_cache.no_matches); if (ec->prog_cache.matches) @@ -1139,30 +1182,93 @@ _edje_collection_free(Edje_File *edf, Edje_Part_Collection *ec) } #endif if (ec->script) embryo_program_free(ec->script); -#ifdef LUA2 +#ifdef LUA2 _edje_lua2_script_unload(ec); #endif + + /* Destroy all part and description. */ + eina_mempool_del(ce->mp.RECTANGLE); + eina_mempool_del(ce->mp.TEXT); + eina_mempool_del(ce->mp.IMAGE); + eina_mempool_del(ce->mp.SWALLOW); + eina_mempool_del(ce->mp.TEXTBLOCK); + eina_mempool_del(ce->mp.GROUP); + eina_mempool_del(ce->mp.BOX); + eina_mempool_del(ce->mp.TABLE); + eina_mempool_del(ce->mp.EXTERNAL); + eina_mempool_del(ce->mp.part); + memset(&ce->mp, 0, sizeof (ce->mp)); + free(ec); + ce->ref = NULL; } void -_edje_collection_free_part_description_free(Edje_Part_Description *desc, Eina_Bool free_strings) +_edje_collection_free_part_description_clean(int type, Edje_Part_Description_Common *desc, Eina_Bool free_strings) { Edje_Part_Image_Id *pi; - EINA_LIST_FREE(desc->image.tween_list, pi) - free(pi); - if (desc->external_params) - _edje_external_params_free(desc->external_params, free_strings); - if (free_strings) + if (free_strings && desc->color_class) eina_stringshare_del(desc->color_class); + + switch (type) { - if (desc->common.color_class) eina_stringshare_del(desc->common.color_class); - if (desc->text.text) eina_stringshare_del(desc->text.text); - if (desc->text.text_class) eina_stringshare_del(desc->text.text_class); - if (desc->text.style) eina_stringshare_del(desc->text.style); - if (desc->text.font) eina_stringshare_del(desc->text.font); + case EDJE_PART_TYPE_IMAGE: + { + Edje_Part_Description_Image *img; + + img = (Edje_Part_Description_Image *) desc; + + EINA_LIST_FREE(img->image.tween_list, pi) + free(pi); + } + case EDJE_PART_TYPE_EXTERNAL: + { + Edje_Part_Description_External *external; + + external = (Edje_Part_Description_External *) desc; + + if (external->external_params) + _edje_external_params_free(external->external_params, free_strings); + } + case EDJE_PART_TYPE_TEXT: + case EDJE_PART_TYPE_TEXTBLOCK: + if (free_strings) + { + Edje_Part_Description_Text *text; + + text = (Edje_Part_Description_Text *) desc; + + if (text->text.text) eina_stringshare_del(text->text.text); + if (text->text.text_class) eina_stringshare_del(text->text.text_class); + if (text->text.style) eina_stringshare_del(text->text.style); + if (text->text.font) eina_stringshare_del(text->text.font); + } + } +} + +void +_edje_collection_free_part_description_free(int type, + Edje_Part_Description_Common *desc, + Edje_Part_Collection_Directory_Entry *ce, + Eina_Bool free_strings) +{ +#define FREE_POOL(Type, Ce, Desc) \ + case EDJE_PART_TYPE_##Type: eina_mempool_free(Ce->mp.Type, Desc); break; + + _edje_collection_free_part_description_clean(type, desc, free_strings); + + switch (type) + { + FREE_POOL(RECTANGLE, ce, desc); + FREE_POOL(TEXT, ce, desc); + FREE_POOL(IMAGE, ce, desc); + FREE_POOL(SWALLOW, ce, desc); + FREE_POOL(TEXTBLOCK, ce, desc); + FREE_POOL(GROUP, ce, desc); + FREE_POOL(BOX, ce, desc); + FREE_POOL(TABLE, ce, desc); + FREE_POOL(EXTERNAL, ce, desc); } - free(desc); } #ifdef EDJE_PROGRAM_CACHE diff --git a/legacy/edje/src/lib/edje_private.h b/legacy/edje/src/lib/edje_private.h index e78b5e9524..2dfa38b5e5 100644 --- a/legacy/edje/src/lib/edje_private.h +++ b/legacy/edje/src/lib/edje_private.h @@ -213,7 +213,6 @@ typedef struct _Edje_Aspect Edje_Aspect; typedef struct _Edje_File Edje_File; typedef struct _Edje_Style Edje_Style; typedef struct _Edje_Style_Tag Edje_Style_Tag; -typedef struct _Edje_Data Edje_Data; typedef struct _Edje_External_Directory Edje_External_Directory; typedef struct _Edje_External_Directory_Entry Edje_External_Directory_Entry; typedef struct _Edje_Font_Directory_Entry Edje_Font_Directory_Entry; @@ -229,8 +228,14 @@ typedef struct _Edje_Part_Collection_Directory_Entry Edje_Part_Collection_Direct typedef struct _Edje_Pack_Element Edje_Pack_Element; typedef struct _Edje_Part_Collection Edje_Part_Collection; typedef struct _Edje_Part Edje_Part; +typedef struct _Edje_Part_Api Edje_Part_Api; +typedef struct _Edje_Part_Dragable Edje_Part_Dragable; typedef struct _Edje_Part_Image_Id Edje_Part_Image_Id; -typedef struct _Edje_Part_Description Edje_Part_Description; +typedef struct _Edje_Part_Description_Image Edje_Part_Description_Image; +typedef struct _Edje_Part_Description_Text Edje_Part_Description_Text; +typedef struct _Edje_Part_Description_Box Edje_Part_Description_Box; +typedef struct _Edje_Part_Description_Table Edje_Part_Description_Table; +typedef struct _Edje_Part_Description_External Edje_Part_Description_External; typedef struct _Edje_Part_Description_Common Edje_Part_Description_Common; typedef struct _Edje_Part_Description_Spec_Image Edje_Part_Description_Spec_Image; typedef struct _Edje_Part_Description_Spec_Text Edje_Part_Description_Spec_Text; @@ -367,13 +372,6 @@ struct _Edje_Style_Tag /*----------*/ -struct _Edje_Data -{ - const char *key; - char *value; -}; - -/*----------*/ struct _Edje_Font_Directory_Entry { @@ -522,8 +520,23 @@ struct _Edje_Part_Collection_Directory_Entry int BOX; int TABLE; int EXTERNAL; + int part; } count; + struct + { + Eina_Mempool *RECTANGLE; + Eina_Mempool *TEXT; + Eina_Mempool *IMAGE; + Eina_Mempool *SWALLOW; + Eina_Mempool *TEXTBLOCK; + Eina_Mempool *GROUP; + Eina_Mempool *BOX; + Eina_Mempool *TABLE; + Eina_Mempool *EXTERNAL; + Eina_Mempool *part; + } mp; + Edje_Part_Collection *ref; }; @@ -553,19 +566,23 @@ struct _Edje_Pack_Element struct _Edje_Part_Collection { - Eina_List *programs; /* a list of Edje_Program */ - Eina_List *parts; /* a list of Edje_Part */ - Eina_List *data; + Eina_List *programs; /* a list of Edje_Program *//* FIXME: use multiple array */ + + Edje_Part **parts; /* an array of Edje_Part */ + unsigned int parts_count; + + Eina_Hash *data; int id; /* the collection id */ - Eina_Hash *alias; /* aliasing part*/ + Eina_Hash *alias; /* aliasing part */ struct { Edje_Size min, max; } prop; int references; + #ifdef EDJE_PROGRAM_CACHE struct { Eina_Hash *no_matches; @@ -583,30 +600,41 @@ struct _Edje_Part_Collection unsigned char checked : 1; }; +struct _Edje_Part_Dragable +{ + int step_x; /* drag jumps n pixels (0 = no limit) */ + int step_y; /* drag jumps n pixels (0 = no limit) */ + + int count_x; /* drag area divided by n (0 = no limit) */ + int count_y; /* drag area divided by n (0 = no limit) */ + + int confine_id; /* dragging within this bit, -1 = no */ + + /* davinchi */ + int event_id; /* If it is used as scrollbar */ + + signed char x; /* can u click & drag this bit in x dir */ + signed char y; /* can u click & drag this bit in y dir */ +}; + +struct _Edje_Part_Api +{ + const char *name; + const char *description; +}; + struct _Edje_Part { - const char *name; /* the name if any of the part */ - Edje_Part_Description *default_desc; /* the part descriptor for default */ - Eina_List *other_desc; /* other possible descriptors */ - const char *source, *source2, *source3, *source4, *source5, *source6; + const char *name; /* the name if any of the part */ + Edje_Part_Description_Common *default_desc; /* the part descriptor for default */ + Edje_Part_Description_Common **other_desc; /* other possible descriptors */ + unsigned int other_count; + const char *source, *source2, *source3, *source4, *source5, *source6; int id; /* its id number */ int clip_to_id; /* the part id to clip this one to */ - struct { - int step_x; /* drag jumps n pixels (0 = no limit) */ - int step_y; /* drag jumps n pixels (0 = no limit) */ - - int count_x; /* drag area divided by n (0 = no limit) */ - int count_y; /* drag area divided by n (0 = no limit) */ - - int confine_id; /* dragging within this bit, -1 = no */ - - /* davinchi */ - int event_id; /* If it is used as scrollbar */ - - signed char x; /* can u click & drag this bit in x dir */ - signed char y; /* can u click & drag this bit in y dir */ - } dragable; - Eina_List *items; /* packed items for box and table */ + Edje_Part_Dragable dragable; + Edje_Pack_Element **items; /* packed items for box and table */ + unsigned int items_count; unsigned char type; /* what type (image, rect, text) */ unsigned char effect; /* 0 = plain... */ unsigned char mouse_events; /* it will affect/respond to mouse events */ @@ -619,10 +647,7 @@ struct _Edje_Part unsigned char entry_mode; unsigned char select_mode; unsigned char multiline; - struct { - const char *name; - const char *description; - } api; + Edje_Part_Api api; }; struct _Edje_Part_Image_Id @@ -757,14 +782,33 @@ struct _Edje_Part_Description_Spec_Table } padding; }; -struct _Edje_Part_Description +struct _Edje_Part_Description_Image { Edje_Part_Description_Common common; Edje_Part_Description_Spec_Image image; - Edje_Part_Description_Spec_Text text; - Edje_Part_Description_Spec_Box box; - Edje_Part_Description_Spec_Table table; +}; +struct _Edje_Part_Description_Text +{ + Edje_Part_Description_Common common; + Edje_Part_Description_Spec_Text text; +}; + +struct _Edje_Part_Description_Box +{ + Edje_Part_Description_Common common; + Edje_Part_Description_Spec_Box box; +}; + +struct _Edje_Part_Description_Table +{ + Edje_Part_Description_Common common; + Edje_Part_Description_Spec_Table table; +}; + +struct _Edje_Part_Description_External +{ + Edje_Part_Description_Common common; Eina_List *external_params; /* parameters for external objects */ }; @@ -950,7 +994,7 @@ struct _Edje_Real_Part_Set struct _Edje_Real_Part_State { - Edje_Part_Description *description; // 4 + Edje_Part_Description_Common *description; // 4 Edje_Real_Part *rel1_to_x; // 4 Edje_Real_Part *rel1_to_y; // 4 Edje_Real_Part *rel2_to_x; // 4 @@ -1024,7 +1068,7 @@ struct _Edje_Real_Part // text to front and have smaller struct for textblock FLOAT_T description_pos; // 8 - Edje_Part_Description *chosen_description; // 4 + Edje_Part_Description_Common *chosen_description; // 4 Edje_Real_Part_State param1; // 20 // WITH EDJE_CALC_CACHE: 140 Edje_Real_Part_State *param2, *custom; // 8 @@ -1296,7 +1340,9 @@ extern Eina_Mempool *_edje_real_part_mp; extern Eina_Mempool *_edje_real_part_state_mp; void _edje_part_pos_set(Edje *ed, Edje_Real_Part *ep, int mode, FLOAT_T pos); -Edje_Part_Description *_edje_part_description_find(Edje *ed, Edje_Real_Part *rp, const char *name, double val); +Edje_Part_Description_Common *_edje_part_description_find(Edje *ed, + Edje_Real_Part *rp, + const char *name, double val); void _edje_part_description_apply(Edje *ed, Edje_Real_Part *ep, const char *d1, double v1, const char *d2, double v2); void _edje_recalc(Edje *ed); void _edje_recalc_do(Edje *ed); @@ -1320,8 +1366,16 @@ void _edje_file_add(Edje *ed); void _edje_file_del(Edje *ed); void _edje_file_free(Edje_File *edf); void _edje_file_cache_shutdown(void); -void _edje_collection_free(Edje_File *edf, Edje_Part_Collection *ec); -void _edje_collection_free_part_description_free(Edje_Part_Description *desc, Eina_Bool free_strings); +void _edje_collection_free(Edje_File *edf, + Edje_Part_Collection *ec, + Edje_Part_Collection_Directory_Entry *ce); +void _edje_collection_free_part_description_clean(int type, + Edje_Part_Description_Common *desc, + Eina_Bool free_strings); +void _edje_collection_free_part_description_free(int type, + Edje_Part_Description_Common *desc, + Edje_Part_Collection_Directory_Entry *ce, + Eina_Bool free_strings); void _edje_object_smart_set(Edje_Smart_Api *sc); const Edje_Smart_Api * _edje_object_smart_class_get(void); @@ -1346,9 +1400,14 @@ void _edje_callbacks_patterns_clean(Edje *ed); void _edje_text_init(void); void _edje_text_part_on_add(Edje *ed, Edje_Real_Part *ep); void _edje_text_part_on_del(Edje *ed, Edje_Part *ep); -void _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep, Edje_Calc_Params *params, Edje_Part_Description *chosen_desc); +void _edje_text_recalc_apply(Edje *ed, + Edje_Real_Part *ep, + Edje_Calc_Params *params, + Edje_Part_Description_Text *chosen_desc); Evas_Font_Size _edje_text_size_calc(Evas_Font_Size size, Edje_Text_Class *tc); -const char * _edje_text_class_font_get(Edje *ed, Edje_Part_Description *chosen_desc, int *size, char **free_later); +const char * _edje_text_class_font_get(Edje *ed, + Edje_Part_Description_Text *chosen_desc, + int *size, char **free_later); Edje_Real_Part *_edje_real_part_get(Edje *ed, const char *part); @@ -1625,7 +1684,9 @@ void _edje_external_signal_emit(Evas_Object *obj, const char *emission, const ch Eina_Bool _edje_external_param_set(Evas_Object *obj, const Edje_External_Param *param) EINA_ARG_NONNULL(1, 2); Eina_Bool _edje_external_param_get(const Evas_Object *obj, Edje_External_Param *param) EINA_ARG_NONNULL(1, 2); void _edje_external_params_free(Eina_List *params, Eina_Bool free_strings); -void _edje_external_recalc_apply(Edje *ed, Edje_Real_Part *ep, Edje_Calc_Params *params, Edje_Part_Description *chosen_desc); +void _edje_external_recalc_apply(Edje *ed, Edje_Real_Part *ep, + Edje_Calc_Params *params, + Edje_Part_Description_Common *chosen_desc); void *_edje_external_params_parse(Evas_Object *obj, const Eina_List *params); void _edje_external_parsed_params_free(Evas_Object *obj, void *params); diff --git a/legacy/edje/src/lib/edje_program.c b/legacy/edje/src/lib/edje_program.c index a766c7e31b..def6f1b4e7 100644 --- a/legacy/edje/src/lib/edje_program.c +++ b/legacy/edje/src/lib/edje_program.c @@ -644,8 +644,8 @@ _edje_program_run(Edje *ed, Edje_Program *pr, Eina_Bool force, const char *ssig, if (rp->program) _edje_program_end(ed, rp->program); _edje_part_description_apply(ed, rp, - rp->param1.description->common.state.name, - rp->param1.description->common.state.value, + rp->param1.description->state.name, + rp->param1.description->state.value, pr->state, pr->value); _edje_part_pos_set(ed, rp, pr->tween.mode, ZERO); @@ -1136,7 +1136,7 @@ static Eina_Bool _edje_glob_callback(Edje_Program *pr, void *dt) { rp = _edje_real_part_get(data->ed, pr->filter.part ? pr->filter.part : data->source); if (rp) - exec = (rp->chosen_description->common.state.name == pr->filter.state); + exec = (rp->chosen_description->state.name == pr->filter.state); } if (exec) diff --git a/legacy/edje/src/lib/edje_text.c b/legacy/edje/src/lib/edje_text.c index e203435291..471befbce0 100644 --- a/legacy/edje/src/lib/edje_text.c +++ b/legacy/edje/src/lib/edje_text.c @@ -40,34 +40,46 @@ _edje_text_init(void) void _edje_text_part_on_add(Edje *ed, Edje_Real_Part *ep) { - Eina_List *tmp; Edje_Part *pt = ep->part; - Edje_Part_Description *desc; + Edje_Part_Description_Text *desc; + unsigned int i; if (ep->part->type != EDJE_PART_TYPE_TEXT) return; /* if text class exists for this part, add the edje to the tc member list */ - if ((pt->default_desc) && (pt->default_desc->text.text_class)) - _edje_text_class_member_add(ed, pt->default_desc->text.text_class); + desc = (Edje_Part_Description_Text *) pt->default_desc; + if ((pt->default_desc) && (desc->text.text_class)) + _edje_text_class_member_add(ed, desc->text.text_class); /* If any other classes exist add them */ - EINA_LIST_FOREACH(pt->other_desc, tmp, desc) - if ((desc) && (desc->text.text_class)) - _edje_text_class_member_add(ed, desc->text.text_class); + for (i = 0; i < pt->other_count; ++i) + { + desc = (Edje_Part_Description_Text *) pt->other_desc[i]; + if ((desc) && (desc->text.text_class)) + _edje_text_class_member_add(ed, desc->text.text_class); + } } void _edje_text_part_on_del(Edje *ed, Edje_Part *pt) { - Eina_List *tmp; - Edje_Part_Description *desc; + Edje_Part_Description_Text *desc; + unsigned int i; - if ((pt->default_desc) && (pt->default_desc->text.text_class)) - _edje_text_class_member_del(ed, pt->default_desc->text.text_class); + if (pt->type != EDJE_PART_TYPE_TEXT + && pt->type != EDJE_PART_TYPE_TEXTBLOCK) + return ; - EINA_LIST_FOREACH(pt->other_desc, tmp, desc) - if (desc->text.text_class) - _edje_text_class_member_del(ed, desc->text.text_class); + desc = (Edje_Part_Description_Text *) pt->default_desc; + if ((pt->default_desc) && (desc->text.text_class)) + _edje_text_class_member_del(ed, desc->text.text_class); + + for (i = 0; i < pt->other_count; ++i) + { + desc = (Edje_Part_Description_Text *) pt->other_desc[i]; + if (desc->text.text_class) + _edje_text_class_member_del(ed, desc->text.text_class); + } } static void @@ -267,7 +279,7 @@ _edje_text_font_get(const char *base, const char *new, char **free_later) } const char * -_edje_text_class_font_get(Edje *ed, Edje_Part_Description *chosen_desc, int *size, char **free_later) +_edje_text_class_font_get(Edje *ed, Edje_Part_Description_Text *chosen_desc, int *size, char **free_later) { Edje_Text_Class *tc; const char *text_class_name, *font; @@ -292,7 +304,7 @@ _edje_text_class_font_get(Edje *ed, Edje_Part_Description *chosen_desc, int *siz void _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep, Edje_Calc_Params *params, - Edje_Part_Description *chosen_desc) + Edje_Part_Description_Text *chosen_desc) { const char *text; const char *font; @@ -315,13 +327,13 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep, if (ep->text.text_source) { - text = ep->text.text_source->chosen_description->text.text; + text = ((Edje_Part_Description_Text *)ep->text.text_source->chosen_description)->text.text; if (ep->text.text_source->text.text) text = ep->text.text_source->text.text; } if (ep->text.source) { - font = ep->text.source->chosen_description->text.font; - size = ep->text.source->chosen_description->text.size; + font = ((Edje_Part_Description_Text *)ep->text.source->chosen_description)->text.font; + size = ((Edje_Part_Description_Text *)ep->text.source->chosen_description)->text.size; if (ep->text.source->text.font) font = ep->text.source->text.font; if (ep->text.source->text.size > 0) size = ep->text.source->text.size; } diff --git a/legacy/edje/src/lib/edje_util.c b/legacy/edje/src/lib/edje_util.c index 90cde2299f..af0ef6e01c 100644 --- a/legacy/edje/src/lib/edje_util.c +++ b/legacy/edje/src/lib/edje_util.c @@ -295,17 +295,13 @@ EAPI const char * edje_object_data_get(const Evas_Object *obj, const char *key) { Edje *ed; - Eina_List *l; - Edje_Data *di; ed = _edje_fetch(obj); if ((!ed) || (!key)) return NULL; if (!ed->collection) return NULL; - EINA_LIST_FOREACH(ed->collection->data, l, di) - if ((di->key) && (!strcmp(di->key, key))) - return (const char *)di->value; - return NULL; + if (!ed->collection->data) return NULL; + return eina_hash_find(ed->collection->data, key); } /** @@ -2855,7 +2851,7 @@ edje_object_size_min_restricted_calc(Evas_Object *obj, Evas_Coord *minw, Evas_Co didw = 0; if (ep->chosen_description) { - if (!ep->chosen_description->common.fixed.w) + if (!ep->chosen_description->fixed.w) { if (w > maxw) { @@ -2869,10 +2865,10 @@ edje_object_size_min_restricted_calc(Evas_Object *obj, Evas_Coord *minw, Evas_Co /* FIXME: do something */ } } - if (!ep->chosen_description->common.fixed.h) + if (!ep->chosen_description->fixed.h) { if (!((ep->part->type == EDJE_PART_TYPE_TEXTBLOCK) && - (!ep->chosen_description->text.min_x) && + (!((Edje_Part_Description_Text *)ep->chosen_description)->text.min_x) && (didw))) { if (h > maxh) @@ -2959,18 +2955,18 @@ edje_object_part_state_get(const Evas_Object *obj, const char *part, double *val } if (rp->chosen_description) { - if (val_ret) *val_ret = rp->chosen_description->common.state.value; - if (rp->chosen_description->common.state.name) - return rp->chosen_description->common.state.name; + if (val_ret) *val_ret = rp->chosen_description->state.value; + if (rp->chosen_description->state.name) + return rp->chosen_description->state.name; return "default"; } else { if (rp->param1.description) { - if (val_ret) *val_ret = rp->param1.description->common.state.value; - if (rp->param1.description->common.state.name) - return rp->param1.description->common.state.name; + if (val_ret) *val_ret = rp->param1.description->state.value; + if (rp->param1.description->state.name) + return rp->param1.description->state.name; return "default"; } } @@ -4454,15 +4450,14 @@ _edje_color_class_hash_free(void) void _edje_color_class_on_del(Edje *ed, Edje_Part *ep) { - Eina_List *tmp; - Edje_Part_Description *desc; + unsigned int i; - if ((ep->default_desc) && (ep->default_desc->common.color_class)) - _edje_color_class_member_del(ed, ep->default_desc->common.color_class); + if ((ep->default_desc) && (ep->default_desc->color_class)) + _edje_color_class_member_del(ed, ep->default_desc->color_class); - EINA_LIST_FOREACH(ep->other_desc, tmp, desc) - if (desc->common.color_class) - _edje_color_class_member_del(ed, desc->common.color_class); + for (i = 0; i < ep->other_count; ++i) + if (ep->other_desc[i]->color_class) + _edje_color_class_member_del(ed, ep->other_desc[i]->color_class); } Edje_Text_Class *