From 1d1a36047bedfaa747d0e98e52e62466718a173b Mon Sep 17 00:00:00 2001 From: Cedric BAIL Date: Sun, 15 Aug 2010 18:14:33 +0000 Subject: [PATCH] * edje: remove edje_convert use in edje_cc. SVN revision: 51134 --- legacy/edje/src/bin/Makefile.am | 3 +- legacy/edje/src/bin/edje_cc.c | 2 +- legacy/edje/src/bin/edje_cc.h | 8 +- legacy/edje/src/bin/edje_cc_handlers.c | 2439 +++++++++++++----------- legacy/edje/src/bin/edje_cc_out.c | 358 ++-- legacy/edje/src/bin/edje_convert.c | 1 + legacy/edje/src/lib/edje_edit.c | 10 +- legacy/edje/src/lib/edje_private.h | 6 +- legacy/edje/src/lib/edje_util.c | 44 +- 9 files changed, 1579 insertions(+), 1292 deletions(-) diff --git a/legacy/edje/src/bin/Makefile.am b/legacy/edje/src/bin/Makefile.am index b011fe2359..5b5a85d3b6 100644 --- a/legacy/edje/src/bin/Makefile.am +++ b/legacy/edje/src/bin/Makefile.am @@ -26,8 +26,7 @@ edje_cc_parse.c \ edje_cc_mem.c \ edje_cc_handlers.c \ edje_cc_sources.c \ -edje_prefix.c \ -edje_convert.c +edje_prefix.c edje_cc_LDADD = $(top_builddir)/src/lib/libedje.la $(ECORE_EVAS_LIBS) $(EVIL_LIBS) edje_cc_LDFLAGS = @lt_enable_auto_import@ diff --git a/legacy/edje/src/bin/edje_cc.c b/legacy/edje/src/bin/edje_cc.c index 3f3617077c..d6b1892e71 100644 --- a/legacy/edje/src/bin/edje_cc.c +++ b/legacy/edje/src/bin/edje_cc.c @@ -195,7 +195,7 @@ main(int argc, char **argv) if (!edje_init()) exit(-1); - edje_file = mem_alloc(SZ(Old_Edje_File)); + edje_file = mem_alloc(SZ(Edje_File)); edje_file->compiler = strdup("edje_cc"); edje_file->version = EDJE_FILE_VERSION; edje_file->feature_ver = 1; /* increment this every time we add a field diff --git a/legacy/edje/src/bin/edje_cc.h b/legacy/edje/src/bin/edje_cc.h index 795386fa5b..9f8838f3a4 100644 --- a/legacy/edje/src/bin/edje_cc.h +++ b/legacy/edje/src/bin/edje_cc.h @@ -3,8 +3,6 @@ #include -#include "edje_convert.h" - /* * On Windows, if the file is not opened in binary mode, * read does not return the correct size, because of @@ -105,8 +103,8 @@ struct _SrcFile_List /* global fn calls */ void data_setup(void); void data_write(void); -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_part_lookup(Edje_Part_Collection *pc, const char *name, int *dest); +void data_queue_program_lookup(Edje_Part_Collection *pc, const 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); @@ -170,7 +168,7 @@ extern int max_quality; extern int line; extern Eina_List *stack; extern Eina_List *params; -extern Old_Edje_File *edje_file; +extern Edje_File *edje_file; extern Eina_List *edje_collections; extern Eina_List *externals; extern Eina_List *fonts; diff --git a/legacy/edje/src/bin/edje_cc_handlers.c b/legacy/edje/src/bin/edje_cc_handlers.c index 58f2cafd47..79749a7d4c 100644 --- a/legacy/edje/src/bin/edje_cc_handlers.c +++ b/legacy/edje/src/bin/edje_cc_handlers.c @@ -65,6 +65,9 @@ * */ +static Edje_Part_Collection_Directory_Entry *current_de = NULL; +static Edje_Program *current_program = NULL; + static void st_externals_external(void); static void st_images_image(void); @@ -781,6 +784,127 @@ statement_handler_num(void) return sizeof(statement_handlers) / sizeof (New_Object_Handler); } +static Edje_Part_Description_Common * +_edje_part_description_alloc(unsigned char type, const char *collection, const char *part) +{ + Edje_Part_Description_Common *result = NULL; + + switch (type) + { + case EDJE_PART_TYPE_RECTANGLE: + case EDJE_PART_TYPE_SWALLOW: + case EDJE_PART_TYPE_GROUP: + result = mem_alloc(SZ(Edje_Part_Description_Common)); + break; + case EDJE_PART_TYPE_TEXT: + case EDJE_PART_TYPE_TEXTBLOCK: + { + Edje_Part_Description_Text *ed; + + ed = mem_alloc(SZ(Edje_Part_Description_Text)); + + ed->text.color3.r = 0; + ed->text.color3.g = 0; + ed->text.color3.b = 0; + ed->text.color3.a = 128; + ed->text.align.x = FROM_DOUBLE(0.5); + ed->text.align.y = FROM_DOUBLE(0.5); + ed->text.id_source = -1; + ed->text.id_text_source = -1; + + result = &ed->common; + break; + } + case EDJE_PART_TYPE_IMAGE: + { + Edje_Part_Description_Image *ed; + + ed = mem_alloc(SZ(Edje_Part_Description_Image)); + + ed->image.id = -1; + ed->image.fill.smooth = 1; + ed->image.fill.pos_rel_x = FROM_DOUBLE(0.0); + ed->image.fill.pos_abs_x = 0; + ed->image.fill.rel_x = FROM_DOUBLE(1.0); + ed->image.fill.abs_x = 0; + ed->image.fill.pos_rel_y = FROM_DOUBLE(0.0); + ed->image.fill.pos_abs_y = 0; + ed->image.fill.rel_y = FROM_DOUBLE(1.0); + ed->image.fill.abs_y = 0; + ed->image.fill.angle = 0; + ed->image.fill.spread = 0; + ed->image.fill.type = EDJE_FILL_TYPE_SCALE; + + result = &ed->common; + break; + } + case EDJE_PART_TYPE_BOX: + { + Edje_Part_Description_Box *ed; + + ed = mem_alloc(SZ(Edje_Part_Description_Box)); + + ed->box.layout = NULL; + ed->box.alt_layout = NULL; + ed->box.align.x = FROM_DOUBLE(0.5); + ed->box.align.y = FROM_DOUBLE(0.5); + ed->box.padding.x = 0; + ed->box.padding.y = 0; + + result = &ed->common; + break; + } + case EDJE_PART_TYPE_TABLE: + { + Edje_Part_Description_Table *ed; + + ed = mem_alloc(SZ(Edje_Part_Description_Table)); + + ed->table.homogeneous = EDJE_OBJECT_TABLE_HOMOGENEOUS_NONE; + ed->table.align.x = FROM_DOUBLE(0.5); + ed->table.align.y = FROM_DOUBLE(0.5); + ed->table.padding.x = 0; + ed->table.padding.y = 0; + + result = &ed->common; + break; + } + case EDJE_PART_TYPE_EXTERNAL: + { + Edje_Part_Description_External *ed; + + ed = mem_alloc(SZ(Edje_Part_Description_External)); + + ed->external_params = NULL; + + result = &ed->common; + break; + } + } + + if (!result) + { + ERR("%s: Error. Unknow type %i of part %s in collection %s.", progname, type, part, collection); + exit(-1); + } + + return result; +} + +static void +_edje_program_check(const char *name, Edje_Program *me, Edje_Program **pgrms, unsigned int count) +{ + unsigned int i; + + for (i = 0; i < count; ++i) + if (pgrms[i] != me && pgrms[i]->name && (!strcmp(name, pgrms[i]->name))) + { + ERR("%s: Error. parse error %s:%i. There is already a program of the name %s\n", + progname, file_in, line - 1, name); + exit(-1); + } +} + /*****/ /** @@ -813,12 +937,11 @@ static void st_externals_external(void) { External *ex; - Edje_External_Directory_Entry *ext; check_arg_count(1); if (!edje_file->external_dir) - edje_file->external_dir = mem_alloc(SZ(Old_Edje_External_Directory)); + edje_file->external_dir = mem_alloc(SZ(Edje_External_Directory)); ex = mem_alloc(SZ(External)); ex->name = parse_str(0); @@ -840,9 +963,18 @@ st_externals_external(void) if (edje_file->external_dir) { - ext = mem_alloc(SZ(Edje_External_Directory_Entry)); - ext->entry = mem_strdup(ex->name); - edje_file->external_dir->entries = eina_list_append(edje_file->external_dir->entries, ext); + edje_file->external_dir->entries_count++; + edje_file->external_dir->entries = realloc(edje_file->external_dir->entries, + sizeof (Edje_External_Directory) * edje_file->external_dir->entries_count); + memset(edje_file->external_dir->entries + edje_file->external_dir->entries_count - 1, + 0, sizeof (Edje_External_Directory)); + if (!edje_file->external_dir->entries) + { + ERR("%s: Error. not enought memory", progname); + exit(-1); + } + + edje_file->external_dir->entries[edje_file->external_dir->entries_count - 1].entry = mem_strdup(ex->name); } } @@ -903,28 +1035,37 @@ static void st_images_image(void) { Edje_Image_Directory_Entry *img; + const char *tmp; + unsigned int i; int v; if (!edje_file->image_dir) - edje_file->image_dir = mem_alloc(SZ(Old_Edje_Image_Directory)); - img = mem_alloc(SZ(Edje_Image_Directory_Entry)); - img->entry = parse_str(0); - { - Eina_List *l; - Edje_Image_Directory_Entry *limg; + edje_file->image_dir = mem_alloc(SZ(Edje_Image_Directory)); - EINA_LIST_FOREACH(edje_file->image_dir->entries, l, limg) - { - if (!strcmp(limg->entry, img->entry)) - { - free((char*) img->entry); - free(img); - return; - } - } + tmp = parse_str(0); + + for (i = 0; i < edje_file->image_dir->entries_count; ++i) + if (!strcmp(edje_file->image_dir->entries[i].entry, tmp)) + { + free((char*) tmp); + return; + } + + edje_file->image_dir->entries_count++; + edje_file->image_dir->entries = realloc(edje_file->image_dir->entries, + sizeof (Edje_Image_Directory_Entry) * edje_file->image_dir->entries_count); + memset(edje_file->image_dir->entries + edje_file->image_dir->entries_count - 1, + 0, sizeof (Edje_Image_Directory_Entry)); + if (!edje_file->image_dir->entries) + { + ERR("%s: Error. No enought memory.", progname); + exit(-1); } - edje_file->image_dir->entries = eina_list_append(edje_file->image_dir->entries, img); - img->id = eina_list_count(edje_file->image_dir->entries) - 1; + + img = edje_file->image_dir->entries + edje_file->image_dir->entries_count - 1; + + img->entry = tmp; + img->id = edje_file->image_dir->entries_count - 1; v = parse_enum(1, "RAW", 0, "COMP", 1, @@ -996,13 +1137,20 @@ st_images_image(void) static void ob_images_set(void) { - Edje_Image_Directory_Set *set; - if (!edje_file->image_dir) - edje_file->image_dir = mem_alloc(SZ(Old_Edje_Image_Directory)); - set = mem_alloc(SZ(Edje_Image_Directory_Set)); - set->id = eina_list_count(edje_file->image_dir->sets); - edje_file->image_dir->sets = eina_list_append(edje_file->image_dir->sets, set); + edje_file->image_dir = mem_alloc(SZ(Edje_Image_Directory)); + + edje_file->image_dir->sets_count++; + edje_file->image_dir->sets = realloc(edje_file->image_dir->sets, + sizeof (Edje_Image_Directory_Set) * edje_file->image_dir->sets_count); + memset(edje_file->image_dir->sets + edje_file->image_dir->sets_count - 1, + 0, sizeof (Edje_Image_Directory_Set)); + if (!edje_file->image_dir->sets) + { + ERR("%s: Error. Not enought memory.", progname); + exit(-1); + } + edje_file->image_dir->sets[edje_file->image_dir->sets_count - 1].id = edje_file->image_dir->sets_count - 1; } /** @@ -1019,12 +1167,9 @@ ob_images_set(void) static void st_images_set_name(void) { - Edje_Image_Directory_Set *set; - check_arg_count(1); - set = eina_list_data_get(eina_list_last(edje_file->image_dir->sets)); - set->name = parse_str(0); + edje_file->image_dir->sets[edje_file->image_dir->sets_count - 1].name = parse_str(0); } static void @@ -1033,7 +1178,7 @@ ob_images_set_image(void) Edje_Image_Directory_Set_Entry *entry; Edje_Image_Directory_Set *set; - set = eina_list_data_get(eina_list_last(edje_file->image_dir->sets)); + set = edje_file->image_dir->sets + edje_file->image_dir->sets_count - 1; entry = mem_alloc(SZ(Edje_Image_Directory_Set_Entry)); @@ -1045,10 +1190,9 @@ st_images_set_image_image(void) { Edje_Image_Directory_Set_Entry *entry; Edje_Image_Directory_Set *set; - Edje_Image_Directory_Entry *img; - Eina_List *l; + unsigned int i; - set = eina_list_data_get(eina_list_last(edje_file->image_dir->sets)); + set = edje_file->image_dir->sets + edje_file->image_dir->sets_count - 1; entry = eina_list_data_get(eina_list_last(set->entries)); /* Add the image to the global pool with the same syntax. */ @@ -1056,12 +1200,12 @@ st_images_set_image_image(void) entry->name = parse_str(0); - EINA_LIST_FOREACH(edje_file->image_dir->entries, l, img) - if (!strcmp(img->entry, entry->name)) + for (i = 0; i < edje_file->image_dir->entries_count; ++i) + if (!strcmp(edje_file->image_dir->entries[i].entry, entry->name)) { - entry->id = img->id; + entry->id = i; return; - } + } } /** @@ -1080,8 +1224,8 @@ st_images_set_image_size(void) { Edje_Image_Directory_Set_Entry *entry; Edje_Image_Directory_Set *set; - - set = eina_list_data_get(eina_list_last(edje_file->image_dir->sets)); + + set = edje_file->image_dir->sets + edje_file->image_dir->sets_count - 1; entry = eina_list_data_get(eina_list_last(set->entries)); entry->size.min.w = parse_int(0); @@ -1130,40 +1274,25 @@ static void st_fonts_font(void) { Font *fn; - Edje_Font_Directory_Entry *fnt; check_arg_count(2); - if (!edje_file->font_dir) - edje_file->font_dir = mem_alloc(SZ(Old_Edje_Font_Directory)); + if (!edje_file->fonts) + edje_file->fonts = eina_hash_string_small_new(free); fn = mem_alloc(SZ(Font)); fn->file = parse_str(0); fn->name = parse_str(1); - { - Eina_List *l; - Font *lfn; - EINA_LIST_FOREACH(fonts, l, lfn) - { - if (!strcmp(lfn->name, fn->name)) - { - free(fn->file); - free(fn->name); - free(fn); - return; - } - } - } - fonts = eina_list_append(fonts, fn); - - if (edje_file->font_dir) + if (eina_hash_find(edje_file->fonts, fn->name)) { - fnt = mem_alloc(SZ(Edje_Font_Directory_Entry)); - fnt->entry = mem_strdup(fn->name); - fnt->file = mem_strdup(fn->file); - edje_file->font_dir->entries = eina_list_append(edje_file->font_dir->entries, fnt); + free(fn->file); + free(fn->name); + free(fn); + return; } + + eina_hash_direct_add(edje_file->fonts, fn->name, fn); } /** @@ -1194,14 +1323,21 @@ st_fonts_font(void) static void st_data_item(void) { - Old_Edje_Data *di; + Edje_String *es; + char *key; check_arg_count(2); - di = mem_alloc(SZ(Old_Edje_Data)); - di->key = parse_str(0); - di->value = parse_str(1); - edje_file->data = eina_list_append(edje_file->data, di); + key = parse_str(0); + + es = mem_alloc(SZ(Edje_String)); + es->str = parse_str(1); + + if (!edje_file->data) + edje_file->data = eina_hash_string_small_new(free); + + /* FIXME: check if data already exist */ + eina_hash_direct_add(edje_file->data, key, es); } /** @@ -1221,17 +1357,19 @@ st_data_file(void) { const char *data; const char *over; - Old_Edje_Data *di; + Edje_String *es; char *filename; char *value; + char *key; int fd; int i; struct stat buf; check_arg_count(2); - di = mem_alloc(SZ(Old_Edje_Data)); - di->key = parse_str(0); + key = parse_str(0); + + es = mem_alloc(SZ(Edje_String)); filename = parse_str(1); fd = open(filename, O_RDONLY | O_BINARY, S_IRUSR | S_IWUSR); @@ -1272,8 +1410,9 @@ st_data_file(void) munmap((void*)data, buf.st_size); close(fd); - di->value = value; - edje_file->data = eina_list_append(edje_file->data, di); + es->str = value; + + eina_hash_direct_add(edje_file->data, key, es); free(filename); } @@ -1556,8 +1695,8 @@ st_styles_style_tag(void) static void ob_collections(void) { - if (!edje_file->collection_dir) - edje_file->collection_dir = mem_alloc(SZ(Old_Edje_Part_Collection_Directory)); + if (!edje_file->collection) + edje_file->collection = eina_hash_string_small_new(NULL); } /** @@ -1592,17 +1731,21 @@ ob_collections(void) static void ob_collections_group(void) { - Edje_Part_Collection_Directory_Entry *de; - Old_Edje_Part_Collection *pc; + 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(Old_Edje_Part_Collection)); + if (current_de != NULL && current_de->entry == NULL) + { + ERR("%p: Error. A collection without a name was detected, that's not allowed.", progname); + exit(-1); + } + + current_de = mem_alloc(SZ(Edje_Part_Collection_Directory_Entry)); + current_de->id = eina_list_count(edje_collections); + + pc = mem_alloc(SZ(Edje_Part_Collection)); edje_collections = eina_list_append(edje_collections, pc); - pc->id = eina_list_count(edje_collections) - 1; + pc->id = current_de->id; cd = mem_alloc(SZ(Code)); codes = eina_list_append(codes, cd); @@ -1624,51 +1767,42 @@ ob_collections_group(void) static void st_collections_group_name(void) { - Edje_Part_Collection_Directory_Entry *de, *de_other, *alias; - Eina_List *l, *l2; + Edje_Part_Collection_Directory_Entry *older; + Edje_Part_Collection *current_pc; check_arg_count(1); - de = eina_list_data_get(eina_list_last(edje_file->collection_dir->entries)); - de->entry = parse_str(0); - EINA_LIST_FOREACH(edje_file->collection_dir->entries, l, de_other) - { - if ((de_other != de) && (de_other->entry) && - (!strcmp(de->entry, de_other->entry))) - { - Old_Edje_Part_Collection *pc; - Code *cd; - int i; - - pc = eina_list_nth(edje_collections, de_other->id); - cd = eina_list_nth(codes, de_other->id); - - edje_file->collection_dir->entries = - eina_list_remove(edje_file->collection_dir->entries, de_other); - edje_collections = - eina_list_remove(edje_collections, pc); - codes = - eina_list_remove(codes, cd); + current_pc = eina_list_data_get(eina_list_last(edje_collections)); - for (i = 0, l = edje_file->collection_dir->entries; l; l = eina_list_next(l), i++) - { - de_other = eina_list_data_get(l); - for (l2 = aliases; l2; l2 = l2->next) - { - alias = l2->data; - if (alias->id == de_other->id) - alias->id = i; - } - de_other->id = i; - } - for (i = 0, l = edje_collections; l; l = eina_list_next(l), i++) - { - pc = eina_list_data_get(l); - pc->id = i; - } - break; + current_de->entry = parse_str(0); + current_pc->part = current_de->entry; + + older = eina_hash_find(edje_file->collection, current_de->entry); + + if (older) + { + Edje_Part_Collection *pc; + Eina_List *l; + Code *cd; + int i = 0; + + pc = eina_list_nth(edje_collections, older->id); + cd = eina_list_nth(codes, older->id); + + eina_hash_del(edje_file->collection, current_de->entry, older); + edje_collections = eina_list_remove(edje_collections, pc); + codes = eina_list_remove(codes, cd); + + EINA_LIST_FOREACH(edje_collections, l, pc) + { + older = eina_hash_find(edje_file->collection, pc->part); + + pc->id = i++; + if (older) older->id = pc->id; } } + + eina_hash_direct_add(edje_file->collection, current_de->entry, current_de); } /** @@ -1685,7 +1819,7 @@ st_collections_group_name(void) static void st_collections_group_script_only(void) { - Old_Edje_Part_Collection *pc; + Edje_Part_Collection *pc; check_arg_count(1); @@ -1696,7 +1830,7 @@ st_collections_group_script_only(void) static void st_collections_group_lua_script_only(void) { - Old_Edje_Part_Collection *pc; + Edje_Part_Collection *pc; check_arg_count(1); @@ -1718,13 +1852,12 @@ st_collections_group_lua_script_only(void) static void st_collections_group_alias(void) { - Edje_Part_Collection_Directory_Entry *de, *alias; + Edje_Part_Collection_Directory_Entry *alias; check_arg_count(1); - de = eina_list_data_get(eina_list_last(edje_file->collection_dir->entries)); alias = mem_alloc(SZ(Edje_Part_Collection_Directory_Entry)); - alias->id = de->id; + alias->id = current_de->id; alias->entry = parse_str(0); aliases = eina_list_append(aliases, alias); @@ -1744,7 +1877,7 @@ st_collections_group_alias(void) static void st_collections_group_min(void) { - Old_Edje_Part_Collection *pc; + Edje_Part_Collection *pc; check_arg_count(2); @@ -1767,7 +1900,7 @@ st_collections_group_min(void) static void st_collections_group_max(void) { - Old_Edje_Part_Collection *pc; + Edje_Part_Collection *pc; check_arg_count(2); @@ -1867,16 +2000,23 @@ ob_collections_group_lua_script(void) static void st_collections_group_data_item(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Data *di; + Edje_Part_Collection *pc; + Edje_String *es; + char *key; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - di = mem_alloc(SZ(Old_Edje_Data)); - di->key = parse_str(0); - di->value = parse_str(1); - pc->data = eina_list_append(pc->data, di); + + if (!pc->data) + pc->data = eina_hash_string_small_new(free); + + key = parse_str(0); + + es = mem_alloc(SZ(Edje_String)); + es->str = parse_str(1); + + eina_hash_direct_add(pc->data, key, es); } /** @@ -1898,7 +2038,7 @@ st_collections_group_data_item(void) static void st_collections_group_parts_alias(void) { - Old_Edje_Part_Collection *pc; + Edje_Part_Collection *pc; check_arg_count(2); @@ -1944,13 +2084,22 @@ st_collections_group_parts_alias(void) static void ob_collections_group_parts_part(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + 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; + pc->parts_count++; + pc->parts = realloc(pc->parts, pc->parts_count * sizeof (Edje_Part *)); + if (!pc->parts) + { + ERR("%s: Error. Not enought memory.", progname); + exit(-1); + } + pc->parts[pc->parts_count - 1] = ep; + + ep->id = pc->parts_count - 1; ep->type = EDJE_PART_TYPE_IMAGE; ep->mouse_events = 1; ep->repeat_events = 0; @@ -1980,22 +2129,21 @@ ob_collections_group_parts_part(void) static void st_collections_group_parts_part_name(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; ep->name = parse_str(0); { - Eina_List *l; - Old_Edje_Part *lep; + unsigned int i; - EINA_LIST_FOREACH(pc->parts, l, lep) + for (i = 0; i < pc->parts_count - 1; ++i) { - if ((lep != ep) && (lep->name) && (!strcmp(lep->name, ep->name))) + if (pc->parts[i]->name && (!strcmp(pc->parts[i]->name, ep->name))) { ERR("%s: Error. parse error %s:%i. There is already a part of the name %s", progname, file_in, line - 1, ep->name); @@ -2028,13 +2176,13 @@ st_collections_group_parts_part_name(void) static void st_collections_group_parts_part_type(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; ep->type = parse_enum(0, "NONE", EDJE_PART_TYPE_NONE, "RECT", EDJE_PART_TYPE_RECTANGLE, @@ -2047,6 +2195,13 @@ st_collections_group_parts_part_type(void) "TABLE", EDJE_PART_TYPE_TABLE, "EXTERNAL", EDJE_PART_TYPE_EXTERNAL, NULL); + + if (ep->default_desc || ep->other.desc_count > 0) + { + ERR("%s: Error. parse error %s:%i. You can't change type after defining description in part of the name %s", + progname, file_in, line - 1, ep->name); + exit(-1); + } } /** @@ -2064,13 +2219,13 @@ st_collections_group_parts_part_type(void) static void st_collections_group_parts_part_mouse_events(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; ep->mouse_events = parse_bool(0); } @@ -2088,13 +2243,13 @@ st_collections_group_parts_part_mouse_events(void) static void st_collections_group_parts_part_repeat_events(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; ep->repeat_events = parse_bool(0); } @@ -2116,13 +2271,13 @@ st_collections_group_parts_part_repeat_events(void) static void st_collections_group_parts_part_ignore_flags(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; check_min_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; ep->ignore_flags = parse_flags(0, "NONE", EVAS_EVENT_FLAG_NONE, "ON_HOLD", EVAS_EVENT_FLAG_ON_HOLD, @@ -2148,13 +2303,13 @@ st_collections_group_parts_part_ignore_flags(void) static void st_collections_group_parts_part_scale(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; ep->scale = parse_bool(0); } @@ -2177,13 +2332,13 @@ st_collections_group_parts_part_scale(void) static void st_collections_group_parts_part_pointer_mode(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; ep->pointer_mode = parse_enum(0, "AUTOGRAB", EVAS_OBJECT_POINTER_MODE_AUTOGRAB, "NOGRAB", EVAS_OBJECT_POINTER_MODE_NOGRAB, @@ -2204,13 +2359,13 @@ st_collections_group_parts_part_pointer_mode(void) static void st_collections_group_parts_part_precise_is_inside(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; ep->precise_is_inside = parse_bool(0); } @@ -2229,13 +2384,13 @@ st_collections_group_parts_part_precise_is_inside(void) static void st_collections_group_parts_part_use_alternate_font_metrics(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; ep->use_alternate_font_metrics = parse_bool(0); } @@ -2253,13 +2408,13 @@ st_collections_group_parts_part_use_alternate_font_metrics(void) static void st_collections_group_parts_part_clip_to_id(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; { char *name; @@ -2286,13 +2441,13 @@ st_collections_group_parts_part_clip_to_id(void) static void st_collections_group_parts_part_source(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; //FIXME: validate this somehow (need to decide on the format also) ep->source = parse_str(0); @@ -2313,13 +2468,13 @@ st_collections_group_parts_part_source(void) static void st_collections_group_parts_part_source2(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; //FIXME: validate this somehow (need to decide on the format also) ep->source2 = parse_str(0); @@ -2340,13 +2495,13 @@ st_collections_group_parts_part_source2(void) static void st_collections_group_parts_part_source3(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; //FIXME: validate this somehow (need to decide on the format also) ep->source3 = parse_str(0); @@ -2367,13 +2522,13 @@ st_collections_group_parts_part_source3(void) static void st_collections_group_parts_part_source4(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; //FIXME: validate this somehow (need to decide on the format also) ep->source4 = parse_str(0); @@ -2394,13 +2549,13 @@ st_collections_group_parts_part_source4(void) static void st_collections_group_parts_part_source5(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; //FIXME: validate this somehow (need to decide on the format also) ep->source5 = parse_str(0); @@ -2421,13 +2576,13 @@ st_collections_group_parts_part_source5(void) static void st_collections_group_parts_part_source6(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; //FIXME: validate this somehow (need to decide on the format also) ep->source6 = parse_str(0); @@ -2457,13 +2612,13 @@ st_collections_group_parts_part_source6(void) static void st_collections_group_parts_part_effect(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; ep->effect = parse_enum(0, "NONE", EDJE_TEXT_EFFECT_NONE, "PLAIN", EDJE_TEXT_EFFECT_PLAIN, @@ -2501,13 +2656,13 @@ st_collections_group_parts_part_effect(void) static void st_collections_group_parts_part_entry_mode(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; ep->entry_mode = parse_enum(0, "NONE", EDJE_ENTRY_EDIT_MODE_NONE, "PLAIN", EDJE_ENTRY_EDIT_MODE_SELECTABLE, @@ -2535,13 +2690,13 @@ st_collections_group_parts_part_entry_mode(void) static void st_collections_group_parts_part_select_mode(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; ep->select_mode = parse_enum(0, "DEFAULT", EDJE_ENTRY_SELECTION_MODE_DEFAULT, "EXPLICIT", EDJE_ENTRY_SELECTION_MODE_EXPLICIT, @@ -2562,13 +2717,13 @@ st_collections_group_parts_part_select_mode(void) static void st_collections_group_parts_part_multiline(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; ep->multiline = parse_bool(0); } @@ -2612,13 +2767,13 @@ st_collections_group_parts_part_multiline(void) static void st_collections_group_parts_part_dragable_x(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; check_arg_count(3); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; ep->dragable.x = parse_int_range(0, -1, 1); ep->dragable.step_x = parse_int_range(1, 0, 0x7fffffff); ep->dragable.count_x = parse_int_range(2, 0, 0x7fffffff); @@ -2642,13 +2797,13 @@ st_collections_group_parts_part_dragable_x(void) static void st_collections_group_parts_part_dragable_y(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; check_arg_count(3); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; ep->dragable.y = parse_int_range(0, -1, 1); ep->dragable.step_y = parse_int_range(1, 0, 0x7fffffff); ep->dragable.count_y = parse_int_range(2, 0, 0x7fffffff); @@ -2669,13 +2824,13 @@ st_collections_group_parts_part_dragable_y(void) static void st_collections_group_parts_part_dragable_confine(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; { char *name; @@ -2699,13 +2854,13 @@ st_collections_group_parts_part_dragable_confine(void) static void st_collections_group_parts_part_dragable_events(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; { char *name; @@ -2750,12 +2905,12 @@ st_collections_group_parts_part_dragable_events(void) */ static void ob_collections_group_parts_part_box_items_item(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; Edje_Pack_Element *item; pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; if ((ep->type != EDJE_PART_TYPE_BOX) && (ep->type != EDJE_PART_TYPE_TABLE)) { @@ -2765,8 +2920,16 @@ static void ob_collections_group_parts_part_box_items_item(void) exit(-1); } + ep->items_count++; + ep->items = realloc(ep->items, sizeof (Edje_Pack_Element*) * ep->items_count); + if (!ep->items) + { + ERR("%s: Error. Not enought memory.", progname); + exit(-1); + } + item = mem_alloc(SZ(Edje_Pack_Element)); - ep->items = eina_list_append(ep->items, item); + ep->items[ep->items_count - 1] = item; item->type = EDJE_PART_TYPE_GROUP; item->name = NULL; item->source = NULL; @@ -2806,16 +2969,15 @@ static void ob_collections_group_parts_part_box_items_item(void) */ static void st_collections_group_parts_part_box_items_item_type(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; Edje_Pack_Element *item; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); - - item = eina_list_data_get(eina_list_last(ep->items)); + ep = pc->parts[pc->parts_count - 1]; + item = ep->items[ep->items_count - 1]; { char *s; @@ -2845,16 +3007,16 @@ static void st_collections_group_parts_part_box_items_item_type(void) */ static void st_collections_group_parts_part_box_items_item_name(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; Edje_Pack_Element *item; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; + item = ep->items[ep->items_count - 1]; - item = eina_list_data_get(eina_list_last(ep->items)); item->name = parse_str(0); } @@ -2870,16 +3032,16 @@ static void st_collections_group_parts_part_box_items_item_name(void) */ static void st_collections_group_parts_part_box_items_item_source(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; Edje_Pack_Element *item; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; + item = ep->items[ep->items_count - 1]; - item = eina_list_data_get(eina_list_last(ep->items)); item->source = parse_str(0); } @@ -2895,16 +3057,16 @@ static void st_collections_group_parts_part_box_items_item_source(void) */ static void st_collections_group_parts_part_box_items_item_min(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; Edje_Pack_Element *item; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; + item = ep->items[ep->items_count - 1]; - item = eina_list_data_get(eina_list_last(ep->items)); item->min.w = parse_int_range(0, 0, 0x7ffffff); item->min.h = parse_int_range(1, 0, 0x7ffffff); } @@ -2921,16 +3083,16 @@ static void st_collections_group_parts_part_box_items_item_min(void) */ static void st_collections_group_parts_part_box_items_item_prefer(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; Edje_Pack_Element *item; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; + item = ep->items[ep->items_count - 1]; - item = eina_list_data_get(eina_list_last(ep->items)); item->prefer.w = parse_int_range(0, 0, 0x7ffffff); item->prefer.h = parse_int_range(1, 0, 0x7ffffff); } @@ -2946,16 +3108,16 @@ static void st_collections_group_parts_part_box_items_item_prefer(void) */ static void st_collections_group_parts_part_box_items_item_max(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; Edje_Pack_Element *item; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; + item = ep->items[ep->items_count - 1]; - item = eina_list_data_get(eina_list_last(ep->items)); item->max.w = parse_int_range(0, 0, 0x7ffffff); item->max.h = parse_int_range(1, 0, 0x7ffffff); } @@ -2972,16 +3134,16 @@ static void st_collections_group_parts_part_box_items_item_max(void) */ static void st_collections_group_parts_part_box_items_item_padding(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; Edje_Pack_Element *item; check_arg_count(4); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; + item = ep->items[ep->items_count - 1]; - item = eina_list_data_get(eina_list_last(ep->items)); item->padding.l = parse_int_range(0, 0, 0x7ffffff); item->padding.r = parse_int_range(1, 0, 0x7ffffff); item->padding.t = parse_int_range(2, 0, 0x7ffffff); @@ -3000,16 +3162,16 @@ static void st_collections_group_parts_part_box_items_item_padding(void) */ static void st_collections_group_parts_part_box_items_item_align(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; Edje_Pack_Element *item; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; + item = ep->items[ep->items_count - 1]; - item = eina_list_data_get(eina_list_last(ep->items)); item->align.x = FROM_DOUBLE(parse_float_range(0, -1.0, 1.0)); item->align.y = FROM_DOUBLE(parse_float_range(1, -1.0, 1.0)); } @@ -3026,16 +3188,16 @@ static void st_collections_group_parts_part_box_items_item_align(void) */ static void st_collections_group_parts_part_box_items_item_weight(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; Edje_Pack_Element *item; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; + item = ep->items[ep->items_count - 1]; - item = eina_list_data_get(eina_list_last(ep->items)); item->weight.x = FROM_DOUBLE(parse_float_range(0, 0.0, 99999.99)); item->weight.y = FROM_DOUBLE(parse_float_range(1, 0.0, 99999.99)); } @@ -3052,16 +3214,16 @@ static void st_collections_group_parts_part_box_items_item_weight(void) */ static void st_collections_group_parts_part_box_items_item_aspect(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; Edje_Pack_Element *item; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; + item = ep->items[ep->items_count - 1]; - item = eina_list_data_get(eina_list_last(ep->items)); item->aspect.w = parse_int_range(0, 0, 0x7fffffff); item->aspect.h = parse_int_range(1, 0, 0x7fffffff); } @@ -3078,16 +3240,16 @@ 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) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; Edje_Pack_Element *item; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; + item = ep->items[ep->items_count - 1]; - item = eina_list_data_get(eina_list_last(ep->items)); item->aspect.mode = parse_enum(0, "NONE", EDJE_ASPECT_CONTROL_NONE, "NEITHER", EDJE_ASPECT_CONTROL_NEITHER, @@ -3109,16 +3271,16 @@ 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) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; Edje_Pack_Element *item; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; + item = ep->items[ep->items_count - 1]; - item = eina_list_data_get(eina_list_last(ep->items)); item->options = parse_str(0); } @@ -3135,14 +3297,15 @@ static void st_collections_group_parts_part_box_items_item_options(void) */ static void st_collections_group_parts_part_table_items_item_position(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; Edje_Pack_Element *item; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; + item = ep->items[ep->items_count - 1]; if (ep->type != EDJE_PART_TYPE_TABLE) { @@ -3151,8 +3314,7 @@ static void st_collections_group_parts_part_table_items_item_position(void) progname, file_in, line - 1); exit(-1); } - - item = eina_list_data_get(eina_list_last(ep->items)); + item->col = parse_int_range(0, 0, 0xffff); item->row = parse_int_range(1, 0, 0xffff); } @@ -3170,14 +3332,15 @@ static void st_collections_group_parts_part_table_items_item_position(void) */ static void st_collections_group_parts_part_table_items_item_span(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; + Edje_Part_Collection *pc; + Edje_Part *ep; Edje_Pack_Element *item; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; + item = ep->items[ep->items_count - 1]; if (ep->type != EDJE_PART_TYPE_TABLE) { @@ -3187,7 +3350,6 @@ static void st_collections_group_parts_part_table_items_item_span(void) exit(-1); } - item = eina_list_data_get(eina_list_last(ep->items)); item->colspan = parse_int_range(0, 1, 0xffff); item->rowspan = parse_int_range(1, 1, 0xffff); } @@ -3229,93 +3391,70 @@ static void st_collections_group_parts_part_table_items_item_span(void) static void ob_collections_group_parts_part_description(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *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(Old_Edje_Part_Description)); + ep = pc->parts[pc->parts_count - 1]; + + ed = _edje_part_description_alloc(ep->type, pc->part, ep->name); + if (!ep->default_desc) - ep->default_desc = ed; + { + ep->default_desc = ed; + } else - ep->other_desc = eina_list_append(ep->other_desc, ed); - ed->common.visible = 1; - ed->common.align.x = FROM_DOUBLE(0.5); - ed->common.align.y = FROM_DOUBLE(0.5); - ed->common.min.w = 0; - ed->common.min.h = 0; - ed->common.fixed.w = 0; - ed->common.fixed.h = 0; - ed->common.max.w = -1; - ed->common.max.h = -1; - ed->common.rel1.relative_x = FROM_DOUBLE(0.0); - ed->common.rel1.relative_y = FROM_DOUBLE(0.0); - ed->common.rel1.offset_x = 0; - ed->common.rel1.offset_y = 0; - ed->common.rel1.id_x = -1; - ed->common.rel1.id_y = -1; - ed->common.rel2.relative_x = FROM_DOUBLE(1.0); - ed->common.rel2.relative_y = FROM_DOUBLE(1.0); - ed->common.rel2.offset_x = -1; - ed->common.rel2.offset_y = -1; - ed->common.rel2.id_x = -1; - ed->common.rel2.id_y = -1; - ed->image.id = -1; - ed->image.fill.smooth = 1; - ed->image.fill.pos_rel_x = FROM_DOUBLE(0.0); - ed->image.fill.pos_abs_x = 0; - ed->image.fill.rel_x = FROM_DOUBLE(1.0); - ed->image.fill.abs_x = 0; - ed->image.fill.pos_rel_y = FROM_DOUBLE(0.0); - ed->image.fill.pos_abs_y = 0; - ed->image.fill.rel_y = FROM_DOUBLE(1.0); - ed->image.fill.abs_y = 0; - ed->image.fill.angle = 0; - ed->image.fill.spread = 0; - ed->image.fill.type = EDJE_FILL_TYPE_SCALE; - ed->common.color_class = NULL; - ed->common.color.r = 255; - ed->common.color.g = 255; - ed->common.color.b = 255; - ed->common.color.a = 255; - ed->common.color2.r = 0; - ed->common.color2.g = 0; - ed->common.color2.b = 0; - ed->common.color2.a = 255; - ed->text.color3.r = 0; - ed->text.color3.g = 0; - ed->text.color3.b = 0; - ed->text.color3.a = 128; - ed->text.align.x = FROM_DOUBLE(0.5); - ed->text.align.y = FROM_DOUBLE(0.5); - ed->text.id_source = -1; - ed->text.id_text_source = -1; - ed->box.layout = NULL; - ed->box.alt_layout = NULL; - ed->box.align.x = FROM_DOUBLE(0.5); - ed->box.align.y = FROM_DOUBLE(0.5); - ed->box.padding.x = 0; - ed->box.padding.y = 0; - ed->table.homogeneous = EDJE_OBJECT_TABLE_HOMOGENEOUS_NONE; - ed->table.align.x = FROM_DOUBLE(0.5); - ed->table.align.y = FROM_DOUBLE(0.5); - ed->table.padding.x = 0; - ed->table.padding.y = 0; - ed->common.map.id_persp = -1; - ed->common.map.id_light = -1; - ed->common.map.rot.id_center = -1; - ed->common.map.rot.x = FROM_DOUBLE(0.0); - ed->common.map.rot.y = FROM_DOUBLE(0.0); - ed->common.map.rot.z = FROM_DOUBLE(0.0); - ed->common.map.on = 0; - ed->common.map.smooth = 1; - ed->common.map.alpha = 1; - ed->common.map.backcull = 0; - ed->common.map.persp_on = 0; - ed->common.persp.zplane = 0; - ed->common.persp.focal = 1000; - ed->external_params = NULL; + { + ep->other.desc_count++; + ep->other.desc = realloc(ep->other.desc, + sizeof (Edje_Part_Description_Common*) * ep->other.desc_count); + ep->other.desc[ep->other.desc_count - 1] = ed; + } + + ed->visible = 1; + ed->align.x = FROM_DOUBLE(0.5); + ed->align.y = FROM_DOUBLE(0.5); + ed->min.w = 0; + ed->min.h = 0; + ed->fixed.w = 0; + ed->fixed.h = 0; + ed->max.w = -1; + ed->max.h = -1; + ed->rel1.relative_x = FROM_DOUBLE(0.0); + ed->rel1.relative_y = FROM_DOUBLE(0.0); + ed->rel1.offset_x = 0; + ed->rel1.offset_y = 0; + ed->rel1.id_x = -1; + ed->rel1.id_y = -1; + ed->rel2.relative_x = FROM_DOUBLE(1.0); + ed->rel2.relative_y = FROM_DOUBLE(1.0); + ed->rel2.offset_x = -1; + ed->rel2.offset_y = -1; + ed->rel2.id_x = -1; + ed->rel2.id_y = -1; + ed->color_class = NULL; + ed->color.r = 255; + ed->color.g = 255; + ed->color.b = 255; + ed->color.a = 255; + ed->color2.r = 0; + ed->color2.g = 0; + ed->color2.b = 0; + ed->color2.a = 255; + ed->map.id_persp = -1; + ed->map.id_light = -1; + ed->map.rot.id_center = -1; + ed->map.rot.x = FROM_DOUBLE(0.0); + ed->map.rot.y = FROM_DOUBLE(0.0); + ed->map.rot.z = FROM_DOUBLE(0.0); + ed->map.on = 0; + ed->map.smooth = 1; + ed->map.alpha = 1; + ed->map.backcull = 0; + ed->map.persp_on = 0; + ed->persp.zplane = 0; + ed->persp.focal = 1000; } /** @@ -3334,10 +3473,9 @@ ob_collections_group_parts_part_description(void) static void st_collections_group_parts_part_description_inherit(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed, *parent = NULL; - Eina_List *l; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed, *parent = NULL; Edje_Part_Image_Id *iid; char *parent_name; const char *state_name; @@ -3346,10 +3484,10 @@ st_collections_group_parts_part_description_inherit(void) check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; /* inherit may not be used in the default description */ - if (!ep->other_desc) + if (!ep->other.desc_count) { ERR("%s: Error. parse error %s:%i. " "inherit may not be used in the default description", @@ -3357,9 +3495,9 @@ st_collections_group_parts_part_description_inherit(void) exit(-1); } - ed = eina_list_data_get(eina_list_last(ep->other_desc)); + ed = ep->other.desc[ep->other.desc_count - 1]; - if (!ed->common.state.name) + if (!ed->state.name) { ERR("%s: Error. parse error %s:%i. " "inherit may only be used after state", @@ -3375,22 +3513,25 @@ st_collections_group_parts_part_description_inherit(void) parent = ep->default_desc; else { + Edje_Part_Description_Common *d; double min_dst = 999.0; - Old_Edje_Part_Description *d; + unsigned int i; if (!strcmp(parent_name, "default")) { parent = ep->default_desc; - min_dst = ABS(ep->default_desc->common.state.value - parent_val); + min_dst = ABS(ep->default_desc->state.value - parent_val); } - EINA_LIST_FOREACH(ep->other_desc, l, d) + for (i = 0; i < ep->other.desc_count; ++i) { - if (!strcmp (d->common.state.name, parent_name)) + d = ep->other.desc[i]; + + if (!strcmp (d->state.name, parent_name)) { double dst; - dst = ABS(d->common.state.value - parent_val); + dst = ABS(d->state.value - parent_val); if (dst < min_dst) { parent = d; @@ -3408,61 +3549,118 @@ st_collections_group_parts_part_description_inherit(void) exit(-1); } - free (parent_name); + free(parent_name); /* now do a full copy, only state info will be kept */ - state_name = ed->common.state.name; - state_val = ed->common.state.value; + state_name = ed->state.name; + state_val = ed->state.value; *ed = *parent; - ed->common.state.name = state_name; - ed->common.state.value = state_val; + ed->state.name = state_name; + ed->state.value = state_val; - data_queue_part_slave_lookup(&parent->common.rel1.id_x, &ed->common.rel1.id_x); - data_queue_part_slave_lookup(&parent->common.rel1.id_y, &ed->common.rel1.id_y); - data_queue_part_slave_lookup(&parent->common.rel2.id_x, &ed->common.rel2.id_x); - data_queue_part_slave_lookup(&parent->common.rel2.id_y, &ed->common.rel2.id_y); - data_queue_image_slave_lookup(&parent->image.id, &ed->image.id); + data_queue_part_slave_lookup(&parent->rel1.id_x, &ed->rel1.id_x); + data_queue_part_slave_lookup(&parent->rel1.id_y, &ed->rel1.id_y); + data_queue_part_slave_lookup(&parent->rel2.id_x, &ed->rel2.id_x); + data_queue_part_slave_lookup(&parent->rel2.id_y, &ed->rel2.id_y); /* make sure all the allocated memory is getting copied, not just * referenced */ - ed->image.tween_list = NULL; - - EINA_LIST_FOREACH(parent->image.tween_list, l, iid) - { - Edje_Part_Image_Id *iid_new; - - iid_new = mem_alloc(SZ(Edje_Part_Image_Id)); - data_queue_image_slave_lookup(&(iid->id), &(iid_new->id)); - ed->image.tween_list = eina_list_append(ed->image.tween_list, iid_new); - } - #define STRDUP(x) x ? strdup(x) : NULL - ed->common.color_class = STRDUP(ed->common.color_class); - ed->text.text.str = STRDUP(ed->text.text.str); - ed->text.text_class = STRDUP(ed->text.text_class); - ed->text.font.str = STRDUP(ed->text.font.str); -#undef STRDUP - - data_queue_part_slave_lookup(&(parent->text.id_source), &(ed->text.id_source)); - data_queue_part_slave_lookup(&(parent->text.id_text_source), &(ed->text.id_text_source)); - - if (parent->external_params) + ed->color_class = STRDUP(ed->color_class); + switch (ep->type) { - Eina_List *l; - Edje_External_Param *param, *new_param; + case EDJE_PART_TYPE_RECTANGLE: + case EDJE_PART_TYPE_SWALLOW: + case EDJE_PART_TYPE_GROUP: + /* Nothing todo, this part only have a common description. */ + break; + case EDJE_PART_TYPE_TEXT: + case EDJE_PART_TYPE_TEXTBLOCK: + { + Edje_Part_Description_Text *ted = (Edje_Part_Description_Text*) ed; + Edje_Part_Description_Text *tparent = (Edje_Part_Description_Text*) parent; - ed->external_params = NULL; - EINA_LIST_FOREACH(parent->external_params, l, param) - { - new_param = mem_alloc(SZ(Edje_External_Param)); - *new_param = *param; - ed->external_params = eina_list_append(ed->external_params, new_param); - } + ted->text = tparent->text; + + ted->text.text.str = STRDUP(ted->text.text.str); + ted->text.text_class = STRDUP(ted->text.text_class); + ted->text.font.str = STRDUP(ted->text.font.str); + + data_queue_part_slave_lookup(&(tparent->text.id_source), &(ted->text.id_source)); + data_queue_part_slave_lookup(&(tparent->text.id_text_source), &(ted->text.id_text_source)); + + break; + } + case EDJE_PART_TYPE_IMAGE: + { + Edje_Part_Description_Image *ied = (Edje_Part_Description_Image *) ed; + Edje_Part_Description_Image *iparent = (Edje_Part_Description_Image *) parent; + unsigned int i; + + ied->image = iparent->image; + + data_queue_image_slave_lookup(&iparent->image.id, &ied->image.id); + + ied->image.tweens = calloc(iparent->image.tweens_count, + sizeof (Edje_Part_Image_Id*)); + for (i = 0; i < iparent->image.tweens_count; i++) + { + Edje_Part_Image_Id *iid_new; + + iid = iparent->image.tweens[i]; + + iid_new = mem_alloc(SZ(Edje_Part_Image_Id)); + data_queue_image_slave_lookup(&(iid->id), &(iid_new->id)); + ied->image.tweens[i] = iid_new; + } + + break; + } + case EDJE_PART_TYPE_BOX: + { + Edje_Part_Description_Box *bed = (Edje_Part_Description_Box *) ed; + Edje_Part_Description_Box *bparent = (Edje_Part_Description_Box *) parent; + + bed->box = bparent->box; + + break; + } + case EDJE_PART_TYPE_TABLE: + { + Edje_Part_Description_Table *ted = (Edje_Part_Description_Table *) ed; + Edje_Part_Description_Table *tparent = (Edje_Part_Description_Table *) parent; + + ted->table = tparent->table; + + break; + } + case EDJE_PART_TYPE_EXTERNAL: + { + Edje_Part_Description_External *eed = (Edje_Part_Description_External *) ed; + Edje_Part_Description_External *eparent = (Edje_Part_Description_External *) parent; + + if (eparent->external_params) + { + Eina_List *l; + Edje_External_Param *param, *new_param; + + eed->external_params = NULL; + EINA_LIST_FOREACH(eparent->external_params, l, param) + { + new_param = mem_alloc(SZ(Edje_External_Param)); + *new_param = *param; + eed->external_params = eina_list_append(eed->external_params, new_param); + } + } + break; + } } + +#undef STRDUP } /** @@ -3482,17 +3680,18 @@ st_collections_group_parts_part_description_inherit(void) static void st_collections_group_parts_part_description_state(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; char *s; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; + ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; s = parse_str(0); if (!strcmp (s, "custom")) @@ -3503,8 +3702,8 @@ st_collections_group_parts_part_description_state(void) exit(-1); } - ed->common.state.name = s; - ed->common.state.value = parse_float_range(1, 0.0, 1.0); + ed->state.name = s; + ed->state.value = parse_float_range(1, 0.0, 1.0); } /** @@ -3521,17 +3720,19 @@ st_collections_group_parts_part_description_state(void) static void st_collections_group_parts_part_description_visible(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; + ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - ed->common.visible = parse_bool(0); + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + ed->visible = parse_bool(0); } /** @@ -3549,18 +3750,20 @@ st_collections_group_parts_part_description_visible(void) static void st_collections_group_parts_part_description_align(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; + ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - ed->common.align.x = FROM_DOUBLE(parse_float_range(0, 0.0, 1.0)); - ed->common.align.y = FROM_DOUBLE(parse_float_range(1, 0.0, 1.0)); + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + ed->align.x = FROM_DOUBLE(parse_float_range(0, 0.0, 1.0)); + ed->align.y = FROM_DOUBLE(parse_float_range(1, 0.0, 1.0)); } /** @@ -3580,18 +3783,20 @@ st_collections_group_parts_part_description_align(void) static void st_collections_group_parts_part_description_fixed(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; + ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - ed->common.fixed.w = parse_float_range(0, 0, 1); - ed->common.fixed.h = parse_float_range(1, 0, 1); + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + ed->fixed.w = parse_float_range(0, 0, 1); + ed->fixed.h = parse_float_range(1, 0, 1); } /** @@ -3607,18 +3812,20 @@ st_collections_group_parts_part_description_fixed(void) static void st_collections_group_parts_part_description_min(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; + ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - ed->common.min.w = parse_float_range(0, 0, 0x7fffffff); - ed->common.min.h = parse_float_range(1, 0, 0x7fffffff); + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + ed->min.w = parse_float_range(0, 0, 0x7fffffff); + ed->min.h = parse_float_range(1, 0, 0x7fffffff); } /** @@ -3634,18 +3841,20 @@ st_collections_group_parts_part_description_min(void) static void st_collections_group_parts_part_description_max(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; + ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - ed->common.max.w = parse_float_range(0, 0, 0x7fffffff); - ed->common.max.h = parse_float_range(1, 0, 0x7fffffff); + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + ed->max.w = parse_float_range(0, 0, 0x7fffffff); + ed->max.h = parse_float_range(1, 0, 0x7fffffff); } /** @@ -3663,18 +3872,20 @@ st_collections_group_parts_part_description_max(void) static void st_collections_group_parts_part_description_step(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; + ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - ed->common.step.x = parse_float_range(0, 0, 0x7fffffff); - ed->common.step.y = parse_float_range(1, 0, 0x7fffffff); + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + ed->step.x = parse_float_range(0, 0, 0x7fffffff); + ed->step.y = parse_float_range(1, 0, 0x7fffffff); } /** @@ -3694,18 +3905,20 @@ st_collections_group_parts_part_description_step(void) static void st_collections_group_parts_part_description_aspect(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; + ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - ed->common.aspect.min = FROM_DOUBLE(parse_float_range(0, 0.0, 999999999.0)); - ed->common.aspect.max = FROM_DOUBLE(parse_float_range(1, 0.0, 999999999.0)); + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + ed->aspect.min = FROM_DOUBLE(parse_float_range(0, 0.0, 999999999.0)); + ed->aspect.max = FROM_DOUBLE(parse_float_range(1, 0.0, 999999999.0)); } /** @@ -3722,22 +3935,24 @@ st_collections_group_parts_part_description_aspect(void) static void st_collections_group_parts_part_description_aspect_preference(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; + ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - ed->common.aspect.prefer = parse_enum(0, - "NONE", EDJE_ASPECT_PREFER_NONE, - "VERTICAL", EDJE_ASPECT_PREFER_VERTICAL, - "HORIZONTAL", EDJE_ASPECT_PREFER_HORIZONTAL, - "BOTH", EDJE_ASPECT_PREFER_BOTH, - NULL); + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + ed->aspect.prefer = parse_enum(0, + "NONE", EDJE_ASPECT_PREFER_NONE, + "VERTICAL", EDJE_ASPECT_PREFER_VERTICAL, + "HORIZONTAL", EDJE_ASPECT_PREFER_HORIZONTAL, + "BOTH", EDJE_ASPECT_PREFER_BOTH, + NULL); } /** @@ -3755,17 +3970,19 @@ st_collections_group_parts_part_description_aspect_preference(void) static void st_collections_group_parts_part_description_color_class(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; + ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - ed->common.color_class = parse_str(0); + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + ed->color_class = parse_str(0); } /** @@ -3781,20 +3998,22 @@ st_collections_group_parts_part_description_color_class(void) static void st_collections_group_parts_part_description_color(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(4); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; + ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - ed->common.color.r = parse_int_range(0, 0, 255); - ed->common.color.g = parse_int_range(1, 0, 255); - ed->common.color.b = parse_int_range(2, 0, 255); - ed->common.color.a = parse_int_range(3, 0, 255); + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + ed->color.r = parse_int_range(0, 0, 255); + ed->color.g = parse_int_range(1, 0, 255); + ed->color.b = parse_int_range(2, 0, 255); + ed->color.a = parse_int_range(3, 0, 255); } /** @@ -3810,20 +4029,22 @@ st_collections_group_parts_part_description_color(void) static void st_collections_group_parts_part_description_color2(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(4); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; + ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - ed->common.color2.r = parse_int_range(0, 0, 255); - ed->common.color2.g = parse_int_range(1, 0, 255); - ed->common.color2.b = parse_int_range(2, 0, 255); - ed->common.color2.a = parse_int_range(3, 0, 255); + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + ed->color2.r = parse_int_range(0, 0, 255); + ed->color2.g = parse_int_range(1, 0, 255); + ed->color2.b = parse_int_range(2, 0, 255); + ed->color2.a = parse_int_range(3, 0, 255); } /** @@ -3839,16 +4060,25 @@ st_collections_group_parts_part_description_color2(void) static void st_collections_group_parts_part_description_color3(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Text *ed; check_arg_count(4); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); + ep = pc->parts[pc->parts_count - 1]; + + if (ep->type != EDJE_PART_TYPE_TEXT + && ep->type != EDJE_PART_TYPE_TEXTBLOCK) + { + ERR("%s: Error. Setting color3 in part %s from %s not of type TEXT or TEXTBLOCK.", progname, ep->name, pc->part); + exit(-1); + } + + ed = (Edje_Part_Description_Text*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Text*) ep->other.desc[ep->other.desc_count - 1]; + ed->text.color3.r = parse_int_range(0, 0, 255); ed->text.color3.g = parse_int_range(1, 0, 255); ed->text.color3.b = parse_int_range(2, 0, 255); @@ -3892,18 +4122,20 @@ st_collections_group_parts_part_description_color3(void) static void st_collections_group_parts_part_description_rel1_relative(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; + ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - ed->common.rel1.relative_x = FROM_DOUBLE(parse_float(0)); - ed->common.rel1.relative_y = FROM_DOUBLE(parse_float(1)); + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + ed->rel1.relative_x = FROM_DOUBLE(parse_float(0)); + ed->rel1.relative_y = FROM_DOUBLE(parse_float(1)); } /** @@ -3919,18 +4151,20 @@ st_collections_group_parts_part_description_rel1_relative(void) static void st_collections_group_parts_part_description_rel1_offset(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; + ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - ed->common.rel1.offset_x = parse_int(0); - ed->common.rel1.offset_y = parse_int(1); + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + ed->rel1.offset_x = parse_int(0); + ed->rel1.offset_y = parse_int(1); } /** @@ -3947,24 +4181,26 @@ st_collections_group_parts_part_description_rel1_offset(void) static void st_collections_group_parts_part_description_rel1_to(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - { - char *name; + ep = pc->parts[pc->parts_count - 1]; - name = parse_str(0); - data_queue_part_lookup(pc, name, &(ed->common.rel1.id_x)); - data_queue_part_lookup(pc, name, &(ed->common.rel1.id_y)); - free(name); - } + ed = ep->default_desc; + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + { + char *name; + + name = parse_str(0); + data_queue_part_lookup(pc, name, &(ed->rel1.id_x)); + data_queue_part_lookup(pc, name, &(ed->rel1.id_y)); + free(name); + } } /** @@ -3981,23 +4217,25 @@ st_collections_group_parts_part_description_rel1_to(void) static void st_collections_group_parts_part_description_rel1_to_x(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - { - char *name; + ep = pc->parts[pc->parts_count - 1]; - name = parse_str(0); - data_queue_part_lookup(pc, name, &(ed->common.rel1.id_x)); - free(name); - } + ed = ep->default_desc; + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + { + char *name; + + name = parse_str(0); + data_queue_part_lookup(pc, name, &(ed->rel1.id_x)); + free(name); + } } /** @@ -4015,124 +4253,136 @@ st_collections_group_parts_part_description_rel1_to_x(void) static void st_collections_group_parts_part_description_rel1_to_y(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - { - char *name; + ep = pc->parts[pc->parts_count - 1]; - name = parse_str(0); - data_queue_part_lookup(pc, name, &(ed->common.rel1.id_y)); - free(name); - } + ed = ep->default_desc; + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + { + char *name; + + name = parse_str(0); + data_queue_part_lookup(pc, name, &(ed->rel1.id_y)); + free(name); + } } static void st_collections_group_parts_part_description_rel2_relative(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; + ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - ed->common.rel2.relative_x = FROM_DOUBLE(parse_float(0)); - ed->common.rel2.relative_y = FROM_DOUBLE(parse_float(1)); + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + ed->rel2.relative_x = FROM_DOUBLE(parse_float(0)); + ed->rel2.relative_y = FROM_DOUBLE(parse_float(1)); } static void st_collections_group_parts_part_description_rel2_offset(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; + ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - ed->common.rel2.offset_x = parse_int(0); - ed->common.rel2.offset_y = parse_int(1); + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + ed->rel2.offset_x = parse_int(0); + ed->rel2.offset_y = parse_int(1); } static void st_collections_group_parts_part_description_rel2_to(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - { - char *name; + ep = pc->parts[pc->parts_count - 1]; - name = parse_str(0); - data_queue_part_lookup(pc, name, &(ed->common.rel2.id_x)); - data_queue_part_lookup(pc, name, &(ed->common.rel2.id_y)); - free(name); - } + ed = ep->default_desc; + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + { + char *name; + + name = parse_str(0); + data_queue_part_lookup(pc, name, &(ed->rel2.id_x)); + data_queue_part_lookup(pc, name, &(ed->rel2.id_y)); + free(name); + } } static void st_collections_group_parts_part_description_rel2_to_x(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - { - char *name; + ep = pc->parts[pc->parts_count - 1]; - name = parse_str(0); - data_queue_part_lookup(pc, name, &(ed->common.rel2.id_x)); - free(name); - } + ed = ep->default_desc; + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + { + char *name; + + name = parse_str(0); + data_queue_part_lookup(pc, name, &(ed->rel2.id_x)); + free(name); + } } static void st_collections_group_parts_part_description_rel2_to_y(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - { - char *name; + ep = pc->parts[pc->parts_count - 1]; - name = parse_str(0); - data_queue_part_lookup(pc, name, &(ed->common.rel2.id_y)); - free(name); - } + ed = ep->default_desc; + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + { + char *name; + + name = parse_str(0); + data_queue_part_lookup(pc, name, &(ed->rel2.id_y)); + free(name); + } } /** @@ -4172,14 +4422,14 @@ st_collections_group_parts_part_description_rel2_to_y(void) static void st_collections_group_parts_part_description_image_normal(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Image *ed; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; if (ep->type != EDJE_PART_TYPE_IMAGE) { @@ -4189,15 +4439,16 @@ st_collections_group_parts_part_description_image_normal(void) exit(-1); } - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - { - char *name; + ed = (Edje_Part_Description_Image*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Image*) ep->other.desc[ep->other.desc_count - 1]; - name = parse_str(0); - data_queue_image_lookup(name, &(ed->image.id), &(ed->image.set)); - free(name); - } + { + char *name; + + name = parse_str(0); + data_queue_image_lookup(name, &(ed->image.id), &(ed->image.set)); + free(name); + } } /** @@ -4215,14 +4466,14 @@ st_collections_group_parts_part_description_image_normal(void) static void st_collections_group_parts_part_description_image_tween(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Image *ed; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; if (ep->type != EDJE_PART_TYPE_IMAGE) { @@ -4232,18 +4483,22 @@ st_collections_group_parts_part_description_image_tween(void) exit(-1); } - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - { - char *name; - Edje_Part_Image_Id *iid; + ed = (Edje_Part_Description_Image*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Image*) ep->other.desc[ep->other.desc_count - 1]; - iid = mem_alloc(SZ(Edje_Part_Image_Id)); - ed->image.tween_list = eina_list_append(ed->image.tween_list, iid); - name = parse_str(0); - data_queue_image_lookup(name, &(iid->id), &(iid->set)); - free(name); - } + { + char *name; + Edje_Part_Image_Id *iid; + + iid = mem_alloc(SZ(Edje_Part_Image_Id)); + ed->image.tweens_count++; + ed->image.tweens = realloc(ed->image.tweens, + sizeof (Edje_Part_Image_Id*) * ed->image.tweens_count); + ed->image.tweens[ed->image.tweens_count - 1] = iid; + name = parse_str(0); + data_queue_image_lookup(name, &(iid->id), &(iid->set)); + free(name); + } } /** @@ -4261,14 +4516,14 @@ st_collections_group_parts_part_description_image_tween(void) static void st_collections_group_parts_part_description_image_border(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Image *ed; check_arg_count(4); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; if (ep->type != EDJE_PART_TYPE_IMAGE) { @@ -4278,8 +4533,9 @@ st_collections_group_parts_part_description_image_border(void) exit(-1); } - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); + ed = (Edje_Part_Description_Image*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Image*) ep->other.desc[ep->other.desc_count - 1]; + ed->image.border.l = parse_int_range(0, 0, 0x7fffffff); ed->image.border.r = parse_int_range(1, 0, 0x7fffffff); ed->image.border.t = parse_int_range(2, 0, 0x7fffffff); @@ -4301,14 +4557,14 @@ st_collections_group_parts_part_description_image_border(void) static void st_collections_group_parts_part_description_image_middle(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Image *ed; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; if (ep->type != EDJE_PART_TYPE_IMAGE) { @@ -4318,8 +4574,9 @@ st_collections_group_parts_part_description_image_middle(void) exit(-1); } - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); + ed = (Edje_Part_Description_Image*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Image*) ep->other.desc[ep->other.desc_count - 1]; + ed->image.border.no_fill = parse_enum(0, "1", 0, "DEFAULT", 0, @@ -4343,14 +4600,14 @@ st_collections_group_parts_part_description_image_middle(void) static void st_collections_group_parts_part_description_image_border_scale(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Image *ed; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; if (ep->type != EDJE_PART_TYPE_IMAGE) { @@ -4360,8 +4617,9 @@ st_collections_group_parts_part_description_image_border_scale(void) exit(-1); } - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); + ed = (Edje_Part_Description_Image*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Image*) ep->other.desc[ep->other.desc_count - 1]; + ed->image.border.scale = parse_enum(0, "0", 0, "1", 1, @@ -4382,14 +4640,14 @@ st_collections_group_parts_part_description_image_border_scale(void) static void st_collections_group_parts_part_description_image_scale_hint(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Image *ed; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; if (ep->type != EDJE_PART_TYPE_IMAGE) { @@ -4399,8 +4657,9 @@ st_collections_group_parts_part_description_image_scale_hint(void) exit(-1); } - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); + ed = (Edje_Part_Description_Image*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Image*) ep->other.desc[ep->other.desc_count - 1]; + ed->image.scale_hint = parse_enum(0, "NONE", EVAS_IMAGE_SCALE_HINT_NONE, "DYNAMIC", EVAS_IMAGE_SCALE_HINT_DYNAMIC, @@ -4446,25 +4705,26 @@ st_collections_group_parts_part_description_image_scale_hint(void) static void st_collections_group_parts_part_description_fill_smooth(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Image *ed; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; if (ep->type != EDJE_PART_TYPE_IMAGE) { ERR("%s: Error. parse error %s:%i. " - "fill.type attribute in non-IMAGE part.", + "image attributes in non-IMAGE part.", progname, file_in, line - 1); exit(-1); } - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); + ed = (Edje_Part_Description_Image*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Image*) ep->other.desc[ep->other.desc_count - 1]; + ed->image.fill.smooth = parse_bool(0); } @@ -4482,26 +4742,35 @@ st_collections_group_parts_part_description_fill_smooth(void) static void st_collections_group_parts_part_description_fill_spread(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Image *ed; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); /* XXX this will need to include IMAGES when spread support is added to evas images */ - if (ep->type != EDJE_PART_TYPE_GRADIENT) + { + ERR("%s: Error. parse error %s:%i. " + "fill.spread not supported yet.", + progname, file_in, line - 1); + exit(-1); + } + + ep = pc->parts[pc->parts_count - 1]; + + if (ep->type != EDJE_PART_TYPE_IMAGE) { - fprintf(stderr, "%s: Error. parse error %s:%i. " - "gradient attributes in non-GRADIENT part.\n", - progname, file_in, line - 1); + ERR("%s: Error. parse error %s:%i. " + "image attributes in non-IMAGE part.", + progname, file_in, line - 1); exit(-1); } - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); + ed = (Edje_Part_Description_Image*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Image*) ep->other.desc[ep->other.desc_count - 1]; + ed->image.fill.spread = parse_int_range(0, 0, 1); } @@ -4519,25 +4788,26 @@ st_collections_group_parts_part_description_fill_spread(void) static void st_collections_group_parts_part_description_fill_type(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Image *ed; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); + ep = pc->parts[pc->parts_count - 1]; if (ep->type != EDJE_PART_TYPE_IMAGE) { ERR("%s: Error. parse error %s:%i. " - "fill attributes in non-IMAGE part.", + "image attributes in non-IMAGE part.", progname, file_in, line - 1); exit(-1); } + ed = (Edje_Part_Description_Image*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Image*) ep->other.desc[ep->other.desc_count - 1]; + ed->image.fill.type = parse_enum(0, "SCALE", EDJE_FILL_TYPE_SCALE, "TILE", EDJE_FILL_TYPE_TILE, @@ -4578,25 +4848,26 @@ st_collections_group_parts_part_description_fill_type(void) static void st_collections_group_parts_part_description_fill_origin_relative(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Image *ed; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; if (ep->type != EDJE_PART_TYPE_IMAGE) { ERR("%s: Error. parse error %s:%i. " - "fill attributes in non-IMAGE part.", + "image attributes in non-IMAGE part.", progname, file_in, line - 1); exit(-1); } - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); + ed = (Edje_Part_Description_Image*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Image*) ep->other.desc[ep->other.desc_count - 1]; + ed->image.fill.pos_rel_x = FROM_DOUBLE(parse_float_range(0, -999999999.0, 999999999.0)); ed->image.fill.pos_rel_y = FROM_DOUBLE(parse_float_range(1, -999999999.0, 999999999.0)); } @@ -4614,25 +4885,26 @@ st_collections_group_parts_part_description_fill_origin_relative(void) static void st_collections_group_parts_part_description_fill_origin_offset(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Image *ed; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; if (ep->type != EDJE_PART_TYPE_IMAGE) { ERR("%s: Error. parse error %s:%i. " - "fill attributes in non-IMAGE part.", + "image attributes in non-IMAGE part.", progname, file_in, line - 1); exit(-1); } - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); + ed = (Edje_Part_Description_Image*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Image*) ep->other.desc[ep->other.desc_count - 1]; + ed->image.fill.pos_abs_x = parse_int(0); ed->image.fill.pos_abs_y = parse_int(1); } @@ -4673,25 +4945,26 @@ st_collections_group_parts_part_description_fill_origin_offset(void) static void st_collections_group_parts_part_description_fill_size_relative(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Image *ed; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); + ep = pc->parts[pc->parts_count - 1]; if (ep->type != EDJE_PART_TYPE_IMAGE) { ERR("%s: Error. parse error %s:%i. " - "fill attributes in non-IMAGE part.", + "image attributes in non-IMAGE part.", progname, file_in, line - 1); exit(-1); } + ed = (Edje_Part_Description_Image*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Image*) ep->other.desc[ep->other.desc_count - 1]; + ed->image.fill.rel_x = FROM_DOUBLE(parse_float_range(0, 0.0, 999999999.0)); ed->image.fill.rel_y = FROM_DOUBLE(parse_float_range(1, 0.0, 999999999.0)); } @@ -4709,25 +4982,26 @@ st_collections_group_parts_part_description_fill_size_relative(void) static void st_collections_group_parts_part_description_fill_size_offset(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Image *ed; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); + ep = pc->parts[pc->parts_count - 1]; if (ep->type != EDJE_PART_TYPE_IMAGE) { ERR("%s: Error. parse error %s:%i. " - "fill attributes in non-IMAGE part.", + "image attributes in non-IMAGE part.", progname, file_in, line - 1); exit(-1); } + ed = (Edje_Part_Description_Image*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Image*) ep->other.desc[ep->other.desc_count - 1]; + ed->image.fill.abs_x = parse_int(0); ed->image.fill.abs_y = parse_int(1); } @@ -4778,14 +5052,14 @@ st_collections_group_parts_part_description_fill_size_offset(void) static void st_collections_group_parts_part_description_text_text(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Text *ed; char *str = NULL; int i; pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; if ((ep->type != EDJE_PART_TYPE_TEXT) && (ep->type != EDJE_PART_TYPE_TEXTBLOCK)) @@ -4796,8 +5070,9 @@ st_collections_group_parts_part_description_text_text(void) exit(-1); } - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); + ed = (Edje_Part_Description_Text*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Text*) ep->other.desc[ep->other.desc_count - 1]; + for (i = 0; ;i++) { char *s; @@ -4830,14 +5105,14 @@ st_collections_group_parts_part_description_text_text(void) static void st_collections_group_parts_part_description_text_text_class(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Text *ed; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; if ((ep->type != EDJE_PART_TYPE_TEXT) && (ep->type != EDJE_PART_TYPE_TEXTBLOCK)) @@ -4848,8 +5123,9 @@ st_collections_group_parts_part_description_text_text_class(void) exit(-1); } - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); + ed = (Edje_Part_Description_Text*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Text*) ep->other.desc[ep->other.desc_count - 1]; + ed->text.text_class = parse_str(0); } @@ -4868,16 +5144,17 @@ st_collections_group_parts_part_description_text_text_class(void) static void st_collections_group_parts_part_description_text_font(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Text *ed; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; - if (ep->type != EDJE_PART_TYPE_TEXT) + if ((ep->type != EDJE_PART_TYPE_TEXT) && + (ep->type != EDJE_PART_TYPE_TEXTBLOCK)) { ERR("%s: Error. parse error %s:%i. " "text attributes in non-TEXT part.", @@ -4885,8 +5162,9 @@ st_collections_group_parts_part_description_text_font(void) exit(-1); } - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); + ed = (Edje_Part_Description_Text*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Text*) ep->other.desc[ep->other.desc_count - 1]; + ed->text.font.str = parse_str(0); } @@ -4905,25 +5183,27 @@ st_collections_group_parts_part_description_text_font(void) static void st_collections_group_parts_part_description_text_style(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Text *ed; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; - if (ep->type != EDJE_PART_TYPE_TEXTBLOCK) + if ((ep->type != EDJE_PART_TYPE_TEXT) && + (ep->type != EDJE_PART_TYPE_TEXTBLOCK)) { ERR("%s: Error. parse error %s:%i. " - "text attributes in non-TEXTBLOCK part.", + "text attributes in non-TEXT part.", progname, file_in, line - 1); exit(-1); } - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); + ed = (Edje_Part_Description_Text*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Text*) ep->other.desc[ep->other.desc_count - 1]; + ed->text.style.str = parse_str(0); } @@ -4943,25 +5223,27 @@ st_collections_group_parts_part_description_text_style(void) static void st_collections_group_parts_part_description_text_repch(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Text *ed; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; - if (ep->type != EDJE_PART_TYPE_TEXTBLOCK) + if ((ep->type != EDJE_PART_TYPE_TEXT) && + (ep->type != EDJE_PART_TYPE_TEXTBLOCK)) { ERR("%s: Error. parse error %s:%i. " - "text attributes in non-TEXTBLOCK part.", + "text attributes in non-TEXT part.", progname, file_in, line - 1); exit(-1); } - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); + ed = (Edje_Part_Description_Text*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Text*) ep->other.desc[ep->other.desc_count - 1]; + ed->text.repch.str = parse_str(0); } @@ -4980,16 +5262,17 @@ st_collections_group_parts_part_description_text_repch(void) static void st_collections_group_parts_part_description_text_size(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Text *ed; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; - if (ep->type != EDJE_PART_TYPE_TEXT) + if ((ep->type != EDJE_PART_TYPE_TEXT) && + (ep->type != EDJE_PART_TYPE_TEXTBLOCK)) { ERR("%s: Error. parse error %s:%i. " "text attributes in non-TEXT part.", @@ -4997,8 +5280,9 @@ st_collections_group_parts_part_description_text_size(void) exit(-1); } - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); + ed = (Edje_Part_Description_Text*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Text*) ep->other.desc[ep->other.desc_count - 1]; + ed->text.size = parse_int_range(0, 0, 255); } @@ -5017,16 +5301,17 @@ st_collections_group_parts_part_description_text_size(void) static void st_collections_group_parts_part_description_text_fit(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Text *ed; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; - if (ep->type != EDJE_PART_TYPE_TEXT) + if ((ep->type != EDJE_PART_TYPE_TEXT) && + (ep->type != EDJE_PART_TYPE_TEXTBLOCK)) { ERR("%s: Error. parse error %s:%i. " "text attributes in non-TEXT part.", @@ -5034,8 +5319,9 @@ st_collections_group_parts_part_description_text_fit(void) exit(-1); } - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); + ed = (Edje_Part_Description_Text*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Text*) ep->other.desc[ep->other.desc_count - 1]; + ed->text.fit_x = parse_bool(0); ed->text.fit_y = parse_bool(1); } @@ -5056,14 +5342,14 @@ st_collections_group_parts_part_description_text_fit(void) static void st_collections_group_parts_part_description_text_min(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Text *ed; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; if ((ep->type != EDJE_PART_TYPE_TEXT) && (ep->type != EDJE_PART_TYPE_TEXTBLOCK)) @@ -5074,8 +5360,9 @@ st_collections_group_parts_part_description_text_min(void) exit(-1); } - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); + ed = (Edje_Part_Description_Text*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Text*) ep->other.desc[ep->other.desc_count - 1]; + ed->text.min_x = parse_bool(0); ed->text.min_y = parse_bool(1); } @@ -5096,14 +5383,14 @@ st_collections_group_parts_part_description_text_min(void) static void st_collections_group_parts_part_description_text_max(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Text *ed; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; if ((ep->type != EDJE_PART_TYPE_TEXT) && (ep->type != EDJE_PART_TYPE_TEXTBLOCK)) @@ -5114,8 +5401,9 @@ st_collections_group_parts_part_description_text_max(void) exit(-1); } - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); + ed = (Edje_Part_Description_Text*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Text*) ep->other.desc[ep->other.desc_count - 1]; + ed->text.max_x = parse_bool(0); ed->text.max_y = parse_bool(1); } @@ -5135,16 +5423,17 @@ st_collections_group_parts_part_description_text_max(void) static void st_collections_group_parts_part_description_text_align(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Text *ed; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; - if (ep->type != EDJE_PART_TYPE_TEXT) + if ((ep->type != EDJE_PART_TYPE_TEXT) && + (ep->type != EDJE_PART_TYPE_TEXTBLOCK)) { ERR("%s: Error. parse error %s:%i. " "text attributes in non-TEXT part.", @@ -5152,8 +5441,9 @@ st_collections_group_parts_part_description_text_align(void) exit(-1); } - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); + ed = (Edje_Part_Description_Text*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Text*) ep->other.desc[ep->other.desc_count - 1]; + ed->text.align.x = FROM_DOUBLE(parse_float_range(0, 0.0, 1.0)); ed->text.align.y = FROM_DOUBLE(parse_float_range(1, 0.0, 1.0)); } @@ -5173,14 +5463,14 @@ st_collections_group_parts_part_description_text_align(void) static void st_collections_group_parts_part_description_text_source(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Text *ed; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; if ((ep->type != EDJE_PART_TYPE_TEXT) && (ep->type != EDJE_PART_TYPE_TEXTBLOCK)) @@ -5191,15 +5481,16 @@ st_collections_group_parts_part_description_text_source(void) exit(-1); } - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - { - char *name; + ed = (Edje_Part_Description_Text*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Text*) ep->other.desc[ep->other.desc_count - 1]; - name = parse_str(0); - data_queue_part_lookup(pc, name, &(ed->text.id_source)); - free(name); - } + { + char *name; + + name = parse_str(0); + data_queue_part_lookup(pc, name, &(ed->text.id_source)); + free(name); + } } /** @@ -5217,14 +5508,14 @@ st_collections_group_parts_part_description_text_source(void) static void st_collections_group_parts_part_description_text_text_source(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Text *ed; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; if ((ep->type != EDJE_PART_TYPE_TEXT) && (ep->type != EDJE_PART_TYPE_TEXTBLOCK)) @@ -5235,15 +5526,16 @@ st_collections_group_parts_part_description_text_text_source(void) exit(-1); } - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - { - char *name; + ed = (Edje_Part_Description_Text*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Text*) ep->other.desc[ep->other.desc_count - 1]; - name = parse_str(0); - data_queue_part_lookup(pc, name, &(ed->text.id_text_source)); - free(name); - } + { + char *name; + + name = parse_str(0); + data_queue_part_lookup(pc, name, &(ed->text.id_text_source)); + free(name); + } } /** @@ -5262,16 +5554,17 @@ st_collections_group_parts_part_description_text_text_source(void) static void st_collections_group_parts_part_description_text_elipsis(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Text *ed; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; - if (ep->type != EDJE_PART_TYPE_TEXT) + if ((ep->type != EDJE_PART_TYPE_TEXT) && + (ep->type != EDJE_PART_TYPE_TEXTBLOCK)) { ERR("%s: Error. parse error %s:%i. " "text attributes in non-TEXT part.", @@ -5279,8 +5572,9 @@ st_collections_group_parts_part_description_text_elipsis(void) exit(-1); } - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); + ed = (Edje_Part_Description_Text*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Text*) ep->other.desc[ep->other.desc_count - 1]; + ed->text.elipsis = parse_float_range(0, 0.0, 1.0); } @@ -5363,14 +5657,14 @@ st_collections_group_parts_part_description_text_elipsis(void) */ static void st_collections_group_parts_part_description_box_layout(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Box *ed; check_min_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; if (ep->type != EDJE_PART_TYPE_BOX) { @@ -5380,8 +5674,9 @@ static void st_collections_group_parts_part_description_box_layout(void) exit(-1); } - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); + ed = (Edje_Part_Description_Box*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Box*) ep->other.desc[ep->other.desc_count - 1]; + ed->box.layout = parse_str(0); if (is_param(1)) ed->box.alt_layout = parse_str(1); @@ -5389,14 +5684,14 @@ static void st_collections_group_parts_part_description_box_layout(void) static void st_collections_group_parts_part_description_box_align(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Box *ed; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; if (ep->type != EDJE_PART_TYPE_BOX) { @@ -5406,22 +5701,23 @@ static void st_collections_group_parts_part_description_box_align(void) exit(-1); } - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); + ed = (Edje_Part_Description_Box*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Box*) ep->other.desc[ep->other.desc_count - 1]; + ed->box.align.x = FROM_DOUBLE(parse_float_range(0, -1.0, 1.0)); ed->box.align.y = FROM_DOUBLE(parse_float_range(1, -1.0, 1.0)); } static void st_collections_group_parts_part_description_box_padding(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Box *ed; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; if (ep->type != EDJE_PART_TYPE_BOX) { @@ -5431,8 +5727,9 @@ static void st_collections_group_parts_part_description_box_padding(void) exit(-1); } - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); + ed = (Edje_Part_Description_Box*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Box*) ep->other.desc[ep->other.desc_count - 1]; + ed->box.padding.x = parse_int_range(0, 0, 0x7fffffff); ed->box.padding.y = parse_int_range(1, 0, 0x7fffffff); } @@ -5440,14 +5737,14 @@ static void st_collections_group_parts_part_description_box_padding(void) static void st_collections_group_parts_part_description_box_min(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Box *ed; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; if (ep->type != EDJE_PART_TYPE_BOX) { @@ -5457,8 +5754,9 @@ st_collections_group_parts_part_description_box_min(void) exit(-1); } - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); + ed = (Edje_Part_Description_Box*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Box*) ep->other.desc[ep->other.desc_count - 1]; + ed->box.min.h = parse_bool(0); ed->box.min.v = parse_bool(1); } @@ -5521,14 +5819,14 @@ st_collections_group_parts_part_description_box_min(void) */ static void st_collections_group_parts_part_description_table_homogeneous(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Table *ed; check_min_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; if (ep->type != EDJE_PART_TYPE_TABLE) { @@ -5538,8 +5836,9 @@ static void st_collections_group_parts_part_description_table_homogeneous(void) exit(-1); } - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); + ed = (Edje_Part_Description_Table*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Table*) ep->other.desc[ep->other.desc_count - 1]; + ed->table.homogeneous = parse_enum(0, "NONE", EDJE_OBJECT_TABLE_HOMOGENEOUS_NONE, "TABLE", EDJE_OBJECT_TABLE_HOMOGENEOUS_TABLE, @@ -5549,14 +5848,14 @@ static void st_collections_group_parts_part_description_table_homogeneous(void) static void st_collections_group_parts_part_description_table_align(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Table *ed; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; if (ep->type != EDJE_PART_TYPE_TABLE) { @@ -5566,22 +5865,23 @@ static void st_collections_group_parts_part_description_table_align(void) exit(-1); } - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); + ed = (Edje_Part_Description_Table*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Table*) ep->other.desc[ep->other.desc_count - 1]; + ed->table.align.x = FROM_DOUBLE(parse_float_range(0, -1.0, 1.0)); ed->table.align.y = FROM_DOUBLE(parse_float_range(1, -1.0, 1.0)); } static void st_collections_group_parts_part_description_table_padding(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Table *ed; check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; if (ep->type != EDJE_PART_TYPE_TABLE) { @@ -5591,8 +5891,9 @@ static void st_collections_group_parts_part_description_table_padding(void) exit(-1); } - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); + ed = (Edje_Part_Description_Table*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Table*) ep->other.desc[ep->other.desc_count - 1]; + ed->table.padding.x = parse_int_range(0, 0, 0x7fffffff); ed->table.padding.y = parse_int_range(1, 0, 0x7fffffff); } @@ -5645,25 +5946,27 @@ static void st_collections_group_parts_part_description_table_padding(void) static void st_collections_group_parts_part_description_map_perspective(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(1); - - pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); - - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - { - char *name; - name = parse_str(0); - data_queue_part_lookup(pc, name, &(ed->common.map.id_persp)); - free(name); - } - ed->common.map.persp_on = 1; + pc = eina_list_data_get(eina_list_last(edje_collections)); + ep = pc->parts[pc->parts_count - 1]; + + ed = ep->default_desc; + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + { + char *name; + + name = parse_str(0); + data_queue_part_lookup(pc, name, &(ed->map.id_persp)); + free(name); + } + + ed->map.persp_on = 1; } /** @@ -5687,24 +5990,25 @@ st_collections_group_parts_part_description_map_perspective(void) static void st_collections_group_parts_part_description_map_light(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(1); - - pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); - - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - { - char *name; - name = parse_str(0); - data_queue_part_lookup(pc, name, &(ed->common.map.id_light)); - free(name); - } + pc = eina_list_data_get(eina_list_last(edje_collections)); + ep = pc->parts[pc->parts_count - 1]; + + ed = ep->default_desc; + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + { + char *name; + + name = parse_str(0); + data_queue_part_lookup(pc, name, &(ed->map.id_light)); + free(name); + } } /** @@ -5720,18 +6024,19 @@ st_collections_group_parts_part_description_map_light(void) static void st_collections_group_parts_part_description_map_on(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(1); - + pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); - + ep = pc->parts[pc->parts_count - 1]; + ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - ed->common.map.on = parse_bool(0); + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + ed->map.on = parse_bool(0); } /** @@ -5750,18 +6055,19 @@ st_collections_group_parts_part_description_map_on(void) static void st_collections_group_parts_part_description_map_smooth(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(1); - + pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); - + ep = pc->parts[pc->parts_count - 1]; + ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - ed->common.map.smooth = parse_bool(0); + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + ed->map.smooth = parse_bool(0); } /** @@ -5777,18 +6083,19 @@ st_collections_group_parts_part_description_map_smooth(void) static void st_collections_group_parts_part_description_map_alpha(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(1); - + pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); - + ep = pc->parts[pc->parts_count - 1]; + ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - ed->common.map.alpha = parse_bool(0); + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + ed->map.alpha = parse_bool(0); } /** @@ -5806,18 +6113,19 @@ st_collections_group_parts_part_description_map_alpha(void) static void st_collections_group_parts_part_description_map_backface_cull(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(1); - + pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); - + ep = pc->parts[pc->parts_count - 1]; + ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - ed->common.map.backcull = parse_bool(0); + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + ed->map.backcull = parse_bool(0); } /** @@ -5836,18 +6144,19 @@ st_collections_group_parts_part_description_map_backface_cull(void) static void st_collections_group_parts_part_description_map_perspective_on(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(1); - + pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); - + ep = pc->parts[pc->parts_count - 1]; + ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - ed->common.map.persp_on = parse_bool(0); + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + ed->map.persp_on = parse_bool(0); } /** @page edcref @@ -5883,24 +6192,25 @@ st_collections_group_parts_part_description_map_perspective_on(void) static void st_collections_group_parts_part_description_map_rotation_center(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(1); - - pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); - - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - { - char *name; - name = parse_str(0); - data_queue_part_lookup(pc, name, &(ed->common.map.rot.id_center)); - free(name); - } + pc = eina_list_data_get(eina_list_last(edje_collections)); + ep = pc->parts[pc->parts_count - 1]; + + ed = ep->default_desc; + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + { + char *name; + + name = parse_str(0); + data_queue_part_lookup(pc, name, &(ed->map.rot.id_center)); + free(name); + } } /** @@ -5917,18 +6227,19 @@ st_collections_group_parts_part_description_map_rotation_center(void) static void st_collections_group_parts_part_description_map_rotation_x(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(1); - + pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); - + ep = pc->parts[pc->parts_count - 1]; + ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - ed->common.map.rot.x = FROM_DOUBLE(parse_float(0)); + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + ed->map.rot.x = FROM_DOUBLE(parse_float(0)); } /** @@ -5945,18 +6256,19 @@ st_collections_group_parts_part_description_map_rotation_x(void) static void st_collections_group_parts_part_description_map_rotation_y(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(1); - + pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); - + ep = pc->parts[pc->parts_count - 1]; + ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - ed->common.map.rot.y = FROM_DOUBLE(parse_float(0)); + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + ed->map.rot.y = FROM_DOUBLE(parse_float(0)); } /** @@ -5973,18 +6285,19 @@ st_collections_group_parts_part_description_map_rotation_y(void) static void st_collections_group_parts_part_description_map_rotation_z(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(1); - + pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); - + ep = pc->parts[pc->parts_count - 1]; + ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - ed->common.map.rot.z = FROM_DOUBLE(parse_float(0)); + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + ed->map.rot.z = FROM_DOUBLE(parse_float(0)); } /** @@ -6017,18 +6330,19 @@ st_collections_group_parts_part_description_map_rotation_z(void) static void st_collections_group_parts_part_description_perspective_zplane(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(1); - + pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); - + ep = pc->parts[pc->parts_count - 1]; + ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - ed->common.persp.zplane = parse_int(0); + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + ed->persp.zplane = parse_int(0); } @@ -6046,18 +6360,19 @@ st_collections_group_parts_part_description_perspective_zplane(void) static void st_collections_group_parts_part_description_perspective_focal(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; check_arg_count(1); - + pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); - + ep = pc->parts[pc->parts_count - 1]; + ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - ed->common.persp.focal = parse_int_range(0, 1, 0x7fffffff); + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + ed->persp.focal = parse_int_range(0, 1, 0x7fffffff); } @@ -6089,9 +6404,9 @@ st_collections_group_parts_part_description_perspective_focal(void) static void _st_collections_group_parts_part_description_params(Edje_External_Param_Type type) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - Old_Edje_Part_Description *ed; + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_External *ed; Edje_External_Param *param; Eina_List *l; const char *name; @@ -6100,7 +6415,7 @@ _st_collections_group_parts_part_description_params(Edje_External_Param_Type typ check_arg_count(2); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); + ep = pc->parts[pc->parts_count - 1]; if (ep->type != EDJE_PART_TYPE_EXTERNAL) { @@ -6110,8 +6425,8 @@ _st_collections_group_parts_part_description_params(Edje_External_Param_Type typ exit(-1); } - ed = ep->default_desc; - if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); + ed = (Edje_Part_Description_External*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_External*) ep->other.desc[ep->other.desc_count - 1]; name = parse_str(0); @@ -6279,15 +6594,19 @@ st_collections_group_parts_part_description_params_choice(void) static void ob_collections_group_programs_program(void) { - Old_Edje_Part_Collection *pc; + Edje_Part_Collection *pc; Edje_Program *ep; pc = eina_list_data_get(eina_list_last(edje_collections)); + ep = mem_alloc(SZ(Edje_Program)); - pc->programs = eina_list_append(pc->programs, ep); - ep->id = eina_list_count(pc->programs) - 1; + ep->id = -1; ep->tween.mode = EDJE_TWEEN_MODE_LINEAR; ep->after = NULL; + + _edje_program_insert(pc, ep); + + current_program = ep; } /** @@ -6303,28 +6622,18 @@ ob_collections_group_programs_program(void) static void st_collections_group_programs_program_name(void) { - Old_Edje_Part_Collection *pc; - Edje_Program *ep; + Edje_Part_Collection *pc; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->programs)); - ep->name = parse_str(0); - { - Eina_List *l; - Edje_Program *lep; + current_program->name = parse_str(0); - EINA_LIST_FOREACH(pc->programs, l, lep) - { - if ((lep != ep) && (lep->name) && (!strcmp(lep->name, ep->name))) - { - ERR("%s: Error. parse error %s:%i. There is already a program of the name %s\n", - progname, file_in, line - 1, ep->name); - exit(-1); - } - } - } + _edje_program_check(current_program->name, current_program, pc->programs.fnmatch, pc->programs.fnmatch_count); + _edje_program_check(current_program->name, current_program, pc->programs.strcmp, pc->programs.strcmp_count); + _edje_program_check(current_program->name, current_program, pc->programs.strncmp, pc->programs.strncmp_count); + _edje_program_check(current_program->name, current_program, pc->programs.strrncmp, pc->programs.strrncmp_count); + _edje_program_check(current_program->name, current_program, pc->programs.nocmp, pc->programs.nocmp_count); } /** @@ -6344,14 +6653,15 @@ st_collections_group_programs_program_name(void) static void st_collections_group_programs_program_signal(void) { - Old_Edje_Part_Collection *pc; - Edje_Program *ep; + Edje_Part_Collection *pc; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->programs)); - ep->signal = parse_str(0); + + _edje_program_remove(pc, current_program); + current_program->signal = parse_str(0); + _edje_program_insert(pc, current_program); } /** @@ -6369,14 +6679,15 @@ st_collections_group_programs_program_signal(void) static void st_collections_group_programs_program_source(void) { - Old_Edje_Part_Collection *pc; - Edje_Program *ep; + Edje_Part_Collection *pc; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->programs)); - ep->source = parse_str(0); + + _edje_program_remove(pc, current_program); + current_program->source = parse_str(0); + _edje_program_insert(pc, current_program); } /** @@ -6394,19 +6705,13 @@ st_collections_group_programs_program_source(void) static void st_collections_group_programs_program_filter(void) { - Old_Edje_Part_Collection *pc; - Edje_Program *ep; - check_min_arg_count(1); - pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->programs)); - if(is_param(1)) { - ep->filter.part = parse_str(0); - ep->filter.state = parse_str(1); + current_program->filter.part = parse_str(0); + current_program->filter.state = parse_str(1); } else { - ep->filter.state = parse_str(0); + current_program->filter.state = parse_str(0); } } @@ -6424,15 +6729,10 @@ st_collections_group_programs_program_filter(void) static void st_collections_group_programs_program_in(void) { - Old_Edje_Part_Collection *pc; - Edje_Program *ep; - check_arg_count(2); - pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->programs)); - ep->in.from = parse_float_range(0, 0.0, 999999999.0); - ep->in.range = parse_float_range(1, 0.0, 999999999.0); + current_program->in.from = parse_float_range(0, 0.0, 999999999.0); + current_program->in.range = parse_float_range(1, 0.0, 999999999.0); } /** @@ -6461,11 +6761,11 @@ st_collections_group_programs_program_in(void) static void st_collections_group_programs_program_action(void) { - Old_Edje_Part_Collection *pc; + Edje_Part_Collection *pc; Edje_Program *ep; pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->programs)); + ep = current_program; ep->action = parse_enum(0, "STATE_SET", EDJE_ACTION_TYPE_STATE_SET, "ACTION_STOP", EDJE_ACTION_TYPE_ACTION_STOP, @@ -6576,20 +6876,15 @@ st_collections_group_programs_program_action(void) static void st_collections_group_programs_program_transition(void) { - Old_Edje_Part_Collection *pc; - Edje_Program *ep; - check_arg_count(2); - pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->programs)); - ep->tween.mode = parse_enum(0, - "LINEAR", EDJE_TWEEN_MODE_LINEAR, - "SINUSOIDAL", EDJE_TWEEN_MODE_SINUSOIDAL, - "ACCELERATE", EDJE_TWEEN_MODE_ACCELERATE, - "DECELERATE", EDJE_TWEEN_MODE_DECELERATE, - NULL); - ep->tween.time = FROM_DOUBLE(parse_float_range(1, 0.0, 999999999.0)); + current_program->tween.mode = parse_enum(0, + "LINEAR", EDJE_TWEEN_MODE_LINEAR, + "SINUSOIDAL", EDJE_TWEEN_MODE_SINUSOIDAL, + "ACCELERATE", EDJE_TWEEN_MODE_ACCELERATE, + "DECELERATE", EDJE_TWEEN_MODE_DECELERATE, + NULL); + current_program->tween.time = FROM_DOUBLE(parse_float_range(1, 0.0, 999999999.0)); } /** @@ -6607,13 +6902,13 @@ st_collections_group_programs_program_transition(void) static void st_collections_group_programs_program_target(void) { - Old_Edje_Part_Collection *pc; + Edje_Part_Collection *pc; Edje_Program *ep; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->programs)); + ep = current_program; { Edje_Program_Target *et; char *name; @@ -6660,13 +6955,13 @@ st_collections_group_programs_program_target(void) static void st_collections_group_programs_program_after(void) { - Old_Edje_Part_Collection *pc; + Edje_Part_Collection *pc; Edje_Program *ep; check_arg_count(1); pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->programs)); + ep = current_program; { Edje_Program_After *pa; char *name; @@ -6698,49 +6993,37 @@ st_collections_group_programs_program_after(void) static void st_collections_group_programs_program_api(void) { - Old_Edje_Part_Collection *pc; - Edje_Program *ep; - check_min_arg_count(1); - pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->programs)); - ep->api.name = parse_str(0); + current_program->api.name = parse_str(0); if (is_param(1)) { check_arg_count(2); - ep->api.description = parse_str(1); + current_program->api.description = parse_str(1); } } static void st_collections_group_parts_part_api(void) { - Old_Edje_Part_Collection *pc; - Old_Edje_Part *ep; - check_min_arg_count(1); - pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->parts)); - ep->api.name = parse_str(0); + current_program->api.name = parse_str(0); if (is_param(1)) { check_arg_count(2); - ep->api.description = parse_str(1); + current_program->api.description = parse_str(1); } } static void ob_collections_group_programs_program_script(void) { - Old_Edje_Part_Collection *pc; - Edje_Program *ep; + Edje_Part_Collection *pc; Code *cd; pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->programs)); cd = eina_list_data_get(eina_list_last(codes)); if (!is_verbatim()) track_verbatim(1); @@ -6753,10 +7036,10 @@ ob_collections_group_programs_program_script(void) { Code_Program *cp; + /* FIXME: Need to store the script somewhere to be restored when using edje_edit API */ cp = mem_alloc(SZ(Code_Program)); cp->l1 = get_verbatim_line1(); cp->l2 = get_verbatim_line2(); - cp->id = ep->id; cp->script = s; if (cd->shared && cd->is_lua) { @@ -6766,8 +7049,10 @@ ob_collections_group_programs_program_script(void) } cd->is_lua = 0; cd->programs = eina_list_append(cd->programs, cp); + data_queue_program_lookup(pc, current_program->name, &(cp->id)); + set_verbatim(NULL, 0, 0); - ep->action = EDJE_ACTION_TYPE_SCRIPT; + current_program->action = EDJE_ACTION_TYPE_SCRIPT; } } } @@ -6775,12 +7060,10 @@ ob_collections_group_programs_program_script(void) static void ob_collections_group_programs_program_lua_script(void) { - Old_Edje_Part_Collection *pc; - Edje_Program *ep; + Edje_Part_Collection *pc; Code *cd; pc = eina_list_data_get(eina_list_last(edje_collections)); - ep = eina_list_data_get(eina_list_last(pc->programs)); cd = eina_list_data_get(eina_list_last(codes)); if (!is_verbatim()) track_verbatim(1); @@ -6796,7 +7079,6 @@ ob_collections_group_programs_program_lua_script(void) cp = mem_alloc(SZ(Code_Program)); cp->l1 = get_verbatim_line1(); cp->l2 = get_verbatim_line2(); - cp->id = ep->id; cp->script = s; if (cd->shared && !cd->is_lua) { @@ -6806,8 +7088,9 @@ ob_collections_group_programs_program_lua_script(void) } cd->is_lua = 1; cd->programs = eina_list_append(cd->programs, cp); + data_queue_program_lookup(pc, current_program->name, &(cp->id)); set_verbatim(NULL, 0, 0); - ep->action = EDJE_ACTION_TYPE_LUA_SCRIPT; + current_program->action = EDJE_ACTION_TYPE_LUA_SCRIPT; } } } diff --git a/legacy/edje/src/bin/edje_cc_out.c b/legacy/edje/src/bin/edje_cc_out.c index 2296ffe491..a0aa59adcf 100644 --- a/legacy/edje/src/bin/edje_cc_out.c +++ b/legacy/edje/src/bin/edje_cc_out.c @@ -49,14 +49,14 @@ struct _External_Lookup struct _Part_Lookup { - Old_Edje_Part_Collection *pc; + Edje_Part_Collection *pc; char *name; int *dest; }; struct _Program_Lookup { - Old_Edje_Part_Collection *pc; + Edje_Part_Collection *pc; char *name; int *dest; }; @@ -93,10 +93,9 @@ struct _Code_Lookup Eina_Bool set; }; -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)); +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)); -Old_Edje_File *edje_file = NULL; -Edje_File *new_edje_file = NULL; +Edje_File *edje_file = NULL; Eina_List *edje_collections = NULL; Eina_List *externals = NULL; Eina_List *fonts = NULL; @@ -140,21 +139,21 @@ data_setup(void) } static void -check_image_part_desc (Old_Edje_Part_Collection *pc, Old_Edje_Part *ep, - Old_Edje_Part_Description *epd, Eet_File *ef) +check_image_part_desc (Edje_Part_Collection *pc, Edje_Part *ep, + Edje_Part_Description_Image *epd, Eet_File *ef) { - Eina_List *l; - Edje_Part_Image_Id *iid; + unsigned int i; - return; +#if 0 /* FIXME: This check sounds like not a usefull one */ if (epd->image.id == -1) - error_and_abort(ef, "Collection %i: image attributes missing for " - "part \"%s\", description \"%s\" %f\n", - pc->id, ep->name, epd->common.state.name, epd->common.state.value); + ERR(ef, "Collection %s(%i): image attributes missing for " + "part \"%s\", description \"%s\" %f\n", + pc->part, pc->id, ep->name, epd->common.state.name, epd->common.state.value); +#endif - EINA_LIST_FOREACH(epd->image.tween_list, l, iid) + for (i = 0; i < epd->image.tweens_count; ++i) { - if (iid->id == -1) + if (epd->image.tweens[i]->id == -1) error_and_abort(ef, "Collection %i: tween image id missing for " "part \"%s\", description \"%s\" %f\n", pc->id, ep->name, epd->common.state.name, epd->common.state.value); @@ -162,18 +161,17 @@ check_image_part_desc (Old_Edje_Part_Collection *pc, Old_Edje_Part *ep, } static void -check_packed_items(Old_Edje_Part_Collection *pc, Old_Edje_Part *ep, Eet_File *ef) +check_packed_items(Edje_Part_Collection *pc, Edje_Part *ep, Eet_File *ef) { - Eina_List *l; - Edje_Pack_Element *it; + unsigned int i; - EINA_LIST_FOREACH(ep->items, l, it) + for (i = 0; i < ep->items_count; ++i) { - if (it->type == EDJE_PART_TYPE_GROUP && !it->source) + if (ep->items[i]->type == EDJE_PART_TYPE_GROUP && !ep->items[i]->source) error_and_abort(ef, "Collection %i: missing source on packed item " "of type GROUP in part \"%s\"\n", pc->id, ep->name); - if (ep->type == EDJE_PART_TYPE_TABLE && (it->col < 0 || it->row < 0)) + if (ep->type == EDJE_PART_TYPE_TABLE && (ep->items[i]->col < 0 || ep->items[i]->row < 0)) error_and_abort(ef, "Collection %i: missing col/row on packed item " "for part \"%s\" of type TABLE\n", pc->id, ep->name); @@ -181,23 +179,21 @@ check_packed_items(Old_Edje_Part_Collection *pc, Old_Edje_Part *ep, Eet_File *ef } static void -check_part (Old_Edje_Part_Collection *pc, Old_Edje_Part *ep, Eet_File *ef) +check_part (Edje_Part_Collection *pc, Edje_Part *ep, Eet_File *ef) { - Old_Edje_Part_Description *epd = ep->default_desc; - Eina_List *l; - Old_Edje_Part_Description *data; - /* FIXME: check image set and sort them. */ - if (!epd) + if (!ep->default_desc) error_and_abort(ef, "Collection %i: default description missing " "for part \"%s\"\n", pc->id, ep->name); if (ep->type == EDJE_PART_TYPE_IMAGE) { - check_image_part_desc (pc, ep, epd, ef); + unsigned int i; - EINA_LIST_FOREACH(ep->other_desc, l, data) - check_image_part_desc (pc, ep, data, ef); + check_image_part_desc(pc, ep, (Edje_Part_Description_Image*) ep->default_desc, ef); + + for (i = 0; i < ep->other.desc_count; ++i) + check_image_part_desc (pc, ep, (Edje_Part_Description_Image*) ep->other.desc[i], ef); } else if ((ep->type == EDJE_PART_TYPE_BOX) || (ep->type == EDJE_PART_TYPE_TABLE)) @@ -205,7 +201,7 @@ check_part (Old_Edje_Part_Collection *pc, Old_Edje_Part *ep, Eet_File *ef) } static void -check_program (Old_Edje_Part_Collection *pc, Edje_Program *ep, Eet_File *ef) +check_program (Edje_Part_Collection *pc, Edje_Program *ep, Eet_File *ef) { switch (ep->action) { @@ -228,9 +224,9 @@ data_write_header(Eet_File *ef) { int bytes = 0; - if (new_edje_file) + if (edje_file) { - if (new_edje_file->collection) + if (edje_file->collection) { Edje_Part_Collection_Directory_Entry *ce; @@ -243,7 +239,7 @@ data_write_header(Eet_File *ef) if (!ce->entry) error_and_abort(ef, "Collection %i: name missing.\n", ce->id); - it = eina_hash_iterator_data_new(new_edje_file->collection); + it = eina_hash_iterator_data_new(edje_file->collection); EINA_ITERATOR_FOREACH(it, sce) if (ce->id == sce->id) @@ -257,10 +253,10 @@ data_write_header(Eet_File *ef) eina_iterator_free(it); - eina_hash_direct_add(new_edje_file->collection, ce->entry, ce); + eina_hash_direct_add(edje_file->collection, ce->entry, ce); } } - bytes = eet_data_write(ef, edd_edje_file, "edje/file", new_edje_file, 1); + bytes = eet_data_write(ef, edd_edje_file, "edje/file", edje_file, 1); if (bytes <= 0) error_and_abort(ef, "Unable to write \"edje_file\" entry to \"%s\" \n", file_out); @@ -461,7 +457,7 @@ data_write_images(Eet_File *ef, int *image_num, int *input_bytes, int *input_raw int bytes = 0; int total_bytes = 0; - if ((new_edje_file) && (new_edje_file->image_dir)) + if ((edje_file) && (edje_file->image_dir)) { Ecore_Evas *ee; Evas *evas; @@ -476,9 +472,9 @@ data_write_images(Eet_File *ef, int *image_num, int *input_bytes, int *input_raw "load.\n"); evas = ecore_evas_get(ee); - for (i = 0; i < new_edje_file->image_dir->entries_count; i++) + for (i = 0; i < edje_file->image_dir->entries_count; i++) { - img = &new_edje_file->image_dir->entries[i]; + img = &edje_file->image_dir->entries[i]; if (img->source_type == EDJE_IMAGE_SOURCE_TYPE_EXTERNAL) { @@ -635,20 +631,26 @@ data_write_images(Eet_File *ef, int *image_num, int *input_bytes, int *input_raw static void check_groups(Eet_File *ef) { + Edje_Part_Collection *pc; Eina_List *l; - Old_Edje_Part_Collection *pc; /* sanity checks for parts and programs */ EINA_LIST_FOREACH(edje_collections, l, pc) { - Eina_List *ll; - Old_Edje_Part *part; - Edje_Program *prog; + unsigned int i; - EINA_LIST_FOREACH(pc->parts, ll, part) - check_part(pc, part, ef); - EINA_LIST_FOREACH(pc->programs, ll, prog) - check_program(pc, prog, ef); + for (i = 0; i < pc->parts_count; ++i) + check_part(pc, pc->parts[i], ef); + +#define CHECK_PROGRAM(Type, Pc, It) \ + for (It = 0; It < Pc->programs.Type ## _count; ++It) \ + check_program(Pc, Pc->programs.Type[i], ef); \ + + CHECK_PROGRAM(fnmatch, pc, i); + CHECK_PROGRAM(strcmp, pc, i); + CHECK_PROGRAM(strncmp, pc, i); + CHECK_PROGRAM(strrncmp, pc, i); + CHECK_PROGRAM(nocmp, pc, i); } } @@ -1009,10 +1011,6 @@ void data_write(void) { Eet_File *ef; - Edje_Part_Collection_Directory_Entry *ce; - Old_Edje_Part_Collection *pc; - Eina_Iterator *it; - Eina_List *tmp = NULL; int input_bytes = 0; int total_bytes = 0; int src_bytes = 0; @@ -1039,30 +1037,6 @@ data_write(void) check_groups(ef); - new_edje_file = _edje_file_convert(ef, edje_file); - _edje_file_set(new_edje_file); - - if (!new_edje_file) - { - ERR("%s: Error convertion failed for \"%s\"", progname, file_out); - exit(-1); - } - - /* convert old structure to new one */ - it = eina_hash_iterator_data_new(new_edje_file->collection); - - EINA_ITERATOR_FOREACH(it, ce) - { - pc = eina_list_nth(edje_collections, ce->id); - tmp = eina_list_append(tmp, - _edje_collection_convert(ef, - ce, pc)); - } - - eina_iterator_free(it); - edje_collections = eina_list_free(edje_collections); - edje_collections = tmp; - total_bytes += data_write_header(ef); total_bytes += data_write_fonts(ef, &font_num, &input_bytes, &input_raw_bytes); @@ -1132,7 +1106,7 @@ data_queue_group_lookup(char *name) } void -data_queue_part_lookup(Old_Edje_Part_Collection *pc, char *name, int *dest) +data_queue_part_lookup(Edje_Part_Collection *pc, const char *name, int *dest) { Part_Lookup *pl; @@ -1144,7 +1118,7 @@ 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) +data_queue_program_lookup(Edje_Part_Collection *pc, const char *name, int *dest) { Program_Lookup *pl; @@ -1203,154 +1177,184 @@ handle_slave_lookup(Eina_List *list, int *master, int value) void data_process_lookups(void) { + Edje_Part_Collection *pc; + Part_Lookup *part; + Program_Lookup *program; + Group_Lookup *group; + Image_Lookup *image; Eina_List *l; + void *data; - while (part_lookups) + EINA_LIST_FOREACH(edje_collections, l, pc) { - Part_Lookup *pl; - Old_Edje_Part *ep; + unsigned int count = 0; + unsigned int i; - pl = eina_list_data_get(part_lookups); +#define PROGRAM_ID_SET(Type, Pc, It, Count) \ + for (It = 0; It < Pc->programs.Type ## _count; ++It) \ + { \ + Pc->programs.Type[It]->id = Count++; \ + } - EINA_LIST_FOREACH(pl->pc->parts, l, ep) + PROGRAM_ID_SET(fnmatch, pc, i, count); + PROGRAM_ID_SET(strcmp, pc, i, count); + PROGRAM_ID_SET(strncmp, pc, i, count); + PROGRAM_ID_SET(strrncmp, pc, i, count); + PROGRAM_ID_SET(nocmp, pc, i, count); + +#undef PROGRAM_ID_SET + } + + EINA_LIST_FREE(part_lookups, part) + { + Edje_Part *ep; + unsigned int i; + + for (i = 0; i < part->pc->parts_count; ++i) { - if ((ep->name) && (!strcmp(ep->name, pl->name))) + ep = part->pc->parts[i]; + + if ((ep->name) && (!strcmp(ep->name, part->name))) { - handle_slave_lookup(part_slave_lookups, pl->dest, ep->id); - *(pl->dest) = ep->id; + handle_slave_lookup(part_slave_lookups, part->dest, ep->id); + *(part->dest) = ep->id; break; } } - if (!l) + + if (i == part->pc->parts_count) { ERR("%s: Error. Unable to find part name \"%s\".", - progname, pl->name); + progname, part->name); exit(-1); } - part_lookups = eina_list_remove(part_lookups, pl); - free(pl->name); - free(pl); + + free(part->name); + free(part); } - while (program_lookups) + EINA_LIST_FREE(program_lookups, program) { - Program_Lookup *pl; - Edje_Program *ep; + unsigned int i; + Eina_Bool find = EINA_FALSE; - pl = eina_list_data_get(program_lookups); - - EINA_LIST_FOREACH(pl->pc->programs, l, ep) - { - if ((ep->name) && (!strcmp(ep->name, pl->name))) - { - *(pl->dest) = ep->id; - break; - } +#define PROGRAM_MATCH(Type, Pl, It) \ + for (It = 0; It < Pl->pc->programs.Type ## _count; ++It) \ + { \ + Edje_Program *ep; \ + \ + ep = Pl->pc->programs.Type[It]; \ + \ + if ((ep->name) && (!strcmp(ep->name, Pl->name))) \ + { \ + *(Pl->dest) = ep->id; \ + find = EINA_TRUE; \ + break; \ + } \ } - if (!l) + + PROGRAM_MATCH(fnmatch, program, i); + PROGRAM_MATCH(strcmp, program, i); + PROGRAM_MATCH(strncmp, program, i); + PROGRAM_MATCH(strrncmp, program, i); + PROGRAM_MATCH(nocmp, program, i); + +#undef PROGRAM_MATCH + + if (!find) { ERR("%s: Error. Unable to find program name \"%s\".", - progname, pl->name); + progname, program->name); exit(-1); } - program_lookups = eina_list_remove(program_lookups, pl); - free(pl->name); - free(pl); + + free(program->name); + free(program); } - while (group_lookups) + EINA_LIST_FREE(group_lookups, group) { - Group_Lookup *gl; Edje_Part_Collection_Directory_Entry *de; - gl = eina_list_data_get(group_lookups); + de = eina_hash_find(edje_file->collection, group->name); - EINA_LIST_FOREACH(edje_file->collection_dir->entries, l, de) - { - if (!strcmp(de->entry, gl->name)) - { - break; - } - } - if (!l) + if (!de) { ERR("%s: Error. Unable to find group name \"%s\".", - progname, gl->name); + progname, group->name); exit(-1); } - group_lookups = eina_list_remove(group_lookups, gl); - free(gl->name); - free(gl); + + free(group->name); + free(group); } - while (image_lookups) + EINA_LIST_FREE(image_lookups, image) { - Image_Lookup *il; Edje_Image_Directory_Entry *de; + Eina_Bool find = EINA_FALSE; - il = eina_list_data_get(image_lookups); - - if (!edje_file->image_dir) - l = NULL; - else + if (edje_file->image_dir) { - EINA_LIST_FOREACH(edje_file->image_dir->entries, l, de) + unsigned int i; + + for (i = 0; i < edje_file->image_dir->entries_count; ++i) { - if ((de->entry) && (!strcmp(de->entry, il->name))) + de = edje_file->image_dir->entries + i; + + if ((de->entry) && (!strcmp(de->entry, image->name))) { - handle_slave_lookup(image_slave_lookups, il->dest, de->id); + handle_slave_lookup(image_slave_lookups, image->dest, de->id); if (de->source_type == EDJE_IMAGE_SOURCE_TYPE_EXTERNAL) - *(il->dest) = -de->id - 1; + *(image->dest) = -de->id - 1; else - *(il->dest) = de->id; - *(il->set) = EINA_FALSE; + *(image->dest) = de->id; + *(image->set) = EINA_FALSE; + find = EINA_TRUE; break; } } - if (!l) + if (!find) { Edje_Image_Directory_Set *set; - EINA_LIST_FOREACH(edje_file->image_dir->sets, l, set) + for (i = 0; i < edje_file->image_dir->sets_count; ++i) { - if ((set->name) && (!strcmp(set->name, il->name))) - { - handle_slave_lookup(image_slave_lookups, il->dest, set->id); - *(il->dest) = set->id; - *(il->set) = EINA_TRUE; - break; - } + set = edje_file->image_dir->sets + i; + + if ((set->name) && (!strcmp(set->name, image->name))) + { + handle_slave_lookup(image_slave_lookups, image->dest, set->id); + *(image->dest) = set->id; + *(image->set) = EINA_TRUE; + find = EINA_TRUE; + break; + } } } } - if (!l) + if (!find) { ERR("%s: Error. Unable to find image name \"%s\".", - progname, il->name); + progname, image->name); exit(-1); } - image_lookups = eina_list_remove(image_lookups, il); - free(il->name); - free(il); + + free(image->name); + free(image); } - while (part_slave_lookups) - { - free(eina_list_data_get(part_slave_lookups)); - part_slave_lookups = eina_list_remove_list(part_slave_lookups, part_slave_lookups); - } + EINA_LIST_FREE(part_slave_lookups, data) + free(data); - while (image_slave_lookups) - { - free(eina_list_data_get(image_slave_lookups)); - image_slave_lookups = eina_list_remove_list(image_slave_lookups, image_slave_lookups); - } + EINA_LIST_FREE(image_slave_lookups, data) + free(data); } 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)) +data_process_string(Edje_Part_Collection *pc, const char *prefix, char *s, void (*func)(Edje_Part_Collection *pc, char *name, char* ptr, int len)) { char *p; char *key; @@ -1461,7 +1465,7 @@ data_process_string(Old_Edje_Part_Collection *pc, const char *prefix, char *s, v } static void -_data_queue_part_lookup(Old_Edje_Part_Collection *pc, char *name, char *ptr, int len) +_data_queue_part_lookup(Edje_Part_Collection *pc, char *name, char *ptr, int len) { Code_Lookup *cl; cl = mem_alloc(SZ(Code_Lookup)); @@ -1473,7 +1477,7 @@ _data_queue_part_lookup(Old_Edje_Part_Collection *pc, char *name, char *ptr, int code_lookups = eina_list_append(code_lookups, cl); } static void -_data_queue_program_lookup(Old_Edje_Part_Collection *pc, char *name, char *ptr, int len) +_data_queue_program_lookup(Edje_Part_Collection *pc, char *name, char *ptr, int len) { Code_Lookup *cl; @@ -1486,12 +1490,12 @@ _data_queue_program_lookup(Old_Edje_Part_Collection *pc, char *name, char *ptr, code_lookups = eina_list_append(code_lookups, cl); } static void -_data_queue_group_lookup(Old_Edje_Part_Collection *pc __UNUSED__, char *name, char *ptr __UNUSED__, int len __UNUSED__) +_data_queue_group_lookup(Edje_Part_Collection *pc __UNUSED__, char *name, char *ptr __UNUSED__, int len __UNUSED__) { data_queue_group_lookup(name); } static void -_data_queue_image_pc_lookup(Old_Edje_Part_Collection *pc __UNUSED__, char *name, char *ptr, int len) +_data_queue_image_pc_lookup(Edje_Part_Collection *pc __UNUSED__, char *name, char *ptr, int len) { Code_Lookup *cl; @@ -1511,23 +1515,25 @@ data_process_scripts(void) for (l = codes, l2 = edje_collections; (l) && (l2); l = eina_list_next(l), l2 = eina_list_next(l2)) { + Edje_Part_Collection *pc; Code *cd; - Old_Edje_Part_Collection *pc; cd = eina_list_data_get(l); pc = eina_list_data_get(l2); - if ((cd->shared) || (cd->programs)) - { - Eina_List *ll; - Code_Program *cp; - if ((cd->shared) && (!cd->is_lua)) - { - data_process_string(pc, "PART", cd->shared, _data_queue_part_lookup); - data_process_string(pc, "PROGRAM", cd->shared, _data_queue_program_lookup); - data_process_string(pc, "IMAGE", cd->shared, _data_queue_image_pc_lookup); - data_process_string(pc, "GROUP", cd->shared, _data_queue_group_lookup); - } + if ((cd->shared) && (!cd->is_lua)) + { + data_process_string(pc, "PART", cd->shared, _data_queue_part_lookup); + data_process_string(pc, "PROGRAM", cd->shared, _data_queue_program_lookup); + data_process_string(pc, "IMAGE", cd->shared, _data_queue_image_pc_lookup); + data_process_string(pc, "GROUP", cd->shared, _data_queue_group_lookup); + } + + if (cd->programs) + { + Code_Program *cp; + Eina_List *ll; + EINA_LIST_FOREACH(cd->programs, ll, cp) { if (cp->script) diff --git a/legacy/edje/src/bin/edje_convert.c b/legacy/edje/src/bin/edje_convert.c index 66cd8da524..7e9a73e988 100644 --- a/legacy/edje/src/bin/edje_convert.c +++ b/legacy/edje/src/bin/edje_convert.c @@ -2,6 +2,7 @@ #include "edje_cc.h" #include "edje_prefix.h" +#include "edje_convert.h" static const Edje_File *_current_edje_file = NULL; diff --git a/legacy/edje/src/lib/edje_edit.c b/legacy/edje/src/lib/edje_edit.c index bd85ccd72b..3ae46a2128 100644 --- a/legacy/edje/src/lib/edje_edit.c +++ b/legacy/edje/src/lib/edje_edit.c @@ -4725,7 +4725,7 @@ edje_edit_program_del(Evas_Object *obj, const char *prog) //Remove program from programs list id = epr->id; - edje_edit_program_remove(ed, epr); + _edje_program_remove(ed->collection, epr); /* fix table program */ if (epr->id != ed->table_programs_size - 1) @@ -4844,12 +4844,12 @@ edje_edit_program_source_set(Evas_Object *obj, const char *prog, const char *sou if (!source) return EINA_FALSE; /* Remove from program array */ - edje_edit_program_remove(ed, epr); + _edje_program_remove(ed->collection, epr); _edje_if_string_free(ed, epr->source); /* Insert it back */ epr->source = eina_stringshare_add(source); - edje_edit_program_insert(ed, epr); + _edje_program_insert(ed->collection, epr); //Update patterns _edje_programs_patterns_clean(ed); @@ -4923,12 +4923,12 @@ edje_edit_program_signal_set(Evas_Object *obj, const char *prog, const char *sig if (!signal) return EINA_FALSE; /* Remove from program array */ - edje_edit_program_remove(ed, epr); + _edje_program_remove(ed->collection, epr); _edje_if_string_free(ed, epr->signal); /* Insert it back */ epr->signal = eina_stringshare_add(signal); - edje_edit_program_insert(ed, epr); + _edje_program_insert(ed->collection, epr); //Update patterns _edje_programs_patterns_clean(ed); diff --git a/legacy/edje/src/lib/edje_private.h b/legacy/edje/src/lib/edje_private.h index da482d143a..94f826cb7a 100644 --- a/legacy/edje/src/lib/edje_private.h +++ b/legacy/edje/src/lib/edje_private.h @@ -202,7 +202,7 @@ struct _Edje_Aspect struct _Edje_String { - const char *str; + char *str; unsigned int id; }; @@ -1754,8 +1754,8 @@ edje_program_is_strrncmp(const char *str) return EINA_TRUE; } -void edje_edit_program_insert(Edje *ed, Edje_Program *p); -void edje_edit_program_remove(Edje *ed, Edje_Program *p); +void _edje_program_insert(Edje_Part_Collection *ed, Edje_Program *p); +void _edje_program_remove(Edje_Part_Collection *ed, Edje_Program *p); // new lua stuff - supercedes the old #define LUA2 1 diff --git a/legacy/edje/src/lib/edje_util.c b/legacy/edje/src/lib/edje_util.c index 4d7d19103d..a0f1944ffb 100644 --- a/legacy/edje/src/lib/edje_util.c +++ b/legacy/edje/src/lib/edje_util.c @@ -4828,7 +4828,7 @@ _edje_object_signal_preload_cb(void *data, Evas_Object *obj, __UNUSED__ const ch } void -edje_edit_program_remove(Edje *ed, Edje_Program *p) +_edje_program_remove(Edje_Part_Collection *edc, Edje_Program *p) { Edje_Program ***array; unsigned int *count; @@ -4836,31 +4836,31 @@ edje_edit_program_remove(Edje *ed, Edje_Program *p) if (!p->signal && !p->source) { - array = &ed->collection->programs.nocmp; - count = &ed->collection->programs.nocmp_count; + array = &edc->programs.nocmp; + count = &edc->programs.nocmp_count; } else if (p->signal && strpbrk(p->signal, "*?[\\") == NULL && p->source && strpbrk(p->source, "*?[\\") == NULL) { - array = &ed->collection->programs.strcmp; - count = &ed->collection->programs.strcmp_count; + array = &edc->programs.strcmp; + count = &edc->programs.strcmp_count; } else if (p->signal && edje_program_is_strncmp(p->signal) && p->source && edje_program_is_strncmp(p->source)) { - array = &ed->collection->programs.strncmp; - count = &ed->collection->programs.strncmp_count; + array = &edc->programs.strncmp; + count = &edc->programs.strncmp_count; } else if (p->signal && edje_program_is_strrncmp(p->signal) && p->source && edje_program_is_strrncmp(p->source)) { - array = &ed->collection->programs.strrncmp; - count = &ed->collection->programs.strrncmp_count; + array = &edc->programs.strrncmp; + count = &edc->programs.strrncmp_count; } else { - array = &ed->collection->programs.fnmatch; - count = &ed->collection->programs.fnmatch_count; + array = &edc->programs.fnmatch; + count = &edc->programs.fnmatch_count; } for (i = 0; i < *count; ++i) @@ -4873,38 +4873,38 @@ edje_edit_program_remove(Edje *ed, Edje_Program *p) } void -edje_edit_program_insert(Edje *ed, Edje_Program *p) +_edje_program_insert(Edje_Part_Collection *edc, Edje_Program *p) { Edje_Program ***array; unsigned int *count; if (!p->signal && !p->source) { - array = &ed->collection->programs.nocmp; - count = &ed->collection->programs.nocmp_count; + array = &edc->programs.nocmp; + count = &edc->programs.nocmp_count; } else if (p->signal && strpbrk(p->signal, "*?[\\") == NULL && p->source && strpbrk(p->source, "*?[\\") == NULL) { - array = &ed->collection->programs.strcmp; - count = &ed->collection->programs.strcmp_count; + array = &edc->programs.strcmp; + count = &edc->programs.strcmp_count; } else if (p->signal && edje_program_is_strncmp(p->signal) && p->source && edje_program_is_strncmp(p->source)) { - array = &ed->collection->programs.strncmp; - count = &ed->collection->programs.strncmp_count; + array = &edc->programs.strncmp; + count = &edc->programs.strncmp_count; } else if (p->signal && edje_program_is_strrncmp(p->signal) && p->source && edje_program_is_strrncmp(p->source)) { - array = &ed->collection->programs.strrncmp; - count = &ed->collection->programs.strrncmp_count; + array = &edc->programs.strrncmp; + count = &edc->programs.strrncmp_count; } else { - array = &ed->collection->programs.fnmatch; - count = &ed->collection->programs.fnmatch_count; + array = &edc->programs.fnmatch; + count = &edc->programs.fnmatch_count; } *array = realloc(*array, sizeof (Edje_Program *) * (*count + 1));