From: Enlightenment S. <no-...@en...> - 2010-06-10 15:37:57
|
Log: * edje: prevent uninitialized data to spread. WARNING: I don't know why in the first it doesn't map correctly to an object. So if someone with more knowledge on this piece of code could give it a look. Author: cedric Date: 2010-06-10 08:37:50 -0700 (Thu, 10 Jun 2010) New Revision: 49613 Modified: trunk/edje/src/lib/edje_entry.c Modified: trunk/edje/src/lib/edje_entry.c =================================================================== --- trunk/edje/src/lib/edje_entry.c 2010-06-10 15:12:46 UTC (rev 49612) +++ trunk/edje/src/lib/edje_entry.c 2010-06-10 15:37:50 UTC (rev 49613) @@ -854,7 +854,8 @@ { Evas_Coord cx, cy, cw, ch; - evas_textblock_cursor_format_item_geometry_get(an->start, &cx, &cy, &cw, &ch); + if (!evas_textblock_cursor_format_item_geometry_get(an->start, &cx, &cy, &cw, &ch)) + continue ; evas_object_move(sel->obj, x + cx, y + cy); evas_object_resize(sel->obj, cw, ch); } |
From: Enlightenment S. <no-...@en...> - 2010-06-10 15:40:58
|
Log: * edje: improve the way to target children of box and table. You can now adress them with somethin like part[name]:subpart or part[index]:subpart in all signal emit code and API that require a part to be specified. TODO: we need to add this index/name information when a signal is emitted from a subpart. Author: cedric Date: 2010-06-10 08:40:51 -0700 (Thu, 10 Jun 2010) New Revision: 49614 Modified: trunk/edje/src/lib/edje_private.h trunk/edje/src/lib/edje_program.c trunk/edje/src/lib/edje_util.c Modified: trunk/edje/src/lib/edje_private.h =================================================================== --- trunk/edje/src/lib/edje_private.h 2010-06-10 15:37:50 UTC (rev 49613) +++ trunk/edje/src/lib/edje_private.h 2010-06-10 15:40:51 UTC (rev 49614) @@ -309,6 +309,8 @@ #define EDJE_PART_PATH_SEPARATOR ':' #define EDJE_PART_PATH_SEPARATOR_STRING ":" +#define EDJE_PART_PATH_SEPARATOR_INDEXL '[' +#define EDJE_PART_PATH_SEPARATOR_INDEXR ']' /*----------*/ struct _Edje_File @@ -1395,6 +1397,7 @@ Eina_Bool _edje_real_part_table_pack(Edje_Real_Part *rp, Evas_Object *child_obj, unsigned short col, unsigned short row, unsigned short colspan, unsigned short rowspan); Eina_Bool _edje_real_part_table_unpack(Edje_Real_Part *rp, Evas_Object *child_obj); void _edje_real_part_table_clear(Edje_Real_Part *rp, Eina_Bool clear); +Evas_Object *_edje_children_get(Edje_Real_Part *rp, const char *partid); Eina_Bool _edje_object_part_text_raw_set(Evas_Object *obj, Edje_Real_Part *rp, const char *part, const char *text); char *_edje_text_escape(const char *text); Modified: trunk/edje/src/lib/edje_program.c =================================================================== --- trunk/edje/src/lib/edje_program.c 2010-06-10 15:37:50 UTC (rev 49613) +++ trunk/edje/src/lib/edje_program.c 2010-06-10 15:40:51 UTC (rev 49614) @@ -1012,9 +1012,14 @@ if (ed->delete_me) return; - sep = strchr(sig, ':'); + sep = strchr(sig, EDJE_PART_PATH_SEPARATOR); + + /* If we are not sending the signal to a part of the child, the + * signal if for ourself + */ if (sep) { + const char *idx; size_t length; char *part; /* the signal contains a colon, split the signal into "part:signal", @@ -1027,16 +1032,23 @@ char *newsig; int i; - memcpy(part, sig, length); - newsig = part + (sep - sig); + memcpy(part, sig, length); + + /* The part contain a [index], retrieve it */ + idx = strchr(sig, EDJE_PART_PATH_SEPARATOR_INDEXL); + if (idx == NULL || sep < idx) newsig = part + (sep - sig); + else newsig = part + (idx - sig); + *newsig = '\0'; newsig++; for (i = 0; i < ed->table_parts_size; i++) { Edje_Real_Part *rp = ed->table_parts[i]; - if ((rp->part->type == EDJE_PART_TYPE_GROUP || rp->part->type == EDJE_PART_TYPE_EXTERNAL) && - (rp->swallowed_object) && + if ((((rp->part->type == EDJE_PART_TYPE_GROUP + || rp->part->type == EDJE_PART_TYPE_EXTERNAL) + && (rp->swallowed_object)) + || rp->part->type == EDJE_PART_TYPE_BOX) && (rp->part) && (rp->part->name) && (strcmp(rp->part->name, part) == 0)) { @@ -1054,7 +1066,37 @@ _edje_external_signal_emit(rp->swallowed_object, newsig, src); return; } - } + else if (rp->part->type == EDJE_PART_TYPE_BOX + || rp->part->type == EDJE_PART_TYPE_TABLE) + { + const char *partid; + Evas_Object *child; + Eina_List *l; + Edje *ed2 = NULL; + Eina_Bool number = EINA_TRUE; + unsigned int i; + int id; + + idx = strchr(newsig, EDJE_PART_PATH_SEPARATOR_INDEXR); + + if (!idx) return ; + if (idx[1] != ':') return ; + if (!rp->object) return; + + partid = newsig; + newsig = idx; + + *newsig = '\0'; + newsig++; + + child = _edje_children_get(rp, partid); + + if (child) ed2 = _edje_fetch(child); + if (ed2) _edje_emit(ed2, newsig, src); + + return; + } + } } } } Modified: trunk/edje/src/lib/edje_util.c =================================================================== --- trunk/edje/src/lib/edje_util.c 2010-06-10 15:37:50 UTC (rev 49613) +++ trunk/edje/src/lib/edje_util.c 2010-06-10 15:40:51 UTC (rev 49614) @@ -3,6 +3,7 @@ */ #include <string.h> +#include <ctype.h> #include "edje_private.h" @@ -4239,39 +4240,94 @@ return rp; } +Evas_Object * +_edje_children_get(Edje_Real_Part *rp, const char *partid) +{ + Evas_Object *child; + Eina_List *l; + Eina_Bool number = EINA_TRUE; + unsigned int i; + + fprintf(stderr, "edje_children_get\n"); + + for (i = 0; i < strlen(partid); ++i) + number &= isdigit(partid[i]) ? EINA_TRUE : EINA_FALSE; + + if (rp->part->type == EDJE_PART_TYPE_BOX) + l = evas_object_box_children_get(rp->object); + else + if (rp->part->type == EDJE_PART_TYPE_TABLE) + l = evas_object_table_children_get(rp->object); + else + return NULL; + + if (number) + { + child = eina_list_nth(l, atoi(partid)); + eina_list_free(l); + } + else + { + EINA_LIST_FREE(l, child) + if (!strcmp(evas_object_name_get(child), partid)) + break ; + eina_list_free(l); + } + + return child; +} + Edje_Real_Part * _edje_real_part_recursive_get_helper(Edje *ed, char **path) { Edje_Real_Part *rp; - Evas_Object *o; - Eina_List *l; + Evas_Object *child; + char *idx = NULL; //printf(" lookup: %s on %s\n", path[0], ed->parent ? ed->parent : "-"); + if (path[0]) + idx = strchr(path[0], EDJE_PART_PATH_SEPARATOR_INDEXL); + if (idx) + { + char *end; + + fprintf(stderr, "looking for [] in `%s`\n", path[0]); + end = strchr(idx + 1, EDJE_PART_PATH_SEPARATOR_INDEXR); + if (end) + { + *end = '\0'; + *idx = '\0'; + idx++; + } + } + rp = _edje_real_part_get(ed, path[0]); if (path[1] == NULL) return rp; + if (!rp) return NULL; - if (!rp) return NULL; switch (rp->part->type) { case EDJE_PART_TYPE_GROUP: - if (!rp->swallowed_object) return NULL; - ed = _edje_fetch(rp->swallowed_object); - if (!ed) return NULL; - path++; - return _edje_real_part_recursive_get_helper(ed, path); - case EDJE_PART_TYPE_BOX: case EDJE_PART_TYPE_TABLE: - if (!rp->items) return NULL; - path++; - EINA_LIST_FOREACH(rp->items, l, o) - { - ed = _edje_fetch(o); - if (!ed) return NULL; - if ((rp = _edje_real_part_recursive_get_helper(ed, path))) - return rp; - } - return NULL; + if (!rp->swallowed_object) return NULL; + ed = _edje_fetch(rp->swallowed_object); + if (!ed) return NULL; + path++; + return _edje_real_part_recursive_get_helper(ed, path); + case EDJE_PART_TYPE_BOX: + case EDJE_PART_TYPE_TABLE: + if (!idx) return rp; + path++; + + child = _edje_children_get(rp, idx); + + ed = _edje_fetch(child); + if (!ed) return NULL; + if ((rp = _edje_real_part_recursive_get_helper(ed, path))) + return rp; + + return NULL; default: - return NULL; + return NULL; } } |
From: Enlightenment S. <no-...@en...> - 2010-06-10 16:30:44
|
Log: * edje: remove debug printf. Author: cedric Date: 2010-06-10 09:30:37 -0700 (Thu, 10 Jun 2010) New Revision: 49616 Modified: trunk/edje/src/lib/edje_util.c Modified: trunk/edje/src/lib/edje_util.c =================================================================== --- trunk/edje/src/lib/edje_util.c 2010-06-10 15:45:07 UTC (rev 49615) +++ trunk/edje/src/lib/edje_util.c 2010-06-10 16:30:37 UTC (rev 49616) @@ -4248,8 +4248,6 @@ Eina_Bool number = EINA_TRUE; unsigned int i; - fprintf(stderr, "edje_children_get\n"); - for (i = 0; i < strlen(partid); ++i) number &= isdigit(partid[i]) ? EINA_TRUE : EINA_FALSE; @@ -4291,7 +4289,6 @@ { char *end; - fprintf(stderr, "looking for [] in `%s`\n", path[0]); end = strchr(idx + 1, EDJE_PART_PATH_SEPARATOR_INDEXR); if (end) { |
From: Enlightenment S. <no-...@en...> - 2010-06-14 14:39:05
|
Log: * edje: fix constness issue. Author: cedric Date: 2010-06-14 07:38:58 -0700 (Mon, 14 Jun 2010) New Revision: 49666 Modified: trunk/edje/src/lib/edje_program.c Modified: trunk/edje/src/lib/edje_program.c =================================================================== --- trunk/edje/src/lib/edje_program.c 2010-06-14 13:18:06 UTC (rev 49665) +++ trunk/edje/src/lib/edje_program.c 2010-06-14 14:38:58 UTC (rev 49666) @@ -1019,7 +1019,7 @@ */ if (sep) { - const char *idx; + char *idx; size_t length; char *part; /* the signal contains a colon, split the signal into "part:signal", |
From: Enlightenment S. <no-...@en...> - 2010-06-28 17:18:54
|
Log: * edje: add an cache for group exist test. Author: cedric Date: 2010-06-28 10:18:47 -0700 (Mon, 28 Jun 2010) New Revision: 49928 Modified: trunk/edje/src/lib/edje_convert.c trunk/edje/src/lib/edje_load.c trunk/edje/src/lib/edje_private.h Modified: trunk/edje/src/lib/edje_convert.c =================================================================== --- trunk/edje/src/lib/edje_convert.c 2010-06-28 16:51:54 UTC (rev 49927) +++ trunk/edje/src/lib/edje_convert.c 2010-06-28 17:18:47 UTC (rev 49928) @@ -127,7 +127,10 @@ edf->dangling = EINA_FALSE; edf->warning = EINA_FALSE; + /* Below you will find all memory structure that could be cleaned when under + memory pressure */ edf->collection_cache = NULL; + edf->collection_patterns = NULL; return edf; } Modified: trunk/edje/src/lib/edje_load.c =================================================================== --- trunk/edje/src/lib/edje_load.c 2010-06-28 16:51:54 UTC (rev 49927) +++ trunk/edje/src/lib/edje_load.c 2010-06-28 17:18:47 UTC (rev 49928) @@ -192,25 +192,32 @@ edf = _edje_cache_file_coll_open(file, NULL, &error_ret, NULL); if (edf != NULL) { - /* FIXME: cache the result in Edje_File structure */ - Edje_Part_Collection_Directory_Entry *ce; - Eina_Iterator *i; - Eina_List *l = NULL; Edje_Patterns *patterns; - i = eina_hash_iterator_data_new(edf->collection); + if (edf->collection_patterns) + { + patterns = edf->collection_patterns; + } + else + { + Edje_Part_Collection_Directory_Entry *ce; + Eina_Iterator *i; + Eina_List *l = NULL; - EINA_ITERATOR_FOREACH(i, ce) - l = eina_list_append(l, ce); + i = eina_hash_iterator_data_new(edf->collection); - eina_iterator_free(i); + EINA_ITERATOR_FOREACH(i, ce) + l = eina_list_append(l, ce); - patterns = edje_match_collection_dir_init(l); + eina_iterator_free(i); + patterns = edje_match_collection_dir_init(l); + eina_list_free(l); + } + succeed = edje_match_collection_dir_exec(patterns, glob); - edje_match_patterns_free(patterns); - eina_list_free(l); + edf->collection_patterns = patterns; _edje_cache_file_unref(edf); } @@ -1065,6 +1072,7 @@ free(ecc); } + if (edf->collection_patterns) edje_match_patterns_free(edf->collection_patterns); if (edf->path) eina_stringshare_del(edf->path); if (edf->free_strings && edf->compiler) eina_stringshare_del(edf->compiler); if (edf->collection_cache) _edje_cache_coll_flush(edf); Modified: trunk/edje/src/lib/edje_private.h =================================================================== --- trunk/edje/src/lib/edje_private.h 2010-06-28 16:51:54 UTC (rev 49927) +++ trunk/edje/src/lib/edje_private.h 2010-06-28 17:18:47 UTC (rev 49928) @@ -337,6 +337,8 @@ Eina_Hash *collection; Eina_List *collection_cache; + Edje_Patterns *collection_patterns; + Eet_File *ef; Old_Edje_File *oef; |
From: Enlightenment S. <no-...@en...> - 2010-06-30 09:49:22
|
Log: * Edje: deprecate Gradient part by displaying an error message on edje file load. WARNING: THIS CODE WILL BE GONE IF NO ONE IS WILLING TO TAKE MAINTAINER SHIP OF IT. Author: cedric Date: 2010-06-30 02:49:15 -0700 (Wed, 30 Jun 2010) New Revision: 49946 Modified: trunk/edje/src/lib/edje_load.c Modified: trunk/edje/src/lib/edje_load.c =================================================================== --- trunk/edje/src/lib/edje_load.c 2010-06-30 09:47:55 UTC (rev 49945) +++ trunk/edje/src/lib/edje_load.c 2010-06-30 09:49:15 UTC (rev 49946) @@ -435,6 +435,8 @@ break; case EDJE_PART_TYPE_GRADIENT: rp->object = evas_object_gradient_add(ed->evas); + ERR("SPANK ! SPANK ! SPANK !\nYOU ARE USING GRADIENT IN PART %s FROM GROUP %s INSIDE FILE %s !!\n THEY WILL BE REMOVED SHORTLY !", + ep->name, group, file); break; case EDJE_PART_TYPE_BOX: rp->object = evas_object_box_add(ed->evas); |
From: Enlightenment S. <no-...@en...> - 2010-07-15 13:47:30
|
Log: * edje: count each type of description. Author: cedric Date: 2010-07-15 06:38:07 -0700 (Thu, 15 Jul 2010) New Revision: 50267 Modified: trunk/edje/src/lib/edje_convert.c trunk/edje/src/lib/edje_private.h Modified: trunk/edje/src/lib/edje_convert.c =================================================================== --- trunk/edje/src/lib/edje_convert.c 2010-07-15 13:10:35 UTC (rev 50266) +++ trunk/edje/src/lib/edje_convert.c 2010-07-15 13:38:07 UTC (rev 50267) @@ -242,6 +242,8 @@ { Edje_Part_Collection_Directory_Entry *ce; Edje_Part_Collection *edc; + Edje_Part *part; + Eina_List *l; edc = oedc; @@ -249,6 +251,37 @@ ce->ref = edc; - /* FIXME : Count type part and change their structure */ + /* Count each type part and their respective state */ + EINA_LIST_FOREACH(oedc->parts, l, part) + { + int *count; + int dummy = 0; + + + switch (part->type) + { +#define CSP(Tp, Ce) \ + case EDJE_PART_TYPE_##Tp : \ + count = &Ce->count.Tp; \ + break; + + CSP(RECTANGLE, ce); + CSP(TEXT, ce); + CSP(IMAGE, ce); + CSP(SWALLOW, ce); + CSP(TEXTBLOCK, ce); + CSP(GROUP, ce); + CSP(BOX, ce); + CSP(TABLE, ce); + CSP(EXTERNAL, ce); + default: + count = &dummy; + break; + } + + *count += eina_list_count(part->other_desc) + 1; + } + + /* FIXME : change structure layout */ return edc; } Modified: trunk/edje/src/lib/edje_private.h =================================================================== --- trunk/edje/src/lib/edje_private.h 2010-07-15 13:10:35 UTC (rev 50266) +++ trunk/edje/src/lib/edje_private.h 2010-07-15 13:38:07 UTC (rev 50267) @@ -506,6 +506,19 @@ const char *entry; /* the nominal name of the part collection */ int id; /* the id of this named part collection */ + struct + { + int RECTANGLE; + int TEXT; + int IMAGE; + int SWALLOW; + int TEXTBLOCK; + int GROUP; + int BOX; + int TABLE; + int EXTERNAL; + } count; + Edje_Part_Collection *ref; }; |
From: Enlightenment S. <no-...@en...> - 2010-07-16 13:05:44
|
Log: * edje: jump to the right offset in the string. Author: cedric Date: 2010-07-16 06:05:37 -0700 (Fri, 16 Jul 2010) New Revision: 50280 Modified: trunk/edje/src/lib/edje_program.c Modified: trunk/edje/src/lib/edje_program.c =================================================================== --- trunk/edje/src/lib/edje_program.c 2010-07-16 11:37:58 UTC (rev 50279) +++ trunk/edje/src/lib/edje_program.c 2010-07-16 13:05:37 UTC (rev 50280) @@ -1083,7 +1083,7 @@ newsig = idx; *newsig = '\0'; - newsig++; + newsig += 2; /* we jump over ']' and ':' */ child = _edje_children_get(rp, partid); |
From: Enlightenment S. <no-...@en...> - 2010-07-16 14:25:05
|
Log: * edje: move all structures outside of Edje_Part_Description. Author: cedric Date: 2010-07-16 07:24:57 -0700 (Fri, 16 Jul 2010) New Revision: 50283 Modified: trunk/edje/src/lib/edje_private.h Modified: trunk/edje/src/lib/edje_private.h =================================================================== --- trunk/edje/src/lib/edje_private.h 2010-07-16 14:13:38 UTC (rev 50282) +++ trunk/edje/src/lib/edje_private.h 2010-07-16 14:24:57 UTC (rev 50283) @@ -233,6 +233,9 @@ typedef struct _Edje_Part_Description Edje_Part_Description; typedef struct _Edje_Part_Description_Common Edje_Part_Description_Common; typedef struct _Edje_Part_Description_Spec_Image Edje_Part_Description_Spec_Image; +typedef struct _Edje_Part_Description_Spec_Text Edje_Part_Description_Spec_Text; +typedef struct _Edje_Part_Description_Spec_Box Edje_Part_Description_Spec_Box; +typedef struct _Edje_Part_Description_Spec_Table Edje_Part_Description_Spec_Table; typedef struct _Edje_Patterns Edje_Patterns; typedef struct _Old_Edje_File Old_Edje_File; @@ -705,59 +708,64 @@ } fill; }; -struct _Edje_Part_Description +struct _Edje_Part_Description_Spec_Text { - Edje_Part_Description_Common common; - Edje_Part_Description_Spec_Image image; + char *text; /* if "" or NULL, then leave text unchanged */ + char *text_class; /* how to apply/modify the font */ + char *style; /* the text style if a textblock */ + char *font; /* if a specific font is asked for */ + char *repch; /* replacement char for password mode entry */ - char *color_class; /* how to modify the color */ + Edje_Alignment align; /* text alignment within bounds */ + double elipsis; /* 0.0 - 1.0 defining where the elipsis align */ + int size; /* 0 = use user set size */ + int id_source; /* -1 if none */ + int id_text_source; /* -1 if none */ + + unsigned char fit_x; /* resize font size down to fit in x dir */ + unsigned char fit_y; /* resize font size down to fit in y dir */ + unsigned char min_x; /* if text size should be part min size */ + unsigned char min_y; /* if text size should be part min size */ + unsigned char max_x; /* if text size should be part max size */ + unsigned char max_y; /* if text size should be part max size */ +}; + +struct _Edje_Part_Description_Spec_Box +{ + char *layout, *alt_layout; + Edje_Alignment align; struct { - char *text; /* if "" or NULL, then leave text unchanged */ - char *text_class; /* how to apply/modify the font */ - char *style; /* the text style if a textblock */ - char *font; /* if a specific font is asked for */ - char *repch; /* replacement char for password mode entry */ + int x, y; + } padding; + struct { + Eina_Bool h, v; + } min; +}; - Edje_Alignment align; /* text alignment within bounds */ +struct _Edje_Part_Description_Spec_Table +{ + unsigned char homogeneous; + Edje_Alignment align; + struct { + int x, y; + } padding; +}; - double elipsis; /* 0.0 - 1.0 defining where the elipsis align */ - int size; /* 0 = use user set size */ - int id_source; /* -1 if none */ - int id_text_source; /* -1 if none */ +struct _Edje_Part_Description +{ + Edje_Part_Description_Common common; + Edje_Part_Description_Spec_Image image; + Edje_Part_Description_Spec_Text text; + Edje_Part_Description_Spec_Box box; + Edje_Part_Description_Spec_Table table; - unsigned char fit_x; /* resize font size down to fit in x dir */ - unsigned char fit_y; /* resize font size down to fit in y dir */ - unsigned char min_x; /* if text size should be part min size */ - unsigned char min_y; /* if text size should be part min size */ - unsigned char max_x; /* if text size should be part max size */ - unsigned char max_y; /* if text size should be part max size */ - } text; + char *color_class; /* how to modify the color */ - struct { - char *layout, *alt_layout; - Edje_Alignment align; - struct { - int x, y; - } padding; - struct { - Eina_Bool h, v; - } min; - } box; - - struct { - unsigned char homogeneous; - Edje_Alignment align; - struct { - int x, y; - } padding; - } table; - Edje_Color color, color2, color3; /* color for rect or text, shadow etc. */ Eina_List *external_params; /* parameters for external objects */ }; - /*----------*/ |
From: Enlightenment S. <no-...@en...> - 2010-07-19 16:41:26
|
Log: * edje: fix constness warning. Author: cedric Date: 2010-07-19 09:41:19 -0700 (Mon, 19 Jul 2010) New Revision: 50368 Modified: trunk/edje/src/lib/edje_convert.h trunk/edje/src/lib/edje_private.h Modified: trunk/edje/src/lib/edje_convert.h =================================================================== --- trunk/edje/src/lib/edje_convert.h 2010-07-19 15:40:28 UTC (rev 50367) +++ trunk/edje/src/lib/edje_convert.h 2010-07-19 16:41:19 UTC (rev 50368) @@ -35,7 +35,7 @@ Eina_List *styles; Eina_List *color_classes; - char *compiler; + const char *compiler; int version; int feature_ver; }; Modified: trunk/edje/src/lib/edje_private.h =================================================================== --- trunk/edje/src/lib/edje_private.h 2010-07-19 15:40:28 UTC (rev 50367) +++ trunk/edje/src/lib/edje_private.h 2010-07-19 16:41:19 UTC (rev 50368) @@ -369,7 +369,7 @@ struct _Edje_Data { - char *key; + const char *key; char *value; }; |
From: Enlightenment S. <no-...@en...> - 2010-07-27 10:06:09
|
Log: * edje: fix fit code when string is empty. Author: cedric Date: 2010-07-27 03:06:02 -0700 (Tue, 27 Jul 2010) New Revision: 50537 Modified: trunk/edje/src/lib/edje_text.c Modified: trunk/edje/src/lib/edje_text.c =================================================================== --- trunk/edje/src/lib/edje_text.c 2010-07-27 09:56:52 UTC (rev 50536) +++ trunk/edje/src/lib/edje_text.c 2010-07-27 10:06:02 UTC (rev 50537) @@ -384,7 +384,7 @@ if (ep->text.cache.in_str) eina_stringshare_del(ep->text.cache.in_str); ep->text.cache.in_str = eina_stringshare_add(text); ep->text.cache.in_size = size; - if (chosen_desc->text.fit_x) + if (chosen_desc->text.fit_x && (ep->text.cache.in_str != NULL && eina_stringshare_strlen(ep->text.cache.in_str) > 0)) { if (inlined_font) evas_object_text_font_source_set(ep->object, ed->path); else evas_object_text_font_source_set(ep->object, NULL); @@ -421,6 +421,7 @@ { psize = size; size = (size * sw) / tw; + /* fprintf(stderr, "size = %i (%i, %i)\n", size, sw, tw); */ if ((psize - size) >= 0) size = psize + 1; if (inlined_font) evas_object_text_font_source_set(ep->object, ed->path); else evas_object_text_font_source_set(ep->object, NULL); @@ -432,7 +433,7 @@ } } } - if (chosen_desc->text.fit_y) + if (chosen_desc->text.fit_y && (ep->text.cache.in_str != NULL && eina_stringshare_strlen(ep->text.cache.in_str) > 0)) { /* if we fit in the x axis, too, size already has a somewhat * meaningful value, so don't overwrite it with the starting |
From: Enlightenment S. <no-...@en...> - 2010-07-30 08:29:19
|
Log: * edje: fix counting. Author: cedric Date: 2010-07-30 01:29:13 -0700 (Fri, 30 Jul 2010) New Revision: 50681 Modified: trunk/edje/src/lib/edje_edit.c Modified: trunk/edje/src/lib/edje_edit.c =================================================================== --- trunk/edje/src/lib/edje_edit.c 2010-07-30 08:26:34 UTC (rev 50680) +++ trunk/edje/src/lib/edje_edit.c 2010-07-30 08:29:13 UTC (rev 50681) @@ -1782,6 +1782,7 @@ Eina_Bool _edje_edit_real_part_add(Evas_Object *obj, const char *name, Edje_Part_Type type, const char *source) { + Edje_Part_Collection_Directory_Entry *ce; Edje_Part_Collection *pc; Edje_Part **tmp; Edje_Part *ep; @@ -1917,6 +1918,9 @@ edje_edit_state_add(obj, name, "default", 0.0); edje_edit_part_selected_state_set(obj, name, "default", 0.0); + ce = eina_hash_find(ed->file->collection, ed->group); + ce->count.part++; + return EINA_TRUE; } @@ -2028,6 +2032,10 @@ evas_object_hide(ed->clipper); edje_object_calc_force(obj); + + ce = eina_hash_find(ed->file->collection, ed->group); + ce->count.part--; + return EINA_TRUE; } @@ -2609,6 +2617,21 @@ break; } +#define DEC_COUNT(Type) case EDJE_PART_TYPE_##Type: ce->count.Type--; break; + + switch (rp->part->type) + { + DEC_COUNT(RECTANGLE); + DEC_COUNT(TEXT); + DEC_COUNT(IMAGE); + DEC_COUNT(SWALLOW); + DEC_COUNT(TEXTBLOCK); + DEC_COUNT(GROUP); + DEC_COUNT(BOX); + DEC_COUNT(TABLE); + DEC_COUNT(EXTERNAL); + } + _edje_collection_free_part_description_free(rp->part->type, pd, ce, 0); } |
From: Enlightenment S. <no-...@en...> - 2010-07-30 09:08:43
|
Log: * edje: fix rename of a part. Author: cedric Date: 2010-07-30 02:08:37 -0700 (Fri, 30 Jul 2010) New Revision: 50684 Modified: trunk/edje/src/lib/edje_edit.c Modified: trunk/edje/src/lib/edje_edit.c =================================================================== --- trunk/edje/src/lib/edje_edit.c 2010-07-30 09:06:58 UTC (rev 50683) +++ trunk/edje/src/lib/edje_edit.c 2010-07-30 09:08:37 UTC (rev 50684) @@ -664,7 +664,8 @@ //printf(" [%d]Checking part: %s id: %d\n", correct_id, p->name, p->id); if (p->id != correct_id) - _edje_part_id_set(ed, ed->table_parts[p->id], correct_id); + if (ed->table_parts[p->id]) + _edje_part_id_set(ed, ed->table_parts[p->id], correct_id); correct_id++; } @@ -1031,13 +1032,11 @@ //if (pc->part && ed->file->free_strings) eina_stringshare_del(pc->part); TODO FIXME pce = eina_hash_find(ed->file->collection, pc->part); - eina_hash_del(ed->file->collection, pce->entry, pce); + eina_hash_move(ed->file->collection, pce->entry, new_name); pce->entry = eina_stringshare_add(new_name); pc->part = pce->entry; - eina_hash_add(ed->file->collection, pce->entry, pce); - return EINA_FALSE; } |
From: Enlightenment S. <no-...@en...> - 2010-07-30 09:53:28
|
Log: * edje: more unitialized case handled. Author: cedric Date: 2010-07-30 02:53:20 -0700 (Fri, 30 Jul 2010) New Revision: 50685 Modified: trunk/edje/src/lib/edje_edit.c Modified: trunk/edje/src/lib/edje_edit.c =================================================================== --- trunk/edje/src/lib/edje_edit.c 2010-07-30 09:08:37 UTC (rev 50684) +++ trunk/edje/src/lib/edje_edit.c 2010-07-30 09:53:20 UTC (rev 50685) @@ -2646,15 +2646,12 @@ { case EDJE_PART_TYPE_RECTANGLE: pd = eina_mempool_malloc(ce->mp.RECTANGLE, sizeof (Edje_Part_Description_Common)); - memset(pd, 0, sizeof (pd)); break; case EDJE_PART_TYPE_SWALLOW: pd = eina_mempool_malloc(ce->mp.SWALLOW, sizeof (Edje_Part_Description_Common)); - memset(pd, 0, sizeof (pd)); break; case EDJE_PART_TYPE_GROUP: pd = eina_mempool_malloc(ce->mp.GROUP, sizeof (Edje_Part_Description_Common)); - memset(pd, 0, sizeof (pd)); break; #define ALLOC_POOL(Short, Type, Name) \ @@ -2662,8 +2659,8 @@ { \ Edje_Part_Description_##Type *Name; \ \ - Name = eina_mempool_malloc(ce->mp.Short, sizeof (Edje_Part_Description_##Type)); \ - memset(Name, 0, sizeof (Name)); \ + Name = eina_mempool_malloc(ce->mp.Short, \ + sizeof (Edje_Part_Description_##Type)); \ pd = &Name->common; \ break; \ } @@ -2673,7 +2670,7 @@ ALLOC_POOL(TEXTBLOCK, Text, text); ALLOC_POOL(BOX, Box, box); ALLOC_POOL(TABLE, Table, table); - ALLOC_POOL(EXTERNAL, External, external); + ALLOC_POOL(EXTERNAL, External, external_params); } return pd; @@ -2703,6 +2700,8 @@ rp->part->other_desc[rp->part->other_count++] = pd; } + memset(pd, 0, sizeof (pd)); + pd->state.name = eina_stringshare_add(name); pd->state.value = value; pd->visible = 1; @@ -2735,6 +2734,19 @@ pd->color2.g = 0; pd->color2.b = 0; pd->color2.a = 255; + pd->map.id_persp = -1; + pd->map.id_light = -1; + pd->map.rot.id_center = -1; + pd->map.rot.x = FROM_DOUBLE(0.0); + pd->map.rot.y = FROM_DOUBLE(0.0); + pd->map.rot.z = FROM_DOUBLE(0.0); + pd->map.on = 0; + pd->map.smooth = 1; + pd->map.alpha = 1; + pd->map.backcull = 0; + pd->map.persp_on = 0; + pd->persp.zplane = 0; + pd->persp.focal = 1000; if (rp->part->type == EDJE_PART_TYPE_TEXT || rp->part->type == EDJE_PART_TYPE_TEXTBLOCK) @@ -2743,6 +2755,8 @@ text = (Edje_Part_Description_Text*) pd; + memset(&text->text, 0, sizeof (text->text)); + text->text.color3.r = 0; text->text.color3.g = 0; text->text.color3.b = 0; @@ -2758,6 +2772,8 @@ img = (Edje_Part_Description_Image*) pd; + memset(&img->image, 0, sizeof (img->image)); + img->image.id = -1; img->image.fill.smooth = 1; img->image.fill.pos_rel_x = 0.0; @@ -2772,48 +2788,68 @@ img->image.fill.spread = 0; img->image.fill.type = EDJE_FILL_TYPE_SCALE; } - else if ((rp->part->type == EDJE_PART_TYPE_EXTERNAL) && (rp->part->source)) + else if (rp->part->type == EDJE_PART_TYPE_EXTERNAL) { Edje_Part_Description_External *external; Edje_External_Param_Info *pi; external = (Edje_Part_Description_External*) pd; - pi = (Edje_External_Param_Info *)edje_external_param_info_get(rp->part->source); - while (pi && pi->name) + + memset(&external->external_params, 0, sizeof (external->external_params)); + + if (rp->part->source) { - Edje_External_Param *p; - p = _alloc(sizeof(Edje_External_Param)); - /* error checking.. meh */ - p->name = eina_stringshare_add(pi->name); - p->type = pi->type; - switch(p->type) + pi = (Edje_External_Param_Info *)edje_external_param_info_get(rp->part->source); + while (pi && pi->name) { - case EDJE_EXTERNAL_PARAM_TYPE_INT: - case EDJE_EXTERNAL_PARAM_TYPE_BOOL: - if (pi->info.i.def != EDJE_EXTERNAL_INT_UNSET) - p->i = pi->info.i.def; - break; - case EDJE_EXTERNAL_PARAM_TYPE_DOUBLE: - if (pi->info.d.def != EDJE_EXTERNAL_DOUBLE_UNSET) - p->d = pi->info.d.def; - break; - case EDJE_EXTERNAL_PARAM_TYPE_CHOICE: - if (pi->info.c.def) - p->s = eina_stringshare_add(pi->info.c.def); - break; - case EDJE_EXTERNAL_PARAM_TYPE_STRING: - if (pi->info.s.def) - p->s = eina_stringshare_add(pi->info.s.def); - break; - default: - ERR("unknown external parameter type '%d'", p->type); + Edje_External_Param *p; + p = _alloc(sizeof(Edje_External_Param)); + /* error checking.. meh */ + p->name = eina_stringshare_add(pi->name); + p->type = pi->type; + switch(p->type) + { + case EDJE_EXTERNAL_PARAM_TYPE_INT: + case EDJE_EXTERNAL_PARAM_TYPE_BOOL: + if (pi->info.i.def != EDJE_EXTERNAL_INT_UNSET) + p->i = pi->info.i.def; + break; + case EDJE_EXTERNAL_PARAM_TYPE_DOUBLE: + if (pi->info.d.def != EDJE_EXTERNAL_DOUBLE_UNSET) + p->d = pi->info.d.def; + break; + case EDJE_EXTERNAL_PARAM_TYPE_CHOICE: + if (pi->info.c.def) + p->s = eina_stringshare_add(pi->info.c.def); + break; + case EDJE_EXTERNAL_PARAM_TYPE_STRING: + if (pi->info.s.def) + p->s = eina_stringshare_add(pi->info.s.def); + break; + default: + ERR("unknown external parameter type '%d'", p->type); + } + external->external_params = eina_list_append(external->external_params, p); + pi++; } - external->external_params = eina_list_append(external->external_params, p); - pi++; + if (external->external_params) + rp->param1.external_params = _edje_external_params_parse(rp->swallowed_object, external->external_params); } - if (external->external_params) - rp->param1.external_params = _edje_external_params_parse(rp->swallowed_object, external->external_params); } + else if (rp->part->type == EDJE_PART_TYPE_BOX) + { + Edje_Part_Description_Box *box; + + box = (Edje_Part_Description_Box*) pd; + memset(&box->box, 0, sizeof (box->box)); + } + else if (rp->part->type == EDJE_PART_TYPE_TABLE) + { + Edje_Part_Description_Table *table; + + table = (Edje_Part_Description_Table*) pd; + memset(&table->table, 0, sizeof (table->table)); + } } EAPI Eina_Bool @@ -2973,7 +3009,7 @@ { \ GET_PD_OR_RETURN(); \ pd->Sub.relative_##Value = FROM_DOUBLE(v); \ - edje_object_calc_force(obj); \ + edje_object_calc_force(obj); \ } FUNC_STATE_RELATIVE_DOUBLE(rel1, x); |
From: Enlightenment S. <no-...@en...> - 2010-08-02 12:41:37
|
Log: * edje: fix counting. Author: cedric Date: 2010-08-02 05:41:28 -0700 (Mon, 02 Aug 2010) New Revision: 50742 Modified: trunk/edje/src/lib/edje_edit.c Modified: trunk/edje/src/lib/edje_edit.c =================================================================== --- trunk/edje/src/lib/edje_edit.c 2010-08-02 09:44:11 UTC (rev 50741) +++ trunk/edje/src/lib/edje_edit.c 2010-08-02 12:41:28 UTC (rev 50742) @@ -917,7 +917,20 @@ //cd = _alloc(sizeof(Code)); //codes = eina_list_append(codes, cd); +#define EMN(Tp, Sz, Ce) \ + Ce->mp.Tp = eina_mempool_add("chained_mempool", #Tp, NULL, sizeof (Sz), 10); + EMN(RECTANGLE, Edje_Part_Description_Common, de); + EMN(TEXT, Edje_Part_Description_Text, de); + EMN(IMAGE, Edje_Part_Description_Image, de); + EMN(SWALLOW, Edje_Part_Description_Common, de); + EMN(TEXTBLOCK, Edje_Part_Description_Text, de); + EMN(GROUP, Edje_Part_Description_Common, de); + EMN(BOX, Edje_Part_Description_Box, de); + EMN(TABLE, Edje_Part_Description_Table, de); + EMN(EXTERNAL, Edje_Part_Description_External, de); + EMN(part, Edje_Part, de); + ed->file->collection_cache = eina_list_prepend(ed->file->collection_cache, pc); _edje_cache_coll_clean(ed->file); @@ -2648,15 +2661,18 @@ { case EDJE_PART_TYPE_RECTANGLE: pd = eina_mempool_malloc(ce->mp.RECTANGLE, sizeof (Edje_Part_Description_Common)); + ce->count.RECTANGLE++; break; case EDJE_PART_TYPE_SWALLOW: pd = eina_mempool_malloc(ce->mp.SWALLOW, sizeof (Edje_Part_Description_Common)); + ce->count.SWALLOW++; break; case EDJE_PART_TYPE_GROUP: pd = eina_mempool_malloc(ce->mp.GROUP, sizeof (Edje_Part_Description_Common)); + ce->count.GROUP++; break; -#define EDIT_ALLOC_POOL(Short, Type, Name) \ +#define EDIT_ALLOC_POOL(Short, Type, Name) \ case EDJE_PART_TYPE_##Short: \ { \ Edje_Part_Description_##Type *Name; \ @@ -2664,6 +2680,7 @@ Name = eina_mempool_malloc(ce->mp.Short, \ sizeof (Edje_Part_Description_##Type)); \ pd = &Name->common; \ + ce->count.Short++; \ break; \ } |
From: Enlightenment S. <no-...@en...> - 2010-08-03 12:59:04
|
Log: * edje: fix some issue during destruction of edje_part_description, and move tweens to an array. Author: cedric Date: 2010-08-03 05:58:31 -0700 (Tue, 03 Aug 2010) New Revision: 50765 Modified: trunk/edje/src/lib/edje_calc.c trunk/edje/src/lib/edje_convert.c trunk/edje/src/lib/edje_convert.h trunk/edje/src/lib/edje_edit.c trunk/edje/src/lib/edje_embryo.c trunk/edje/src/lib/edje_load.c trunk/edje/src/lib/edje_private.h Modified: trunk/edje/src/lib/edje_calc.c =================================================================== --- trunk/edje/src/lib/edje_calc.c 2010-08-03 12:41:44 UTC (rev 50764) +++ trunk/edje/src/lib/edje_calc.c 2010-08-03 12:58:31 UTC (rev 50765) @@ -129,7 +129,7 @@ epdi = (Edje_Part_Description_Image*) epd2; /* There is an animation if both description are different or if description is an image with tweens */ - if (epd2 != NULL && (epd1 != epd2 || (ep->part->type == EDJE_PART_TYPE_IMAGE && epdi->image.tween_list))) + if (epd2 != NULL && (epd1 != epd2 || (ep->part->type == EDJE_PART_TYPE_IMAGE && epdi->image.tweens_count))) { if (!ep->param2) { @@ -1563,7 +1563,7 @@ { image_count = 2; if (ep->param2) - image_count += eina_list_count(((Edje_Part_Description_Image*) ep->param2->description)->image.tween_list); + image_count += ((Edje_Part_Description_Image*) ep->param2->description)->image.tweens_count; image_num = TO_INT(MUL(pos, SUB(FROM_INT(image_count), FROM_DOUBLE(0.5)))); if (image_num > (image_count - 1)) @@ -1589,8 +1589,7 @@ { Edje_Part_Image_Id *imid; - imid = eina_list_nth(((Edje_Part_Description_Image*) ep->param2->description)->image.tween_list, - image_num - 1); + imid = ((Edje_Part_Description_Image*) ep->param2->description)->image.tweens[image_num - 1]; image_id = _edje_image_find(ep->object, ed, NULL, NULL, imid); } } Modified: trunk/edje/src/lib/edje_convert.c =================================================================== --- trunk/edje/src/lib/edje_convert.c 2010-08-03 12:41:44 UTC (rev 50764) +++ trunk/edje/src/lib/edje_convert.c 2010-08-03 12:58:31 UTC (rev 50765) @@ -393,16 +393,50 @@ switch (type) { case EDJE_PART_TYPE_RECTANGLE: - result = eina_mempool_malloc(ce->mp.RECTANGLE, sizeof (Edje_Part_Description_Common)); + result = eina_mempool_malloc(ce->mp.RECTANGLE, + sizeof (Edje_Part_Description_Common)); break; case EDJE_PART_TYPE_SWALLOW: - result = eina_mempool_malloc(ce->mp.SWALLOW, sizeof (Edje_Part_Description_Common)); + result = eina_mempool_malloc(ce->mp.SWALLOW, + sizeof (Edje_Part_Description_Common)); break; case EDJE_PART_TYPE_GROUP: - result = eina_mempool_malloc(ce->mp.GROUP, sizeof (Edje_Part_Description_Common)); + result = eina_mempool_malloc(ce->mp.GROUP, + sizeof (Edje_Part_Description_Common)); break; -#define CONVERT_ALLOC_POOL(Short, Type, Name) \ + case EDJE_PART_TYPE_IMAGE: + { + Edje_Part_Description_Image *img; + Edje_Part_Image_Id *id; + unsigned int i = 0; + + img = eina_mempool_malloc(ce->mp.IMAGE, sizeof (Edje_Part_Description_Image)); + + img->image.tweens_count = eina_list_count(oed->image.tween_list); + img->image.tweens = calloc(img->image.tweens_count, + sizeof (Edje_Part_Image_Id*)); + if (!img->image.tweens) + { + eina_mempool_free(ce->mp.IMAGE, img); + return NULL; + } + + EINA_LIST_FREE(oed->image.tween_list, id) + img->image.tweens[i++] = id; + + img->image.id = oed->image.id; + img->image.scale_hint = oed->image.scale_hint; + img->image.set = oed->image.set; + + img->image.border = oed->image.border; + img->image.fill = oed->image.fill; + + result = &img->common; + break; + } + +#define CONVERT_ALLOC_POOL(Short, Type, Name) \ case EDJE_PART_TYPE_##Short: \ { \ Edje_Part_Description_##Type *Name; \ @@ -413,7 +447,6 @@ break; \ } - CONVERT_ALLOC_POOL(IMAGE, Image, image); CONVERT_ALLOC_POOL(TEXT, Text, text); CONVERT_ALLOC_POOL(TEXTBLOCK, Text, text); CONVERT_ALLOC_POOL(BOX, Box, box); Modified: trunk/edje/src/lib/edje_convert.h =================================================================== --- trunk/edje/src/lib/edje_convert.h 2010-08-03 12:41:44 UTC (rev 50764) +++ trunk/edje/src/lib/edje_convert.h 2010-08-03 12:58:31 UTC (rev 50765) @@ -7,7 +7,8 @@ typedef struct _Old_Edje_Part Old_Edje_Part; typedef struct _Old_Edje_Part_Collection Old_Edje_Part_Collection; typedef struct _Old_Edje_Part_Description Old_Edje_Part_Description; -typedef struct _Edje_Data Edje_Data; +typedef struct _Old_Edje_Part_Description_Spec_Image Old_Edje_Part_Description_Spec_Image; +typedef struct _Edje_Data Edje_Data; struct _Edje_Data { @@ -108,10 +109,21 @@ Edje_Part_Api api; }; +struct _Old_Edje_Part_Description_Spec_Image +{ + Eina_List *tween_list; /* list of Edje_Part_Image_Id */ + int id; /* the image id to use */ + int scale_hint; /* evas scale hint */ + Eina_Bool set; /* if image condition it's content */ + + Edje_Part_Description_Spec_Border border; + Edje_Part_Description_Spec_Fill fill; +}; + struct _Old_Edje_Part_Description { Edje_Part_Description_Common common; - Edje_Part_Description_Spec_Image image; + Old_Edje_Part_Description_Spec_Image image; Edje_Part_Description_Spec_Text text; Edje_Part_Description_Spec_Box box; Edje_Part_Description_Spec_Table table; Modified: trunk/edje/src/lib/edje_edit.c =================================================================== --- trunk/edje/src/lib/edje_edit.c 2010-08-03 12:41:44 UTC (rev 50764) +++ trunk/edje/src/lib/edje_edit.c 2010-08-03 12:58:31 UTC (rev 50765) @@ -2882,9 +2882,8 @@ edje_edit_state_copy(Evas_Object *obj, const char *part, const char *from, double val_from, const char *to, double val_to) { Edje_Part_Description_Common *pdfrom, *pdto; - Edje_Part_Image_Id *i; Edje_External_Param *p; - Eina_List *l; + GET_RP_OR_RETURN(EINA_FALSE); pdfrom = _edje_part_description_find_byname(eed, part, from, val_from); @@ -2923,20 +2922,30 @@ { Edje_Part_Description_Image *img_to = (Edje_Part_Description_Image*) pdto; Edje_Part_Description_Image *img_from = (Edje_Part_Description_Image*) pdfrom; + unsigned int i; img_to->image = img_from->image; /* Update pointers. */ - EINA_LIST_FREE(img_to->image.tween_list, i) - free(i); + for (i = 0; i < img_to->image.tweens_count; ++i) + free(img_to->image.tweens[i]); + free(img_to->image.tweens); - EINA_LIST_FOREACH(img_from->image.tween_list, l, i) + img_to->image.tweens_count = img_from->image.tweens_count; + img_to->image.tweens = calloc(img_to->image.tweens_count, + sizeof (Edje_Part_Image_Id*)); + if (!img_to->image.tweens) + break; + + for (i = 0; i < img_to->image.tweens_count; ++i) { Edje_Part_Image_Id *new_i; new_i = _alloc(sizeof(Edje_Part_Image_Id)); - /* error checking? What to do if failed? Rollbacgk, abort? */ - new_i->id = i->id; - img_to->image.tween_list = eina_list_append(img_to->image.tween_list, new_i); + if (!new_i) continue ; + + *new_i = *img_from->image.tweens[i]; + + img_to->image.tweens[i] = new_i; } } case EDJE_PART_TYPE_TEXT: @@ -2975,6 +2984,7 @@ { Edje_Part_Description_External *ext_to = (Edje_Part_Description_External*) pdto; Edje_Part_Description_External *ext_from = (Edje_Part_Description_External*) pdfrom; + Eina_List *l; /* XXX: optimize this, most likely we don't need to remove and add */ EINA_LIST_FREE(ext_to->external_params, p) @@ -4221,9 +4231,9 @@ edje_edit_state_tweens_list_get(Evas_Object *obj, const char *part, const char *state, double value) { Edje_Part_Description_Image *img; - Edje_Part_Image_Id *i; - Eina_List *tweens = NULL, *l; + Eina_List *tweens = NULL; const char *name; + unsigned int i; GET_PD_OR_RETURN(NULL); @@ -4231,9 +4241,9 @@ img = (Edje_Part_Description_Image *) pd; - EINA_LIST_FOREACH(img->image.tween_list, l, i) + for (i = 0; i < img->image.tweens_count; ++i) { - name = _edje_image_name_find(obj, i->id); + name = _edje_image_name_find(obj, img->image.tweens[i]->id); //printf(" t: %s\n", name); tweens = eina_list_append(tweens, eina_stringshare_add(name)); } @@ -4245,6 +4255,7 @@ edje_edit_state_tween_add(Evas_Object *obj, const char *part, const char *state, double value, const char *tween) { Edje_Part_Description_Image *img; + Edje_Part_Image_Id **tmp; Edje_Part_Image_Id *i; int id; @@ -4261,8 +4272,17 @@ img = (Edje_Part_Description_Image *) pd; /* add to tween list */ - img->image.tween_list = eina_list_append(img->image.tween_list, i); + tmp = realloc(img->image.tweens, + sizeof (Edje_Part_Image_Id*) * img->image.tweens_count); + if (!tmp) + { + free(i); + return EINA_FALSE; + } + tmp[img->image.tweens_count++] = i; + img->image.tweens = tmp; + return EINA_TRUE; } @@ -4270,24 +4290,27 @@ edje_edit_state_tween_del(Evas_Object *obj, const char *part, const char *state, double value, const char *tween) { Edje_Part_Description_Image *img; - Edje_Part_Image_Id *i; - Eina_List *l; - int id; + unsigned int i; + int search; GET_PD_OR_RETURN(EINA_FALSE); img = (Edje_Part_Description_Image *) pd; - if (!img->image.tween_list) return EINA_FALSE; + if (!img->image.tweens_count) return EINA_FALSE; - id = _edje_image_id_find(obj, tween); - if (id < 0) return EINA_FALSE; + search = _edje_image_id_find(obj, tween); + if (search < 0) return EINA_FALSE; - EINA_LIST_FOREACH(img->image.tween_list, l, i) + for (i = 0; i < img->image.tweens_count; ++i) { - if (i->id == id) + if (img->image.tweens[i]->id == search) { - img->image.tween_list = eina_list_remove_list(img->image.tween_list, l); + img->image.tweens_count--; + free(img->image.tweens[i]); + memmove(img->image.tweens + i, + img->image.tweens + i + 1, + sizeof (Edje_Part_Description_Image*) * (img->image.tweens_count - i)); return EINA_TRUE; } } @@ -6108,6 +6131,24 @@ switch (type) { + case EDJE_PART_TYPE_IMAGE: + { + Edje_Part_Description_Image *img = (Edje_Part_Description_Image*) desc; + unsigned int i; + + for (i = 0; i < img->image.tweens_count; ++i) + result->image.tween_list = eina_list_append(result->image.tween_list, + img->image.tweens[i]); + + result->image.id = img->image.id; + result->image.scale_hint = img->image.scale_hint; + result->image.set = img->image.set; + result->image.border = img->image.border; + result->image.fill = img->image.fill; + + break; + } + #define COPY_OLD(Short, Type, Name) \ case EDJE_PART_TYPE_##Short: \ { \ @@ -6117,7 +6158,6 @@ break; \ } - COPY_OLD(IMAGE, Image, image); COPY_OLD(TEXT, Text, text); COPY_OLD(TEXTBLOCK, Text, text); COPY_OLD(BOX, Box, box); @@ -6229,7 +6269,10 @@ EINA_LIST_FREE(oepc.parts, oep) { EINA_LIST_FREE(oep->other_desc, oepd) - free(oepd); + { + eina_list_free(oepd->image.tween_list); + free(oepd); + } eina_list_free(oep->items); free(oep); } Modified: trunk/edje/src/lib/edje_embryo.c =================================================================== --- trunk/edje/src/lib/edje_embryo.c 2010-08-03 12:41:44 UTC (rev 50764) +++ trunk/edje/src/lib/edje_embryo.c 2010-08-03 12:58:31 UTC (rev 50765) @@ -1558,8 +1558,6 @@ Edje *ed = embryo_program_data_get(ep); Edje_Real_Part *rp; Edje_Part_Description_Common *parent, *d = NULL; - Edje_Part_Image_Id *iid; - Eina_List *l; char *name; float val; @@ -1643,18 +1641,24 @@ img_desc = (Edje_Part_Description_Image*) d; parent_img_desc = (Edje_Part_Description_Image*) parent; - img_desc->image.tween_list = NULL; - - EINA_LIST_FOREACH(parent_img_desc->image.tween_list, l, iid) + img_desc->image.tweens_count = parent_img_desc->image.tweens_count; + img_desc->image.tweens = calloc(img_desc->image.tweens_count, + sizeof(Edje_Part_Image_Id*)); + if (img_desc->image.tweens) { - Edje_Part_Image_Id *iid_new; + unsigned int i; - iid_new = calloc(1, sizeof(Edje_Part_Image_Id)); - if (!iid_new) continue; + for (i = 0; i < parent_img_desc->image.tweens_count; ++i) + { + Edje_Part_Image_Id *iid_new; - iid_new->id = iid->id; + iid_new = calloc(1, sizeof(Edje_Part_Image_Id)); + if (!iid_new) continue; - img_desc->image.tween_list = eina_list_append(img_desc->image.tween_list, iid_new); + *iid_new = *parent_img_desc->image.tweens[i]; + + img_desc->image.tweens[i] = iid_new; + } } } Modified: trunk/edje/src/lib/edje_load.c =================================================================== --- trunk/edje/src/lib/edje_load.c 2010-08-03 12:41:44 UTC (rev 50764) +++ trunk/edje/src/lib/edje_load.c 2010-08-03 12:58:31 UTC (rev 50765) @@ -1206,8 +1206,6 @@ void _edje_collection_free_part_description_clean(int type, Edje_Part_Description_Common *desc, Eina_Bool free_strings) { - Edje_Part_Image_Id *pi; - if (free_strings && desc->color_class) eina_stringshare_del(desc->color_class); switch (type) @@ -1215,11 +1213,14 @@ case EDJE_PART_TYPE_IMAGE: { Edje_Part_Description_Image *img; + unsigned int i; img = (Edje_Part_Description_Image *) desc; - EINA_LIST_FREE(img->image.tween_list, pi) - free(pi); + for (i = 0; i < img->image.tweens_count; ++i) + free(img->image.tweens[i]); + free(img->image.tweens); + break; } case EDJE_PART_TYPE_EXTERNAL: { @@ -1229,6 +1230,7 @@ if (external->external_params) _edje_external_params_free(external->external_params, free_strings); + break; } case EDJE_PART_TYPE_TEXT: case EDJE_PART_TYPE_TEXTBLOCK: @@ -1243,6 +1245,7 @@ if (text->text.style) eina_stringshare_del(text->text.style); if (text->text.font) eina_stringshare_del(text->text.font); } + break; } } Modified: trunk/edje/src/lib/edje_private.h =================================================================== --- trunk/edje/src/lib/edje_private.h 2010-08-03 12:41:44 UTC (rev 50764) +++ trunk/edje/src/lib/edje_private.h 2010-08-03 12:58:31 UTC (rev 50765) @@ -237,6 +237,8 @@ typedef struct _Edje_Part_Description_Table Edje_Part_Description_Table; typedef struct _Edje_Part_Description_External Edje_Part_Description_External; typedef struct _Edje_Part_Description_Common Edje_Part_Description_Common; +typedef struct _Edje_Part_Description_Spec_Fill Edje_Part_Description_Spec_Fill; +typedef struct _Edje_Part_Description_Spec_Border Edje_Part_Description_Spec_Border; typedef struct _Edje_Part_Description_Spec_Image Edje_Part_Description_Spec_Image; typedef struct _Edje_Part_Description_Spec_Text Edje_Part_Description_Spec_Text; typedef struct _Edje_Part_Description_Spec_Box Edje_Part_Description_Spec_Box; @@ -708,33 +710,40 @@ unsigned char visible; /* is it shown */ }; +struct _Edje_Part_Description_Spec_Fill +{ + FLOAT_T pos_rel_x; /* fill offset x relative to area */ + FLOAT_T rel_x; /* relative size compared to area */ + FLOAT_T pos_rel_y; /* fill offset y relative to area */ + FLOAT_T rel_y; /* relative size compared to area */ + int pos_abs_x; /* fill offset x added to fill offset */ + int abs_x; /* size of fill added to relative fill */ + int pos_abs_y; /* fill offset y added to fill offset */ + int abs_y; /* size of fill added to relative fill */ + int angle; /* angle of fill -- currently only used by grads */ + int spread; /* spread of fill -- currently only used by grads */ + char smooth; /* fill with smooth scaling or not */ + unsigned char type; /* fill coordinate from container (SCALE) or from source image (TILE) */ +}; + +struct _Edje_Part_Description_Spec_Border +{ + int l, r, t, b; /* border scaling on image fill */ + unsigned char no_fill; /* do we fill the center of the image if bordered? 1 == NO!!!! */ + unsigned char scale; /* scale image border by same as scale factor */ +}; + struct _Edje_Part_Description_Spec_Image { - Eina_List *tween_list; /* list of Edje_Part_Image_Id */ + Edje_Part_Image_Id **tweens; /* list of Edje_Part_Image_Id */ + unsigned int tweens_count; /* number of tweens */ + int id; /* the image id to use */ int scale_hint; /* evas scale hint */ Eina_Bool set; /* if image condition it's content */ - struct { - int l, r, t, b; /* border scaling on image fill */ - unsigned char no_fill; /* do we fill the center of the image if bordered? 1 == NO!!!! */ - unsigned char scale; /* scale image border by same as scale factor */ - } border; - - struct { - FLOAT_T pos_rel_x; /* fill offset x relative to area */ - FLOAT_T rel_x; /* relative size compared to area */ - FLOAT_T pos_rel_y; /* fill offset y relative to area */ - FLOAT_T rel_y; /* relative size compared to area */ - int pos_abs_x; /* fill offset x added to fill offset */ - int abs_x; /* size of fill added to relative fill */ - int pos_abs_y; /* fill offset y added to fill offset */ - int abs_y; /* size of fill added to relative fill */ - int angle; /* angle of fill -- currently only used by grads */ - int spread; /* spread of fill -- currently only used by grads */ - char smooth; /* fill with smooth scaling or not */ - unsigned char type; /* fill coordinate from container (SCALE) or from source image (TILE) */ - } fill; + Edje_Part_Description_Spec_Border border; + Edje_Part_Description_Spec_Fill fill; }; struct _Edje_Part_Description_Spec_Text |
From: Enlightenment S. <no-...@en...> - 2010-08-04 14:25:50
|
Log: * edje: split programs type in different stack for later speed improvements. Author: cedric Date: 2010-08-04 07:25:40 -0700 (Wed, 04 Aug 2010) New Revision: 50810 Modified: trunk/edje/src/lib/edje_convert.c trunk/edje/src/lib/edje_convert.h trunk/edje/src/lib/edje_edit.c trunk/edje/src/lib/edje_load.c trunk/edje/src/lib/edje_match.c trunk/edje/src/lib/edje_private.h trunk/edje/src/lib/edje_program.c Modified: trunk/edje/src/lib/edje_convert.c =================================================================== --- trunk/edje/src/lib/edje_convert.c 2010-08-04 12:33:58 UTC (rev 50809) +++ trunk/edje/src/lib/edje_convert.c 2010-08-04 14:25:40 UTC (rev 50810) @@ -237,12 +237,52 @@ return NULL; } +static void +_edje_collection_program_add(Edje_Program ***array, + unsigned int *count, + Edje_Program *add) +{ + Edje_Program **tmp; + + tmp = realloc(*array, sizeof (Edje_Program*) * (*count + 1)); + if (!tmp) return ; + + tmp[(*count)++] = add; + *array = tmp; +} + +Eina_Bool +edje_program_is_strncmp(const char *str) +{ + unsigned int length; + + length = strlen(str); + + if (strpbrk(str, "*?[\\") != str + length) + return EINA_FALSE; + if (str[length] == '[' + || str[length] == '\\') + return EINA_FALSE; + return EINA_TRUE; +} + +Eina_Bool +edje_program_is_strrncmp(const char *str) +{ + if (*str != '*' && *str != '?') + return EINA_FALSE; + if (strpbrk(str + 1, "*?[\\") != NULL) + return EINA_FALSE; + return EINA_TRUE; +} + Edje_Part_Collection * _edje_collection_convert(Edje_File *file, Old_Edje_Part_Collection *oedc) { Edje_Part_Collection_Directory_Entry *ce; Edje_Part_Collection *edc; Old_Edje_Part *part; + Edje_Program *pg; Edje_Data *di; Eina_List *l; unsigned int k; @@ -300,8 +340,32 @@ if (!edc) return NULL; ce->ref = edc; - edc->programs = oedc->programs; - oedc->programs = NULL; + EINA_LIST_FREE(oedc->programs, pg) + { + if (!pg->signal && !pg->source) + _edje_collection_program_add(&edc->programs.nocmp, + &edc->programs.nocmp_count, + pg); + else if (pg->signal && strpbrk(pg->signal, "*?[\\") == NULL + && pg->source && strpbrk(pg->source, "*?[\\") == NULL) + _edje_collection_program_add(&edc->programs.strcmp, + &edc->programs.strcmp_count, + pg); + else if (pg->signal && edje_program_is_strncmp(pg->signal) + && pg->source && edje_program_is_strncmp(pg->source)) + _edje_collection_program_add(&edc->programs.strncmp, + &edc->programs.strncmp_count, + pg); + else if (pg->signal && edje_program_is_strrncmp(pg->signal) + && pg->source && edje_program_is_strrncmp(pg->source)) + _edje_collection_program_add(&edc->programs.strrncmp, + &edc->programs.strrncmp_count, + pg); + else + _edje_collection_program_add(&edc->programs.fnmatch, + &edc->programs.fnmatch_count, + pg); + } edc->data = eina_hash_string_small_new(NULL); EINA_LIST_FREE(oedc->data, di) Modified: trunk/edje/src/lib/edje_convert.h =================================================================== --- trunk/edje/src/lib/edje_convert.h 2010-08-04 12:33:58 UTC (rev 50809) +++ trunk/edje/src/lib/edje_convert.h 2010-08-04 14:25:40 UTC (rev 50810) @@ -140,4 +140,7 @@ const Edje_File *_edje_file_get(void); void _edje_file_set(const Edje_File *edf); +Eina_Bool edje_program_is_strncmp(const char *str); +Eina_Bool edje_program_is_strrncmp(const char *str); + #endif Modified: trunk/edje/src/lib/edje_edit.c =================================================================== --- trunk/edje/src/lib/edje_edit.c 2010-08-04 12:33:58 UTC (rev 50809) +++ trunk/edje/src/lib/edje_edit.c 2010-08-04 14:25:40 UTC (rev 50810) @@ -475,6 +475,27 @@ } static void +_edje_part_program_id_set(Edje_Program *epr, int old_id, int new_id) +{ + Edje_Program_Target *pt; + Eina_List *ll, *l_next; + + if (epr->action != EDJE_ACTION_TYPE_STATE_SET) + return; + + EINA_LIST_FOREACH_SAFE(epr->targets, ll, l_next, pt) + { + if (pt->id == old_id) + { + if (new_id == -1) + epr->targets = eina_list_remove_list(epr->targets, ll); + else + pt->id = new_id; + } + } +} + +static void _edje_part_id_set(Edje *ed, Edje_Real_Part *rp, int new_id) { /* This function change the id of a given real_part. @@ -483,11 +504,9 @@ * is lost. * If new Id = -1 then all the depencies will be deleted */ - int old_id; Edje_Part *part; - Eina_List *l, *ll, *l_next; - Edje_Program *epr; unsigned int j; + int old_id; part = rp->part; @@ -522,25 +541,16 @@ } /*...and also in programs targets */ - EINA_LIST_FOREACH(ed->collection->programs, l, epr) - { - Edje_Program_Target *pt; +#define EDJE_EDIT_PROGRAM_ID_SET(Array, Ed, It, Old, New) \ + for (It = 0; It < Ed->collection->programs.Array##_count; ++It) \ + _edje_part_program_id_set(Ed->collection->programs.Array[It], Old, New); - if (epr->action != EDJE_ACTION_TYPE_STATE_SET) - continue; + EDJE_EDIT_PROGRAM_ID_SET(fnmatch, ed, j, old_id, new_id); + EDJE_EDIT_PROGRAM_ID_SET(strcmp, ed, j, old_id, new_id); + EDJE_EDIT_PROGRAM_ID_SET(strncmp, ed, j, old_id, new_id); + EDJE_EDIT_PROGRAM_ID_SET(strrncmp, ed, j, old_id, new_id); + EDJE_EDIT_PROGRAM_ID_SET(nocmp, ed, j, old_id, new_id); - EINA_LIST_FOREACH_SAFE(epr->targets, ll, l_next, pt) - { - if (pt->id == old_id) - { - if (new_id == -1) - epr->targets = eina_list_remove_list(epr->targets, ll); - else - pt->id = new_id; - } - } - } - /* Adjust table_parts */ if (new_id >= 0) ed->table_parts[new_id] = rp; @@ -573,6 +583,22 @@ } static void +_edje_part_program_id_switch(Edje_Program *epr, int id1, int id2) +{ + Edje_Program_Target *pt; + Eina_List *ll; + + if (epr->action != EDJE_ACTION_TYPE_STATE_SET) + return; + + EINA_LIST_FOREACH(epr->targets, ll, pt) + { + if (pt->id == id1) pt->id = id2; + else if (pt->id == id2) pt->id = id1; + } +} + +static void _edje_parts_id_switch(Edje *ed, Edje_Real_Part *rp1, Edje_Real_Part *rp2) { /* This function switch the id of two parts. @@ -582,8 +608,6 @@ */ int id1; int id2; - Eina_List *l, *ll; - Edje_Program *epr; unsigned int i; //printf("SWITCH ID OF PART %d AND %d\n", rp1->part->id, rp2->part->id); @@ -625,19 +649,15 @@ } //...and also in programs targets - EINA_LIST_FOREACH(ed->collection->programs, l, epr) - { - Edje_Program_Target *pt; +#define EDJE_EDIT_PROGRAM_SWITCH(Array, Ed, It, Id1, Id2) \ + for (It = 0; It < Ed->collection->programs.Array##_count; ++It) \ + _edje_part_program_id_switch(Ed->collection->programs.Array[i], Id1, Id2); - if (epr->action != EDJE_ACTION_TYPE_STATE_SET) - continue; - - EINA_LIST_FOREACH(epr->targets, ll, pt) - { - if (pt->id == id1) pt->id = id2; - else if (pt->id == id2) pt->id = id1; - } - } + EDJE_EDIT_PROGRAM_SWITCH(fnmatch, ed, i, id1, id2); + EDJE_EDIT_PROGRAM_SWITCH(strcmp, ed, i, id1, id2); + EDJE_EDIT_PROGRAM_SWITCH(strncmp, ed, i, id1, id2); + EDJE_EDIT_PROGRAM_SWITCH(strrncmp, ed, i, id1, id2); + EDJE_EDIT_PROGRAM_SWITCH(nocmp, ed, i, id1, id2); //TODO Real part dependencies are ok? } @@ -909,7 +929,7 @@ /* Init Edje_Part_Collection */ pc->id = id; pc->references = 0; - pc->programs = NULL; + memset(&pc->programs, 0, sizeof (pc->programs)); pc->parts = NULL; pc->data = NULL; pc->script = NULL; @@ -4459,10 +4479,14 @@ //Add program to group pc = ed->collection; - pc->programs = eina_list_append(pc->programs, epr); + /* By default, source and signal are empty, so they fill in nocmp category */ + ed->collection->programs.nocmp = realloc(ed->collection->programs.nocmp, + sizeof (Edje_Program*) * ed->collection->programs.nocmp_count); + ed->collection->programs.nocmp[ed->collection->programs.nocmp_count++] = epr; + //Init Edje_Program - epr->id = eina_list_count(pc->programs) - 1; + epr->id = ed->table_programs_size; epr->name = eina_stringshare_add(name); epr->signal = NULL; epr->source = NULL; @@ -4494,10 +4518,96 @@ return EINA_TRUE; } +static void +_edje_edit_program_remove(Edje *ed, Edje_Program *p) +{ + Edje_Program ***array; + unsigned int *count; + unsigned int i; + + if (!p->signal && !p->source) + { + array = &ed->collection->programs.nocmp; + count = &ed->collection->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; + } + 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; + } + 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; + } + else + { + array = &ed->collection->programs.fnmatch; + count = &ed->collection->programs.fnmatch_count; + } + + for (i = 0; i < *count; ++i) + if ((*array)[i] == p) + { + memmove(*array + i, *array + i + 1, sizeof (Edje_Program *) * (*count - i -1)); + (*count)--; + break; + } +} + +static void +_edje_edit_program_insert(Edje *ed, 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; + } + 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; + } + 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; + } + 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; + } + else + { + array = &ed->collection->programs.fnmatch; + count = &ed->collection->programs.fnmatch_count; + } + + *array = realloc(*array, sizeof (Edje_Program *) * (*count + 1)); + *array[(*count)++] = p; +} + EAPI Eina_Bool edje_edit_program_del(Evas_Object *obj, const char *prog) { - Eina_List *l, *l_next, *rem; + Eina_List *l, *l_next; + Edje_Program_Target *prt; + Edje_Program_After *pa; Edje_Part_Collection *pc; Edje_Program *p; int id, i; @@ -4508,25 +4618,20 @@ pc = ed->collection; - rem = eina_list_nth_list(pc->programs, epr->id); - l = eina_list_last(pc->programs); - if (rem != l) + //Remove program from programs list + id = epr->id; + _edje_edit_program_remove(ed, epr); + + /* fix table program */ + if (epr->id != ed->table_programs_size - 1) { /* If the removed program is not the last in the list/table, * put the last one in its place and update references to it later */ - p = eina_list_data_get(l); - pc->programs = eina_list_remove_list(pc->programs, l); - pc->programs = eina_list_append_relative_list(pc->programs, p, rem); - - ed->table_programs[epr->id] = p; - old_id = p->id; - p->id = epr->id; + ed->table_programs[epr->id] = ed->table_programs[ed->table_programs_size - 1]; + old_id = ed->table_programs_size - 1; + ed->table_programs[epr->id]->id = epr->id; } - //Remove program from programs list - id = epr->id; - pc->programs = eina_list_remove(pc->programs, epr); - //Free Edje_Program _edje_if_string_free(ed, epr->name); _edje_if_string_free(ed, epr->signal); @@ -4536,22 +4641,10 @@ _edje_if_string_free(ed, epr->state); _edje_if_string_free(ed, epr->state2); - while (epr->targets) - { - Edje_Program_Target *prt; - - prt = eina_list_data_get(epr->targets); - epr->targets = eina_list_remove_list(epr->targets, epr->targets); - free(prt); - } - while (epr->after) - { - Edje_Program_After *pa; - - pa = eina_list_data_get(epr->after); - epr->after = eina_list_remove_list(epr->after, epr->after); - free(pa); - } + EINA_LIST_FREE(epr->targets, prt) + free(prt); + EINA_LIST_FREE(epr->after, pa) + free(pa); free(epr); ed->table_programs_size--; @@ -4645,15 +4738,17 @@ if (!source) return EINA_FALSE; - //printf("SET SOURCE for program: %s [%s]\n", prog, source); + /* Remove from program array */ + _edje_edit_program_remove(ed, epr); + _edje_if_string_free(ed, epr->source); - _edje_if_string_free(ed, epr->source); + /* Insert it back */ epr->source = eina_stringshare_add(source); + _edje_edit_program_insert(ed, epr); //Update patterns - if (ed->patterns.programs.sources_patterns) - edje_match_patterns_free(ed->patterns.programs.sources_patterns); - ed->patterns.programs.sources_patterns = edje_match_programs_source_init(ed->collection->programs); + _edje_programs_patterns_clean(ed); + _edje_programs_patterns_init(ed); return EINA_TRUE; } @@ -4722,15 +4817,17 @@ if (!signal) return EINA_FALSE; - //printf("SET SIGNAL for program: %s [%s]\n", prog, signal); + /* Remove from program array */ + _edje_edit_program_remove(ed, epr); + _edje_if_string_free(ed, epr->signal); - _edje_if_string_free(ed, epr->signal); + /* Insert it back */ epr->signal = eina_stringshare_add(signal); + _edje_edit_program_insert(ed, epr); //Update patterns - if (ed->patterns.programs.signals_patterns) - edje_match_patterns_free(ed->patterns.programs.signals_patterns); - ed->patterns.programs.signals_patterns = edje_match_programs_signal_init(ed->collection->programs); + _edje_programs_patterns_clean(ed); + _edje_programs_patterns_init(ed); return EINA_TRUE; } @@ -6226,7 +6323,7 @@ } static Eina_Bool -_edje_edit_collection_save(Eet_File *eetf, Edje_Part_Collection *epc) +_edje_edit_collection_save(Edje *ed, Eet_File *eetf, Edje_Part_Collection *epc) { Old_Edje_Part_Description *oepd; Old_Edje_Part_Collection oepc; @@ -6236,13 +6333,15 @@ Edje_Data *di; char buf[256]; unsigned int i; + int j; Eina_Bool err = EINA_TRUE; memset(&oepc, 0, sizeof(oepc)); snprintf(buf, sizeof(buf), "collections/%i", epc->id); - oepc.programs = epc->programs; + for (j = 0; j < ed->table_programs_size; ++j) + oepc.programs = eina_list_append(oepc.programs, ed->table_programs[j]); it = eina_hash_iterator_tuple_new(epc->data); EINA_ITERATOR_FOREACH(it, tu) @@ -6276,6 +6375,7 @@ } // FIXME + oepc.programs = eina_list_free(oepc.programs); EINA_LIST_FREE(oepc.data, di) free(di); EINA_LIST_FREE(oepc.parts, oep) @@ -6405,7 +6505,7 @@ { INF("** Writing Edje_Part_Collection* ed->collection " "[id: %d]", ed->collection->id); - if (!_edje_edit_collection_save(eetf, ed->collection)) + if (!_edje_edit_collection_save(ed, eetf, ed->collection)) { eet_close(eetf); return EINA_FALSE; @@ -6428,7 +6528,7 @@ { INF("** Writing hash Edje_Part_Collection* ed->collection " "[id: %d]", ce->id); - if(!_edje_edit_collection_save(eetf, ce->ref)) + if(!_edje_edit_collection_save(ed, eetf, ce->ref)) { eet_close(eetf); return EINA_FALSE; @@ -6441,7 +6541,7 @@ { INF("** Writing cache Edje_Part_Collection* ed->collection " "[id: %d]", edc->id); - if(!_edje_edit_collection_save(eetf, edc)) + if(!_edje_edit_collection_save(ed, eetf, edc)) { eet_close(eetf); return EINA_FALSE; @@ -6485,8 +6585,8 @@ edje_edit_print_internal_status(Evas_Object *obj) { Edje_Program *epr; - Eina_List *l; unsigned int i; + int j; GET_ED_OR_RETURN(); @@ -6517,18 +6617,16 @@ WRN(" WRONG (table[%id]->name = '%s')", p->id, rp->part->name); } - INF("*** Programs [table:%d list:%d]", ed->table_programs_size, - eina_list_count(ed->collection->programs)); - EINA_LIST_FOREACH(ed->collection->programs, l, epr) + INF("*** Programs [table:%d list:%d,%d,%d,%d,%d]", ed->table_programs_size, + ed->collection->programs.fnmatch_count, + ed->collection->programs.strcmp_count, + ed->collection->programs.strncmp_count, + ed->collection->programs.strrncmp_count, + ed->collection->programs.nocmp_count); + for(j = 0; j < ed->table_programs_size; ++j) { - Edje_Program *epr2; - - epr2 = ed->table_programs[epr->id % ed->table_programs_size]; - printf(" [%d]%s ", epr->id, epr->name); - if (epr == epr2) - printf(" OK!\n"); - else - WRN(" WRONG (table[%id]->name = '%s')", epr->id, epr2->name); + epr = ed->table_programs[i % ed->table_programs_size]; + printf(" [%d]%s\n", epr->id, epr->name); } printf("\n"); Modified: trunk/edje/src/lib/edje_load.c =================================================================== --- trunk/edje/src/lib/edje_load.c 2010-08-04 12:33:58 UTC (rev 50809) +++ trunk/edje/src/lib/edje_load.c 2010-08-04 14:25:40 UTC (rev 50810) @@ -272,22 +272,49 @@ NULL); ed->patterns.programs.exact_match = NULL; - ed->patterns.programs.globing = eina_list_free(ed->patterns.programs.globing); + free(ed->patterns.programs.u.programs.globing); + ed->patterns.programs.u.programs.globing = NULL; } void _edje_programs_patterns_init(Edje *ed) { Edje_Signals_Sources_Patterns *ssp = &ed->patterns.programs; + Edje_Program **all; + unsigned int i, j; if (ssp->signals_patterns) return; - ssp->globing = edje_match_program_hash_build(ed->collection->programs, - &ssp->exact_match); + edje_match_program_hash_build(ed->collection->programs.strcmp, + ed->collection->programs.strcmp_count, + &ssp->exact_match); - ssp->signals_patterns = edje_match_programs_signal_init(ssp->globing); - ssp->sources_patterns = edje_match_programs_source_init(ssp->globing); + j = ed->collection->programs.strncmp_count + + ed->collection->programs.strrncmp_count + + ed->collection->programs.fnmatch_count + + ed->collection->programs.nocmp_count; + if (j == 0) return ; + + all = malloc(sizeof (Edje_Program *) * j); + if (!all) return ; + j = 0; + + /* FIXME: Build specialized data type for each case */ +#define EDJE_LOAD_PROGRAMS_ADD(Array, Ed, It, Git, All) \ + for (It = 0; It < Ed->collection->programs.Array##_count; ++It, ++Git) \ + All[Git] = Ed->collection->programs.Array[It]; + + EDJE_LOAD_PROGRAMS_ADD(fnmatch, ed, i, j, all); + EDJE_LOAD_PROGRAMS_ADD(strncmp, ed, i, j, all); + EDJE_LOAD_PROGRAMS_ADD(strrncmp, ed, i, j, all); + /* FIXME: Do a special pass for that one */ + EDJE_LOAD_PROGRAMS_ADD(nocmp, ed, i, j, all); + + ssp->u.programs.globing = all; + ssp->u.programs.count = j; + ssp->signals_patterns = edje_match_programs_signal_init(all, j); + ssp->sources_patterns = edje_match_programs_source_init(all, j); } int @@ -567,22 +594,34 @@ } _edje_programs_patterns_init(ed); - - n = eina_list_count(ed->collection->programs); + + n = ed->collection->programs.fnmatch_count + + ed->collection->programs.strcmp_count + + ed->collection->programs.strncmp_count + + ed->collection->programs.strrncmp_count + + ed->collection->programs.nocmp_count; if (n > 0) { Edje_Program *pr; - Eina_List *l; + unsigned int i; - /* FIXME: keeping a table AND a list is just bad - nuke list */ ed->table_programs = malloc(sizeof(Edje_Program *) * n); - ed->table_programs_size = n; - /* FIXME: check malloc return */ - n = 0; - EINA_LIST_FOREACH(ed->collection->programs, l, pr) + if (ed->table_programs) { - ed->table_programs[n] = pr; - n++; + ed->table_programs_size = n; + +#define EDJE_LOAD_BUILD_TABLE(Array, Ed, It, Tmp) \ + for (It = 0; It < Ed->collection->programs.Array##_count; ++It) \ + { \ + Tmp = Ed->collection->programs.Array[It]; \ + Ed->table_programs[Tmp->id] = Tmp; \ + } + + EDJE_LOAD_BUILD_TABLE(fnmatch, ed, i, pr); + EDJE_LOAD_BUILD_TABLE(strcmp, ed, i, pr); + EDJE_LOAD_BUILD_TABLE(strncmp, ed, i, pr); + EDJE_LOAD_BUILD_TABLE(strrncmp, ed, i, pr); + EDJE_LOAD_BUILD_TABLE(nocmp, ed, i, pr); } } _edje_ref(ed); @@ -1123,34 +1162,47 @@ _edje_file_set(prev); } +static void +_edje_program_free(Edje_Program *pr, Eina_Bool free_strings) +{ + Edje_Program_Target *prt; + Edje_Program_After *pa; + + if (free_strings) + { + if (pr->name) eina_stringshare_del(pr->name); + if (pr->signal) eina_stringshare_del(pr->signal); + if (pr->source) eina_stringshare_del(pr->source); + if (pr->filter.part) eina_stringshare_del(pr->filter.part); + if (pr->filter.state) eina_stringshare_del(pr->filter.state); + if (pr->state) eina_stringshare_del(pr->state); + if (pr->state2) eina_stringshare_del(pr->state2); + } + EINA_LIST_FREE(pr->targets, prt) + free(prt); + EINA_LIST_FREE(pr->after, pa) + free(pa); + free(pr); +} + void _edje_collection_free(Edje_File *edf, Edje_Part_Collection *ec, Edje_Part_Collection_Directory_Entry *ce) { - Edje_Program *pr; unsigned int i; _edje_embryo_script_shutdown(ec); - EINA_LIST_FREE(ec->programs, pr) - { - Edje_Program_Target *prt; - Edje_Program_After *pa; - if (edf->free_strings) - { - if (pr->name) eina_stringshare_del(pr->name); - if (pr->signal) eina_stringshare_del(pr->signal); - if (pr->source) eina_stringshare_del(pr->source); - if (pr->filter.part) eina_stringshare_del(pr->filter.part); - if (pr->filter.state) eina_stringshare_del(pr->filter.state); - if (pr->state) eina_stringshare_del(pr->state); - if (pr->state2) eina_stringshare_del(pr->state2); - } - EINA_LIST_FREE(pr->targets, prt) - free(prt); - EINA_LIST_FREE(pr->after, pa) - free(pa); - free(pr); - } +#define EDJE_LOAD_PROGRAM_FREE(Array, Ec, It, FreeStrings) \ + for (It = 0; It < Ec->programs.Array##_count; ++It) \ + _edje_program_free(Ec->programs.Array[It], FreeStrings); \ + free(Ec->programs.Array); + + EDJE_LOAD_PROGRAM_FREE(fnmatch, ec, i, edf->free_strings); + EDJE_LOAD_PROGRAM_FREE(strcmp, ec, i, edf->free_strings); + EDJE_LOAD_PROGRAM_FREE(strncmp, ec, i, edf->free_strings); + EDJE_LOAD_PROGRAM_FREE(strrncmp, ec, i, edf->free_strings); + EDJE_LOAD_PROGRAM_FREE(nocmp, ec, i, edf->free_strings); + for (i = 0; i < ec->parts_count; ++i) { Edje_Part *ep; Modified: trunk/edje/src/lib/edje_match.c =================================================================== --- trunk/edje/src/lib/edje_match.c 2010-08-04 12:33:58 UTC (rev 50809) +++ trunk/edje/src/lib/edje_match.c 2010-08-04 14:25:40 UTC (rev 50810) @@ -250,9 +250,9 @@ /* Exported function. */ -#define EDJE_MATCH_INIT(Func, Type, Source, Show) \ +#define EDJE_MATCH_INIT_LIST(Func, Type, Source, Show) \ Edje_Patterns* \ - Func(Eina_List *lst) \ + Func(const Eina_List *lst) \ { \ Edje_Patterns *r; \ size_t i; \ @@ -312,22 +312,80 @@ return r; \ } -EDJE_MATCH_INIT(edje_match_collection_dir_init, - Edje_Part_Collection_Directory_Entry, - entry, 0); -EDJE_MATCH_INIT(edje_match_programs_signal_init, - Edje_Program, - signal, 0); -EDJE_MATCH_INIT(edje_match_programs_source_init, - Edje_Program, - source, 0); -EDJE_MATCH_INIT(edje_match_callback_signal_init, - Edje_Signal_Callback, - signal, 0); -EDJE_MATCH_INIT(edje_match_callback_source_init, - Edje_Signal_Callback, - source, 0); +#define EDJE_MATCH_INIT_ARRAY(Func, Type, Source, Show) \ + Edje_Patterns* \ + Func(Type * const *lst, unsigned int count) \ + { \ + Edje_Patterns *r; \ + size_t i; \ + \ + if (!lst || count == 0) \ + return NULL; \ + \ + r = malloc(sizeof (Edje_Patterns) + \ + count \ + * sizeof(*r->finals) \ + * sizeof(*r->patterns)); \ + if (!r) return NULL; \ + \ + r->ref = 1; \ + r->delete_me = 0; \ + r->patterns_size = count; \ + r->max_length = 0; \ + r->patterns = (const char **) r->finals + r->patterns_size + 1; \ + \ + for (i = 0; i < count; ++i) \ + { \ + const char *str; \ + size_t j; \ + \ + if (!lst[i]) \ + { \ + free(r); \ + return NULL; \ + } \ + \ + str = lst[i]->Source; \ + if (!str) str = ""; \ + r->patterns[i] = str; \ + \ + if (Show) \ + INF("%lu [%s]", (unsigned long)i, str); \ + \ + r->finals[i] = 0; \ + for (j = 0; str[j]; ++j) \ + if (str[j] != '*') \ + r->finals[i] = j + 1; \ + \ + if (j > r->max_length) \ + r->max_length = j; \ + } \ + \ + if (!_edje_match_states_alloc(r, 2)) \ + { \ + free(r); \ + return NULL; \ + } \ + \ + return r; \ + } +EDJE_MATCH_INIT_LIST(edje_match_collection_dir_init, + Edje_Part_Collection_Directory_Entry, + entry, 0); +EDJE_MATCH_INIT_ARRAY(edje_match_programs_signal_init, + Edje_Program, + signal, 0); +EDJE_MATCH_INIT_ARRAY(edje_match_programs_source_init, + Edje_Program, + source, 0); +EDJE_MATCH_INIT_LIST(edje_match_callback_signal_init, + Edje_Signal_Callback, + signal, 0); +EDJE_MATCH_INIT_LIST(edje_match_callback_source_init, + Edje_Signal_Callback, + source, 0); + static Eina_Bool _edje_match_collection_dir_exec_finals(const size_t *finals, const Edje_States *states) @@ -345,7 +403,7 @@ const size_t *source_finals, const Edje_States *signal_states, const Edje_States *source_states, - Eina_List *programs, + Edje_Program **programs, Eina_Bool (*func)(Edje_Program *pr, void *data), void *data) { @@ -360,7 +418,7 @@ { Edje_Program *pr; - pr = eina_list_nth(programs, signal_states->states[i].idx); + pr = programs[signal_states->states[i].idx]; if (pr) { if (func(pr, data)) @@ -487,7 +545,7 @@ const Edje_Patterns *ppat_source, const char *signal, const char *source, - Eina_List *programs, + Edje_Program **programs, Eina_Bool (*func)(Edje_Program *pr, void *data), void *data) { @@ -609,40 +667,40 @@ Eina_List * -edje_match_program_hash_build(const Eina_List *callbacks, +edje_match_program_hash_build(Edje_Program * const *programs, + unsigned int count, Eina_Rbtree **tree) { Eina_List *result = NULL; Eina_Rbtree *new = NULL; - Edje_Program *program; - const Eina_List *l; + unsigned int i; - EINA_LIST_FOREACH(callbacks, l, program) + for (i = 0; i < count; ++i) { - if (program->signal && strpbrk(program->signal, "*?[\\") == NULL - && program->source && strpbrk(program->source, "*?[\\") == NULL) + if (programs[i]->signal && strpbrk(programs[i]->signal, "*?[\\") == NULL + && programs[i]->source && strpbrk(programs[i]->source, "*?[\\") == NULL) { Edje_Signal_Source_Char *item; - item = (Edje_Signal_Source_Char*) eina_rbtree_inline_lookup(new, program->signal, 0, - EINA_RBTREE_CMP_KEY_CB(_edje_signal_source_key_cmp), program->source); + item = (Edje_Signal_Source_Char*) eina_rbtree_inline_lookup(new, programs[i]->signal, 0, + EINA_RBTREE_CMP_KEY_CB(_edje_signal_source_key_cmp), programs[i]->source); if (!item) { item = malloc(sizeof (Edje_Signal_Source_Char)); if (!item) continue; - item->signal = program->signal; - item->source = program->source; + item->signal = programs[i]->signal; + item->source = programs[i]->source; item->list = NULL; new = eina_rbtree_inline_insert(new, EINA_RBTREE_GET(item), EINA_RBTREE_CMP_NODE_CB(_edje_signal_source_node_cmp), NULL); } - item->list = eina_list_prepend(item->list, program); + item->list = eina_list_prepend(item->list, programs[i]); } else - result = eina_list_prepend(result, program); + result = eina_list_prepend(result, programs[i]); } *tree = new; Modified: trunk/edje/src/lib/edje_private.h =================================================================== --- trunk/edje/src/lib/edje_private.h 2010-08-04 12:33:58 UTC (rev 50809) +++ trunk/edje/src/lib/edje_private.h 2010-08-04 14:25:40 UTC (rev 50810) @@ -568,8 +568,23 @@ struct _Edje_Part_Collection { - Eina_List *programs; /* a list of Edje_Program *//* FIXME: use multiple array */ + struct { /* list of Edje_Program */ + Edje_Program **fnmatch; /* complex match with "*?[\" */ + unsigned int fnmatch_count; + Edje_Program **strcmp; /* No special caractere, plain strcmp does the work */ + unsigned int strcmp_count; + + Edje_Program **strncmp; /* Finish by * or ?, plain strncmp does the work */ + unsigned int strncmp_count; + + Edje_Program **strrncmp; /* Start with * or ?, reverse strncmp will do the job */ + unsigned int strrncmp_count; + + Edje_Program **nocmp; /* Empty signal/source that will never match */ + unsigned int nocmp_count; + } programs; + Edje_Part **parts; /* an array of Edje_Part */ unsigned int parts_count; @@ -859,12 +874,22 @@ }; struct _Edje_Signals_Sources_Patterns + { Edje_Patterns *signals_patterns; Edje_Patterns *sources_patterns; Eina_Rbtree *exact_match; - Eina_List *globing; + + union { + struct { + Edje_Program **globing; + unsigned int count; + } programs; + struct { + Eina_List *globing; + } callbacks; + } u; }; typedef struct _Edje_Signals_Sources_Patterns Edje_Signals_Sources_Patterns; @@ -1284,11 +1309,13 @@ size_t finals[]; }; -Edje_Patterns *edje_match_collection_dir_init(Eina_List *lst); -Edje_Patterns *edje_match_programs_signal_init(Eina_List *lst); -Edje_Patterns *edje_match_programs_source_init(Eina_List *lst); -Edje_Patterns *edje_match_callback_signal_init(Eina_List *lst); -Edje_Patterns *edje_match_callback_source_init(Eina_List *lst); +Edje_Patterns *edje_match_collection_dir_init(const Eina_List *lst); +Edje_Patterns *edje_match_programs_signal_init(Edje_Program * const *array, + unsigned int count); +Edje_Patterns *edje_match_programs_source_init(Edje_Program * const *array, + unsigned int count); +Edje_Patterns *edje_match_callback_signal_init(const Eina_List *lst); +Edje_Patterns *edje_match_callback_source_init(const Eina_List *lst); Eina_Bool edje_match_collection_dir_exec(const Edje_Patterns *ppat, const char *string); @@ -1296,7 +1323,7 @@ const Edje_Patterns *ppat_source, const char *signal, const char *source, - Eina_List *programs, + Edje_Program **programs, Eina_Bool (*func)(Edje_Program *pr, void *data), void *data); int edje_match_callback_exec(Edje_Patterns *ppat_signal, @@ -1308,7 +1335,8 @@ void edje_match_patterns_free(Edje_Patterns *ppat); -Eina_List *edje_match_program_hash_build(const Eina_List *callbacks, +Eina_List *edje_match_program_hash_build(Edje_Program * const * programs, + unsigned int count, Eina_Rbtree **tree); Eina_List *edje_match_callback_hash_build(const Eina_List *callbacks, Eina_Rbtree **tree); Modified: trunk/edje/src/lib/edje_program.c =================================================================== --- trunk/edje/src/lib/edje_program.c 2010-08-04 12:33:58 UTC (rev 50809) +++ trunk/edje/src/lib/edje_program.c 2010-08-04 14:25:40 UTC (rev 50810) @@ -1169,7 +1169,7 @@ NULL); ed->patterns.callbacks.exact_match = NULL; - ed->patterns.callbacks.globing = eina_list_free(ed->patterns.callbacks.globing); + ed->patterns.callbacks.u.callbacks.globing = eina_list_free(ed->patterns.callbacks.u.callbacks.globing); } static void @@ -1178,14 +1178,14 @@ Edje_Signals_Sources_Patterns *ssp = &ed->patterns.callbacks; if ((ssp->signals_patterns) || (ssp->sources_patterns) || - (ssp->globing) || (ssp->exact_match)) + (ssp->u.callbacks.globing) || (ssp->exact_match)) return; - ssp->globing = edje_match_callback_hash_build(ed->callbacks, - &ssp->exact_match); + ssp->u.callbacks.globing = edje_match_callback_hash_build(ed->callbacks, + &ssp->exact_match); - ssp->signals_patterns = edje_match_callback_signal_init(ssp->globing); - ssp->sources_patterns = edje_match_callback_source_init(ssp->globing); + ssp->signals_patterns = edje_match_callback_signal_init(ssp->u.callbacks.globing); + ssp->sources_patterns = edje_match_callback_source_init(ssp->u.callbacks.globing); } /* FIXME: what if we delete the evas object??? */ @@ -1258,18 +1258,18 @@ data.matched = 0; data.matches = NULL; #endif - if (ed->collection->programs) + if (ed->table_programs_size > 0) { const Eina_List *match; const Eina_List *l; Edje_Program *pr; - if (ed->patterns.programs.globing) + if (ed->patterns.programs.u.programs.globing) if (edje_match_programs_exec(ed->patterns.programs.signals_patterns, ed->patterns.programs.sources_patterns, sig, src, - ed->patterns.programs.globing, + ed->patterns.programs.u.programs.globing, _edje_glob_callback, &data) == 0) goto break_prog; @@ -1334,12 +1334,12 @@ int r = 1; _edje_callbacks_patterns_init(ed); - if (ed->patterns.callbacks.globing) + if (ed->patterns.callbacks.u.callbacks.globing) r = edje_match_callback_exec(ed->patterns.callbacks.signals_patterns, ed->patterns.callbacks.sources_patterns, sig, src, - ed->patterns.callbacks.globing, + ed->patterns.callbacks.u.callbacks.globing, ed); if (!r) |
From: Enlightenment S. <no-...@en...> - 2010-08-05 10:00:22
|
Log: * edje: fix edje image generation. Author: cedric Date: 2010-08-05 03:00:16 -0700 (Thu, 05 Aug 2010) New Revision: 50832 Modified: trunk/edje/src/lib/edje_convert.c Modified: trunk/edje/src/lib/edje_convert.c =================================================================== --- trunk/edje/src/lib/edje_convert.c 2010-08-05 09:40:50 UTC (rev 50831) +++ trunk/edje/src/lib/edje_convert.c 2010-08-05 10:00:16 UTC (rev 50832) @@ -480,7 +480,7 @@ img->image.tweens_count = eina_list_count(oed->image.tween_list); img->image.tweens = calloc(img->image.tweens_count, sizeof (Edje_Part_Image_Id*)); - if (!img->image.tweens) + if (img->image.tweens_count > 0 && !img->image.tweens) { eina_mempool_free(ce->mp.IMAGE, img); return NULL; |
From: Enlightenment S. <no-...@en...> - 2010-08-06 08:59:59
|
Log: * edje: typo. Author: cedric Date: 2010-08-06 01:59:51 -0700 (Fri, 06 Aug 2010) New Revision: 50857 Modified: trunk/edje/src/lib/edje_edit.c Modified: trunk/edje/src/lib/edje_edit.c =================================================================== --- trunk/edje/src/lib/edje_edit.c 2010-08-06 07:01:30 UTC (rev 50856) +++ trunk/edje/src/lib/edje_edit.c 2010-08-06 08:59:51 UTC (rev 50857) @@ -4478,7 +4478,7 @@ /* By default, source and signal are empty, so they fill in nocmp category */ ed->collection->programs.nocmp = realloc(ed->collection->programs.nocmp, - sizeof (Edje_Program*) * ed->collection->programs.nocmp_count + 1); + sizeof (Edje_Program*) * (ed->collection->programs.nocmp_count + 1)); ed->collection->programs.nocmp[ed->collection->programs.nocmp_count++] = epr; //Init Edje_Program |
From: Enlightenment S. <no-...@en...> - 2010-08-06 11:07:55
|
Log: * edje: move code around. Author: cedric Date: 2010-08-06 04:07:47 -0700 (Fri, 06 Aug 2010) New Revision: 50858 Modified: trunk/edje/src/lib/edje_convert.c trunk/edje/src/lib/edje_convert.h trunk/edje/src/lib/edje_edit.c trunk/edje/src/lib/edje_private.h trunk/edje/src/lib/edje_util.c Modified: trunk/edje/src/lib/edje_convert.c =================================================================== --- trunk/edje/src/lib/edje_convert.c 2010-08-06 08:59:51 UTC (rev 50857) +++ trunk/edje/src/lib/edje_convert.c 2010-08-06 11:07:47 UTC (rev 50858) @@ -251,31 +251,6 @@ *array = tmp; } -Eina_Bool -edje_program_is_strncmp(const char *str) -{ - unsigned int length; - - length = strlen(str); - - if (strpbrk(str, "*?[\\") != str + length) - return EINA_FALSE; - if (str[length] == '[' - || str[length] == '\\') - return EINA_FALSE; - return EINA_TRUE; -} - -Eina_Bool -edje_program_is_strrncmp(const char *str) -{ - if (*str != '*' && *str != '?') - return EINA_FALSE; - if (strpbrk(str + 1, "*?[\\") != NULL) - return EINA_FALSE; - return EINA_TRUE; -} - Edje_Part_Collection * _edje_collection_convert(Edje_File *file, Old_Edje_Part_Collection *oedc) { Modified: trunk/edje/src/lib/edje_convert.h =================================================================== --- trunk/edje/src/lib/edje_convert.h 2010-08-06 08:59:51 UTC (rev 50857) +++ trunk/edje/src/lib/edje_convert.h 2010-08-06 11:07:47 UTC (rev 50858) @@ -140,7 +140,4 @@ const Edje_File *_edje_file_get(void); void _edje_file_set(const Edje_File *edf); -Eina_Bool edje_program_is_strncmp(const char *str); -Eina_Bool edje_program_is_strrncmp(const char *str); - #endif Modified: trunk/edje/src/lib/edje_edit.c =================================================================== --- trunk/edje/src/lib/edje_edit.c 2010-08-06 08:59:51 UTC (rev 50857) +++ trunk/edje/src/lib/edje_edit.c 2010-08-06 11:07:47 UTC (rev 50858) @@ -4514,91 +4514,6 @@ return EINA_TRUE; } -static void -_edje_edit_program_remove(Edje *ed, Edje_Program *p) -{ - Edje_Program ***array; - unsigned int *count; - unsigned int i; - - if (!p->signal && !p->source) - { - array = &ed->collection->programs.nocmp; - count = &ed->collection->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; - } - 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; - } - 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; - } - else - { - array = &ed->collection->programs.fnmatch; - count = &ed->collection->programs.fnmatch_count; - } - - for (i = 0; i < *count; ++i) - if ((*array)[i] == p) - { - memmove(*array + i, *array + i + 1, sizeof (Edje_Program *) * (*count - i -1)); - (*count)--; - break; - } -} - -static void -_edje_edit_program_insert(Edje *ed, 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; - } - 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; - } - 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; - } - 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; - } - else - { - array = &ed->collection->programs.fnmatch; - count = &ed->collection->programs.fnmatch_count; - } - - *array = realloc(*array, sizeof (Edje_Program *) * (*count + 1)); - (*array)[(*count)++] = p; - -} - EAPI Eina_Bool edje_edit_program_del(Evas_Object *obj, const char *prog) { @@ -4617,7 +4532,7 @@ //Remove program from programs list id = epr->id; - _edje_edit_program_remove(ed, epr); + edje_edit_program_remove(ed, epr); /* fix table program */ if (epr->id != ed->table_programs_size - 1) @@ -4736,12 +4651,12 @@ if (!source) return EINA_FALSE; /* Remove from program array */ - _edje_edit_program_remove(ed, epr); + edje_edit_program_remove(ed, epr); _edje_if_string_free(ed, epr->source); /* Insert it back */ epr->source = eina_stringshare_add(source); - _edje_edit_program_insert(ed, epr); + edje_edit_program_insert(ed, epr); //Update patterns _edje_programs_patterns_clean(ed); @@ -4815,12 +4730,12 @@ if (!signal) return EINA_FALSE; /* Remove from program array */ - _edje_edit_program_remove(ed, epr); + edje_edit_program_remove(ed, epr); _edje_if_string_free(ed, epr->signal); /* Insert it back */ epr->signal = eina_stringshare_add(signal); - _edje_edit_program_insert(ed, epr); + edje_edit_program_insert(ed, epr); //Update patterns _edje_programs_patterns_clean(ed); Modified: trunk/edje/src/lib/edje_private.h =================================================================== --- trunk/edje/src/lib/edje_private.h 2010-08-06 08:59:51 UTC (rev 50857) +++ trunk/edje/src/lib/edje_private.h 2010-08-06 11:07:47 UTC (rev 50858) @@ -1731,12 +1731,11 @@ void _edje_module_init(); void _edje_module_shutdown(); +Eina_Bool edje_program_is_strncmp(const char *str); +Eina_Bool edje_program_is_strrncmp(const char *str); +void edje_edit_program_insert(Edje *ed, Edje_Program *p); +void edje_edit_program_remove(Edje *ed, Edje_Program *p); - - - - - // new lua stuff - supercedes the old #define LUA2 1 Modified: trunk/edje/src/lib/edje_util.c =================================================================== --- trunk/edje/src/lib/edje_util.c 2010-08-06 08:59:51 UTC (rev 50857) +++ trunk/edje/src/lib/edje_util.c 2010-08-06 11:07:47 UTC (rev 50858) @@ -4824,3 +4824,112 @@ edje_object_signal_callback_del(obj, EDJE_PRELOAD_EMISSION, EDJE_PRELOAD_SOURCE, _edje_object_signal_preload_cb); _edje_object_preload(ed); } + +void +edje_edit_program_remove(Edje *ed, Edje_Program *p) +{ + Edje_Program ***array; + unsigned int *count; + unsigned int i; + + if (!p->signal && !p->source) + { + array = &ed->collection->programs.nocmp; + count = &ed->collection->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; + } + 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; + } + 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; + } + else + { + array = &ed->collection->programs.fnmatch; + count = &ed->collection->programs.fnmatch_count; + } + + for (i = 0; i < *count; ++i) + if ((*array)[i] == p) + { + memmove(*array + i, *array + i + 1, sizeof (Edje_Program *) * (*count - i -1)); + (*count)--; + break; + } +} + +void +edje_edit_program_insert(Edje *ed, 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; + } + 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; + } + 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; + } + 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; + } + else + { + array = &ed->collection->programs.fnmatch; + count = &ed->collection->programs.fnmatch_count; + } + + *array = realloc(*array, sizeof (Edje_Program *) * (*count + 1)); + (*array)[(*count)++] = p; +} + +Eina_Bool +edje_program_is_strncmp(const char *str) +{ + unsigned int length; + + length = strlen(str); + + if (strpbrk(str, "*?[\\") != str + length) + return EINA_FALSE; + if (str[length] == '[' + || str[length] == '\\') + return EINA_FALSE; + return EINA_TRUE; +} + +Eina_Bool +edje_program_is_strrncmp(const char *str) +{ + if (*str != '*' && *str != '?') + return EINA_FALSE; + if (strpbrk(str + 1, "*?[\\") != NULL) + return EINA_FALSE; + return EINA_TRUE; +} |
From: Enlightenment S. <no-...@en...> - 2010-08-09 21:08:18
|
Log: * edje: use mempool for Edje_Part and Edje_Part_Description_*. Author: cedric Date: 2010-08-09 14:08:08 -0700 (Mon, 09 Aug 2010) New Revision: 50944 Modified: trunk/edje/src/lib/edje_cache.c trunk/edje/src/lib/edje_data.c trunk/edje/src/lib/edje_load.c trunk/edje/src/lib/edje_private.h Modified: trunk/edje/src/lib/edje_cache.c =================================================================== --- trunk/edje/src/lib/edje_cache.c 2010-08-09 19:43:34 UTC (rev 50943) +++ trunk/edje/src/lib/edje_cache.c 2010-08-09 21:08:08 UTC (rev 50944) @@ -89,11 +89,27 @@ id = ce->id; if (id < 0) return NULL; +#define INIT_EMP(Tp, Sz, Ce) \ + Ce->mp.Tp = eina_mempool_add("one_big", #Tp, NULL, sizeof (Sz), Ce->count.Tp); \ + _emp_##Tp = Ce->mp.Tp; + + INIT_EMP(RECTANGLE, Edje_Part_Description_Common, ce); + INIT_EMP(TEXT, Edje_Part_Description_Text, ce); + INIT_EMP(IMAGE, Edje_Part_Description_Image, ce); + INIT_EMP(SWALLOW, Edje_Part_Description_Common, ce); + INIT_EMP(TEXTBLOCK, Edje_Part_Description_Text, ce); + INIT_EMP(GROUP, Edje_Part_Description_Common, ce); + INIT_EMP(BOX, Edje_Part_Description_Box, ce); + INIT_EMP(TABLE, Edje_Part_Description_Table, ce); + INIT_EMP(EXTERNAL, Edje_Part_Description_External, ce); + INIT_EMP(part, Edje_Part, ce); + snprintf(buf, sizeof(buf), "edje/collections/%i", id); edc = eet_data_read(edf->ef, _edje_edd_edje_part_collection, buf); if (!edc) return NULL; edc->references = 1; + edc->part = ce->entry; snprintf(buf, sizeof(buf), "edje/scripts/embryo/compiled/%i", id); data = eet_read(edf->ef, buf, &size); @@ -131,6 +147,8 @@ free(data); } + ce->ref = edc; + return edc; } @@ -386,10 +404,8 @@ void _edje_cache_coll_clean(Edje_File *edf) { - int count; - - count = eina_list_count(edf->collection_cache); - while ((edf->collection_cache) && (count > _edje_collection_cache_size)) + while ((edf->collection_cache) && + (eina_list_count(edf->collection_cache) > (unsigned int) _edje_collection_cache_size)) { Edje_Part_Collection_Directory_Entry *ce; Edje_Part_Collection *edc; @@ -399,8 +415,6 @@ ce = eina_hash_find(edf->collection, edc->part); _edje_collection_free(edf, edc, ce); - - count = eina_list_count(edf->collection_cache); } } @@ -411,9 +425,12 @@ { Edje_Part_Collection_Directory_Entry *ce; Edje_Part_Collection *edc; + Eina_List *last; - edc = eina_list_data_get(eina_list_last(edf->collection_cache)); - edf->collection_cache = eina_list_remove_list(edf->collection_cache, eina_list_last(edf->collection_cache)); + last = eina_list_last(edf->collection_cache); + edc = eina_list_data_get(last); + edf->collection_cache = eina_list_remove_list(edf->collection_cache, + last); ce = eina_hash_find(edf->collection, edc->part); _edje_collection_free(edf, edc, ce); @@ -430,9 +447,16 @@ ce = eina_hash_find(edf->collection, edc->part); - ce->ref = NULL; - edf->collection_cache = eina_list_prepend(edf->collection_cache, edc); - _edje_cache_coll_clean(edf); + if (ce->ref) + { + ce->ref = NULL; + edf->collection_cache = eina_list_prepend(edf->collection_cache, edc); + _edje_cache_coll_clean(edf); + } + else + { + ERR("Something is wrong with reference count of '%s'.", edc->part); + } } static void Modified: trunk/edje/src/lib/edje_data.c =================================================================== --- trunk/edje/src/lib/edje_data.c 2010-08-09 19:43:34 UTC (rev 50943) +++ trunk/edje/src/lib/edje_data.c 2010-08-09 21:08:08 UTC (rev 50944) @@ -21,16 +21,22 @@ EAPI Eet_Data_Descriptor *_edje_edd_edje_part = NULL; EAPI Eet_Data_Descriptor *_edje_edd_edje_part_pointer = NULL; EAPI Eet_Data_Descriptor *_edje_edd_edje_part_description_variant = NULL; -EAPI Eet_Data_Descriptor *_edje_edd_edje_part_description_common = NULL; +EAPI Eet_Data_Descriptor *_edje_edd_edje_part_description_rectangle = NULL; +EAPI Eet_Data_Descriptor *_edje_edd_edje_part_description_swallow = NULL; +EAPI Eet_Data_Descriptor *_edje_edd_edje_part_description_group = NULL; EAPI Eet_Data_Descriptor *_edje_edd_edje_part_description_image = NULL; EAPI Eet_Data_Descriptor *_edje_edd_edje_part_description_text = NULL; +EAPI Eet_Data_Descriptor *_edje_edd_edje_part_description_textblock = NULL; EAPI Eet_Data_Descriptor *_edje_edd_edje_part_description_box = NULL; EAPI Eet_Data_Descriptor *_edje_edd_edje_part_description_table = NULL; EAPI Eet_Data_Descriptor *_edje_edd_edje_part_description_external = NULL; EAPI Eet_Data_Descriptor *_edje_edd_edje_part_description_variant_list = NULL; -EAPI Eet_Data_Descriptor *_edje_edd_edje_part_description_common_pointer = NULL; +EAPI Eet_Data_Descriptor *_edje_edd_edje_part_description_rectangle_pointer = NULL; +EAPI Eet_Data_Descriptor *_edje_edd_edje_part_description_swallow_pointer = NULL; +EAPI Eet_Data_Descriptor *_edje_edd_edje_part_description_group_pointer = NULL; EAPI Eet_Data_Descriptor *_edje_edd_edje_part_description_image_pointer = NULL; EAPI Eet_Data_Descriptor *_edje_edd_edje_part_description_text_pointer = NULL; +EAPI Eet_Data_Descriptor *_edje_edd_edje_part_description_textblock_pointer = NULL; EAPI Eet_Data_Descriptor *_edje_edd_edje_part_description_box_pointer = NULL; EAPI Eet_Data_Descriptor *_edje_edd_edje_part_description_table_pointer = NULL; EAPI Eet_Data_Descriptor *_edje_edd_edje_part_description_external_pointer = NULL; @@ -38,6 +44,37 @@ EAPI Eet_Data_Descriptor *_edje_edd_edje_part_image_id_pointer = NULL; EAPI Eet_Data_Descriptor *_edje_edd_edje_external_param = NULL; +#define EMP(Type, Minus) \ + Eina_Mempool *_emp_##Type = NULL; \ + \ + static void * \ + mem_alloc_##Minus(size_t size) \ + { \ + void *data; \ + \ + data = eina_mempool_malloc(_emp_##Type, size); \ + memset(data, 0, size); \ + \ + return data; \ + } \ + \ + static void \ + mem_free_##Minus(void *data) \ + { \ + eina_mempool_free(_emp_##Type, data); \ + } + +EMP(RECTANGLE, rectangle); +EMP(TEXT, text); +EMP(IMAGE, image); +EMP(SWALLOW, swallow); +EMP(TEXTBLOCK, textblock); +EMP(GROUP, group); +EMP(BOX, box); +EMP(TABLE, table); +EMP(EXTERNAL, external); +EMP(part, part); + #define FREED(eed) \ if (eed) \ { \ @@ -115,16 +152,22 @@ FREED(_edje_edd_edje_part); FREED(_edje_edd_edje_part_pointer); FREED(_edje_edd_edje_part_description_variant); - FREED(_edje_edd_edje_part_description_common); + FREED(_edje_edd_edje_part_description_rectangle); + FREED(_edje_edd_edje_part_description_swallow); + FREED(_edje_edd_edje_part_description_group); FREED(_edje_edd_edje_part_description_image); FREED(_edje_edd_edje_part_description_text); + FREED(_edje_edd_edje_part_description_textblock); FREED(_edje_edd_edje_part_description_box); FREED(_edje_edd_edje_part_description_table); FREED(_edje_edd_edje_part_description_external); FREED(_edje_edd_edje_part_description_variant_list); - FREED(_edje_edd_edje_part_description_common_pointer); + FREED(_edje_edd_edje_part_description_rectangle_pointer); + FREED(_edje_edd_edje_part_description_swallow_pointer); + FREED(_edje_edd_edje_part_description_group_pointer); FREED(_edje_edd_edje_part_description_image_pointer); FREED(_edje_edd_edje_part_description_text_pointer); + FREED(_edje_edd_edje_part_description_textblock_pointer); FREED(_edje_edd_edje_part_description_box_pointer); FREED(_edje_edd_edje_part_description_table_pointer); FREED(_edje_edd_edje_part_description_external_pointer); @@ -318,8 +361,62 @@ EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_external_param, Edje_External_Param, "d", d, EET_T_DOUBLE); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_external_param, Edje_External_Param, "s", s, EET_T_STRING); -#define EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON(Edd, Type, Dec) \ +#define EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON(Edd, Type) \ { \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "state.name", state.name, EET_T_STRING); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "state.value", state.value, EET_T_DOUBLE); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "visible", visible, EET_T_CHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "align.x", align.x, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "align.y", align.y, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "fixed.w", fixed.w, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "fixed.h", fixed.h, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "min.w", min.w, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "min.h", min.h, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "max.w", max.w, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "max.h", max.h, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "step.x", step.x, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "step.y", step.y, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "aspect.min", aspect.min, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "aspect.max", aspect.max, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "aspect.prefer", aspect.prefer, EET_T_CHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel1.relative_x", rel1.relative_x, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel1.relative_y", rel1.relative_y, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel1.offset_x", rel1.offset_x, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel1.offset_y", rel1.offset_y, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel1.id_x", rel1.id_x, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel1.id_y", rel1.id_y, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel2.relative_x", rel2.relative_x, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel2.relative_y", rel2.relative_y, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel2.offset_x", rel2.offset_x, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel2.offset_y", rel2.offset_y, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel2.id_x", rel2.id_x, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel2.id_y", rel2.id_y, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color_class", color_class, EET_T_STRING); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color.r", color.r, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color.g", color.g, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color.b", color.b, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color.a", color.a, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color2.r", color2.r, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color2.g", color2.g, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color2.b", color2.b, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color2.a", color2.a, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.id_persp", map.id_persp, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.id_light", map.id_light, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.rot.id_center", map.rot.id_center, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.rot.x", map.rot.x, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.rot.y", map.rot.y, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.rot.z", map.rot.z, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.on", map.on, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.smooth", map.smooth, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.alpha", map.alpha, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.persp_on", map.persp_on, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.backcull", map.backcull, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "persp.zplane", persp.zplane, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "persp.focal", persp.focal, EET_T_INT); \ + } + +#define EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON_SUB(Edd, Type, Dec) \ + { \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "state.name", Dec.state.name, EET_T_STRING); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "state.value", Dec.state.value, EET_T_DOUBLE); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "visible", Dec.visible, EET_T_CHAR); \ @@ -373,63 +470,32 @@ } EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Description_Common); - _edje_edd_edje_part_description_common = + eddc.func.mem_free = mem_free_rectangle; + eddc.func.mem_alloc = mem_alloc_rectangle; + _edje_edd_edje_part_description_rectangle = eet_data_descriptor_file_new(&eddc); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "state.name", state.name, EET_T_STRING); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "state.value", state.value, EET_T_DOUBLE); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "visible", visible, EET_T_CHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "align.x", align.x, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "align.y", align.y, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "fixed.w", fixed.w, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "fixed.h", fixed.h, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "min.w", min.w, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "min.h", min.h, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "max.w", max.w, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "max.h", max.h, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "step.x", step.x, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "step.y", step.y, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "aspect.min", aspect.min, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "aspect.max", aspect.max, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "aspect.prefer", aspect.prefer, EET_T_CHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "rel1.relative_x", rel1.relative_x, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "rel1.relative_y", rel1.relative_y, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "rel1.offset_x", rel1.offset_x, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "rel1.offset_y", rel1.offset_y, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "rel1.id_x", rel1.id_x, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "rel1.id_y", rel1.id_y, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "rel2.relative_x", rel2.relative_x, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "rel2.relative_y", rel2.relative_y, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "rel2.offset_x", rel2.offset_x, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "rel2.offset_y", rel2.offset_y, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "rel2.id_x", rel2.id_x, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "rel2.id_y", rel2.id_y, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "color_class", color_class, EET_T_STRING); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "color.r", color.r, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "color.g", color.g, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "color.b", color.b, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "color.a", color.a, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "color2.r", color2.r, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "color2.g", color2.g, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "color2.b", color2.b, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "color2.a", color2.a, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "map.id_persp", map.id_persp, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "map.id_light", map.id_light, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "map.rot.id_center", map.rot.id_center, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "map.rot.x", map.rot.x, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "map.rot.y", map.rot.y, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "map.rot.z", map.rot.z, EDJE_T_FLOAT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "map.on", map.on, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "map.smooth", map.smooth, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "map.alpha", map.alpha, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "map.persp_on", map.persp_on, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "map.backcull", map.backcull, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "persp.zplane", persp.zplane, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_common, Edje_Part_Description_Common, "persp.focal", persp.focal, EET_T_INT); + EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON(_edje_edd_edje_part_description_rectangle, Edje_Part_Description_Common); + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Description_Common); + eddc.func.mem_free = mem_free_swallow; + eddc.func.mem_alloc = mem_alloc_swallow; + _edje_edd_edje_part_description_swallow = + eet_data_descriptor_file_new(&eddc); + EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON(_edje_edd_edje_part_description_swallow, Edje_Part_Description_Common); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Description_Common); + eddc.func.mem_free = mem_free_group; + eddc.func.mem_alloc = mem_alloc_group; + _edje_edd_edje_part_description_group = + eet_data_descriptor_file_new(&eddc); + EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON(_edje_edd_edje_part_description_group, Edje_Part_Description_Common); + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Description_Image); + eddc.func.mem_free = mem_free_image; + eddc.func.mem_alloc = mem_alloc_image; _edje_edd_edje_part_description_image = eet_data_descriptor_file_new(&eddc); - EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON(_edje_edd_edje_part_description_image, Edje_Part_Description_Image, common); + EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON_SUB(_edje_edd_edje_part_description_image, Edje_Part_Description_Image, common); EDJE_DEFINE_POINTER_TYPE(Part_Image_Id, part_image_id); EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(_edje_edd_edje_part_description_image, Edje_Part_Description_Image, "image.tweens", image.tweens, _edje_edd_edje_part_image_id_pointer); @@ -456,9 +522,11 @@ EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_image, Edje_Part_Description_Image, "image.fill.type", image.fill.type, EET_T_CHAR); EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Description_Text); + eddc.func.mem_free = mem_free_text; + eddc.func.mem_alloc = mem_alloc_text; _edje_edd_edje_part_description_text = eet_data_descriptor_file_new(&eddc); - EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON(_edje_edd_edje_part_description_text, Edje_Part_Description_Text, common); + EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON_SUB(_edje_edd_edje_part_description_text, Edje_Part_Description_Text, common); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_text, Edje_Part_Description_Text, "text.color3.r", text.color3.r, EET_T_UCHAR); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_text, Edje_Part_Description_Text, "text.color3.g", text.color3.g, EET_T_UCHAR); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_text, Edje_Part_Description_Text, "text.color3.b", text.color3.b, EET_T_UCHAR); @@ -481,10 +549,40 @@ EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_text, Edje_Part_Description_Text, "text.id_text_source", text.id_text_source, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_text, Edje_Part_Description_Text, "text.elipsis", text.elipsis, EET_T_DOUBLE); + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Description_Text); + eddc.func.mem_free = mem_free_textblock; + eddc.func.mem_alloc = mem_alloc_textblock; + _edje_edd_edje_part_description_textblock = + eet_data_descriptor_file_new(&eddc); + EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON_SUB(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, common); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.color3.r", text.color3.r, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.color3.g", text.color3.g, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.color3.b", text.color3.b, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.color3.a", text.color3.a, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.text", text.text, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.text_class", text.text_class, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.style", text.style, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.font", text.font, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.repch", text.repch, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.size", text.size, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.fit_x", text.fit_x, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.fit_y", text.fit_y, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.min_x", text.min_x, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.min_y", text.min_y, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.max_x", text.max_x, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.max_y", text.max_y, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.align.x", text.align.x, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.align.y", text.align.y, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.id_source", text.id_source, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.id_text_source", text.id_text_source, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.elipsis", text.elipsis, EET_T_DOUBLE); + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Description_Box); + eddc.func.mem_free = mem_free_box; + eddc.func.mem_alloc = mem_alloc_box; _edje_edd_edje_part_description_box = eet_data_descriptor_file_new(&eddc); - EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON(_edje_edd_edje_part_description_box, Edje_Part_Description_Box, common); + EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON_SUB(_edje_edd_edje_part_description_box, Edje_Part_Description_Box, common); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_box, Edje_Part_Description_Box, "box.layout", box.layout, EET_T_STRING); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_box, Edje_Part_Description_Box, "box.alt_layout", box.alt_layout, EET_T_STRING); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_box, Edje_Part_Description_Box, "box.align.x", box.align.x, EDJE_T_FLOAT); @@ -495,9 +593,11 @@ EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_box, Edje_Part_Description_Box, "box.min.v", box.min.v, EET_T_UCHAR); EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Description_Table); + eddc.func.mem_free = mem_free_table; + eddc.func.mem_alloc = mem_alloc_table; _edje_edd_edje_part_description_table = eet_data_descriptor_file_new(&eddc); - EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON(_edje_edd_edje_part_description_table, Edje_Part_Description_Table, common); + EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON_SUB(_edje_edd_edje_part_description_table, Edje_Part_Description_Table, common); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_table, Edje_Part_Description_Table, "table.homogeneous", table.homogeneous, EET_T_UCHAR); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_table, Edje_Part_Description_Table, "table.align.x", table.align.x, EDJE_T_FLOAT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_table, Edje_Part_Description_Table, "table.align.y", table.align.y, EDJE_T_FLOAT); @@ -505,14 +605,19 @@ EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_table, Edje_Part_Description_Table, "table.padding.y", table.padding.y, EET_T_INT); EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Description_External); + eddc.func.mem_free = mem_free_external; + eddc.func.mem_alloc = mem_alloc_external; _edje_edd_edje_part_description_external = eet_data_descriptor_file_new(&eddc); - EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON(_edje_edd_edje_part_description_external, Edje_Part_Description_External, common); + EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON_SUB(_edje_edd_edje_part_description_external, Edje_Part_Description_External, common); EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_part_description_external, Edje_Part_Description_External, "external_params", external_params, _edje_edd_edje_external_param); - EDJE_DEFINE_POINTER_TYPE(Part_Description_Common, part_description_common); + EDJE_DEFINE_POINTER_TYPE(Part_Description_Common, part_description_rectangle); + EDJE_DEFINE_POINTER_TYPE(Part_Description_Common, part_description_swallow); + EDJE_DEFINE_POINTER_TYPE(Part_Description_Common, part_description_group); EDJE_DEFINE_POINTER_TYPE(Part_Description_Image, part_description_image); EDJE_DEFINE_POINTER_TYPE(Part_Description_Text, part_description_text); + EDJE_DEFINE_POINTER_TYPE(Part_Description_Text, part_description_textblock); EDJE_DEFINE_POINTER_TYPE(Part_Description_Box, part_description_box); EDJE_DEFINE_POINTER_TYPE(Part_Description_Table, part_description_table); EDJE_DEFINE_POINTER_TYPE(Part_Description_External, part_description_external); @@ -522,12 +627,12 @@ eddc.func.type_set = _edje_description_variant_type_set; _edje_edd_edje_part_description_variant = eet_data_descriptor_file_new(&eddc); - EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "rectangle", _edje_edd_edje_part_description_common); - EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "swallow", _edje_edd_edje_part_description_common); - EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "group", _edje_edd_edje_part_description_common); + EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "rectangle", _edje_edd_edje_part_description_rectangle); + EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "swallow", _edje_edd_edje_part_description_swallow); + EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "group", _edje_edd_edje_part_description_group); EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "image", _edje_edd_edje_part_description_image); EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "text", _edje_edd_edje_part_description_text); - EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "textblock", _edje_edd_edje_part_description_text); + EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "textblock", _edje_edd_edje_part_description_textblock); EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "box", _edje_edd_edje_part_description_box); EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "table", _edje_edd_edje_part_description_table); EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "external", _edje_edd_edje_part_description_external); @@ -545,12 +650,12 @@ _edje_edd_edje_part_description_variant_list = eet_data_descriptor_file_new(&eddc); - EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "rectangle", common); - EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "swallow", common); - EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "group", common); + EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "rectangle", rectangle); + EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "swallow", swallow); + EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "group", group); EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "image", image); EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "text", text); - EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "textblock", text); + EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "textblock", textblock); EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "box", box); EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "table", table); EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "external", external); @@ -584,7 +689,9 @@ EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "colspan", colspan, EET_T_USHORT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "rowspan", rowspan, EET_T_USHORT); - eet_eina_file_data_descriptor_class_set(&eddc, "Edje_Part", sizeof (Edje_Part)); + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part); + eddc.func.mem_free = mem_free_part; + eddc.func.mem_alloc = mem_alloc_part; _edje_edd_edje_part = eet_data_descriptor_file_new(&eddc); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "name", name, EET_T_STRING); Modified: trunk/edje/src/lib/edje_load.c =================================================================== --- trunk/edje/src/lib/edje_load.c 2010-08-09 19:43:34 UTC (rev 50943) +++ trunk/edje/src/lib/edje_load.c 2010-08-09 21:08:08 UTC (rev 50944) @@ -1212,7 +1212,6 @@ #endif /* Destroy all part and description. */ -#if 0 /* FIXME: USE mempool when possible. */ eina_mempool_del(ce->mp.RECTANGLE); eina_mempool_del(ce->mp.TEXT); eina_mempool_del(ce->mp.IMAGE); @@ -1224,7 +1223,6 @@ eina_mempool_del(ce->mp.EXTERNAL); eina_mempool_del(ce->mp.part); memset(&ce->mp, 0, sizeof (ce->mp)); -#endif free(ec); ce->ref = NULL; Modified: trunk/edje/src/lib/edje_private.h =================================================================== --- trunk/edje/src/lib/edje_private.h 2010-08-09 19:43:34 UTC (rev 50943) +++ trunk/edje/src/lib/edje_private.h 2010-08-09 21:08:08 UTC (rev 50944) @@ -1373,6 +1373,17 @@ extern Eina_Mempool *_edje_real_part_mp; extern Eina_Mempool *_edje_real_part_state_mp; +extern Eina_Mempool *_emp_RECTANGLE; +extern Eina_Mempool *_emp_TEXT; +extern Eina_Mempool *_emp_IMAGE; +extern Eina_Mempool *_emp_SWALLOW; +extern Eina_Mempool *_emp_TEXTBLOCK; +extern Eina_Mempool *_emp_GROUP; +extern Eina_Mempool *_emp_BOX; +extern Eina_Mempool *_emp_TABLE; +extern Eina_Mempool *_emp_EXTERNAL; +extern Eina_Mempool *_emp_part; + void _edje_part_pos_set(Edje *ed, Edje_Real_Part *ep, int mode, FLOAT_T pos); Edje_Part_Description_Common *_edje_part_description_find(Edje *ed, Edje_Real_Part *rp, |
From: Enlightenment S. <no-...@en...> - 2010-08-09 22:21:44
|
Log: * edje: fix eapi declaration. Author: cedric Date: 2010-08-09 15:21:36 -0700 (Mon, 09 Aug 2010) New Revision: 50946 Modified: trunk/edje/src/lib/edje_private.h Modified: trunk/edje/src/lib/edje_private.h =================================================================== --- trunk/edje/src/lib/edje_private.h 2010-08-09 22:01:08 UTC (rev 50945) +++ trunk/edje/src/lib/edje_private.h 2010-08-09 22:21:36 UTC (rev 50946) @@ -1736,11 +1736,11 @@ void *_edje_external_params_parse(Evas_Object *obj, const Eina_List *params); void _edje_external_parsed_params_free(Evas_Object *obj, void *params); -void _edje_module_init(); -void _edje_module_shutdown(); +EAPI void _edje_module_init(); +EAPI void _edje_module_shutdown(); -Eina_Bool edje_program_is_strncmp(const char *str); -Eina_Bool edje_program_is_strrncmp(const char *str); +EAPI Eina_Bool edje_program_is_strncmp(const char *str); +EAPI Eina_Bool edje_program_is_strrncmp(const char *str); void edje_edit_program_insert(Edje *ed, Edje_Program *p); void edje_edit_program_remove(Edje *ed, Edje_Program *p); |
From: Enlightenment S. <no-...@en...> - 2010-08-13 16:06:57
|
Log: * edje: fix eet change. Author: cedric Date: 2010-08-13 09:06:50 -0700 (Fri, 13 Aug 2010) New Revision: 51085 Modified: trunk/edje/src/lib/edje_data.c Modified: trunk/edje/src/lib/edje_data.c =================================================================== --- trunk/edje/src/lib/edje_data.c 2010-08-13 15:53:59 UTC (rev 51084) +++ trunk/edje/src/lib/edje_data.c 2010-08-13 16:06:50 UTC (rev 51085) @@ -757,7 +757,7 @@ EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "api.name", api.name, EET_T_STRING); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "api.description", api.description, EET_T_STRING); - eet_eina_file_data_descriptor_class_set(&eddc, "Edje_Part_Collection", sizeof (Edje_Part_Collection)); + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Collection); _edje_edd_edje_part_collection = eet_data_descriptor_file_new(&eddc); |
From: Enlightenment S. <no-...@en...> - 2010-08-13 16:21:46
|
Log: * edje: last fix due to edje eet breakage. Author: cedric Date: 2010-08-13 09:21:38 -0700 (Fri, 13 Aug 2010) New Revision: 51086 Modified: trunk/edje/src/lib/edje_edit.c Modified: trunk/edje/src/lib/edje_edit.c =================================================================== --- trunk/edje/src/lib/edje_edit.c 2010-08-13 16:06:50 UTC (rev 51085) +++ trunk/edje/src/lib/edje_edit.c 2010-08-13 16:21:38 UTC (rev 51086) @@ -6230,12 +6230,12 @@ if (_srcfile_edd) return; - eet_eina_stream_data_descriptor_class_set(&eddc, "srcfile", sizeof(SrcFile)); + eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc), "srcfile", sizeof(SrcFile)); _srcfile_edd = eet_data_descriptor_stream_new(&eddc); EET_DATA_DESCRIPTOR_ADD_BASIC(_srcfile_edd, SrcFile, "name", name, EET_T_INLINED_STRING); EET_DATA_DESCRIPTOR_ADD_BASIC(_srcfile_edd, SrcFile, "file", file, EET_T_INLINED_STRING); - eet_eina_stream_data_descriptor_class_set(&eddc, "srcfile_list", sizeof(SrcFile_List)); + eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc), "srcfile_list", sizeof(SrcFile_List)); _srcfile_list_edd = eet_data_descriptor_stream_new(&eddc); EET_DATA_DESCRIPTOR_ADD_LIST(_srcfile_list_edd, SrcFile_List, "list", list, _srcfile_edd); } |
From: Enlightenment S. <no-...@en...> - 2010-08-17 12:10:13
|
Log: * edje: fix exported api by Albin Tonnerre. Author: cedric Date: 2010-08-17 05:10:06 -0700 (Tue, 17 Aug 2010) New Revision: 51248 Modified: trunk/edje/src/lib/Edje_Edit.h trunk/edje/src/lib/edje_edit.c Modified: trunk/edje/src/lib/Edje_Edit.h =================================================================== --- trunk/edje/src/lib/Edje_Edit.h 2010-08-17 12:03:10 UTC (rev 51247) +++ trunk/edje/src/lib/Edje_Edit.h 2010-08-17 12:10:06 UTC (rev 51248) @@ -3326,6 +3326,8 @@ */ EAPI Eina_Bool edje_edit_program_transition_time_set(Evas_Object *obj, const char *prog, double seconds); +EAPI const char * edje_edit_program_filter_part_get(Evas_Object *obj, const char *prog); +EAPI Eina_Bool edje_edit_program_filter_part_set(Evas_Object *obj, const char *prog, const char *filter_part); //@} /******************************************************************************/ Modified: trunk/edje/src/lib/edje_edit.c =================================================================== --- trunk/edje/src/lib/edje_edit.c 2010-08-17 12:03:10 UTC (rev 51247) +++ trunk/edje/src/lib/edje_edit.c 2010-08-17 12:10:06 UTC (rev 51248) @@ -766,7 +766,7 @@ return NULL; } -void +static void _edje_edit_group_references_update(Evas_Object *obj, const char *old_group_name, const char *new_group_name) { Eina_Iterator *i; @@ -1844,7 +1844,7 @@ FUNC_PART_API_STRING(name); FUNC_PART_API_STRING(description); -Eina_Bool +static Eina_Bool _edje_edit_real_part_add(Evas_Object *obj, const char *name, Edje_Part_Type type, const char *source) { Edje_Part_Collection_Directory_Entry *ce; @@ -4608,7 +4608,7 @@ /******************/ /* PROGRAMS API */ /******************/ -Edje_Program * +static Edje_Program * _edje_program_get_byname(Evas_Object *obj, const char *prog_name) { Edje_Program *epr; |