edje: reformat all C files

this has been unreadable for years due to the french tabber.
This commit is contained in:
Mike Blumenkrantz 2015-06-08 14:43:00 -04:00
parent 86e5a1a27c
commit 172a0ccf0c
27 changed files with 12764 additions and 12191 deletions

View File

@ -17,21 +17,21 @@ struct _Edje_Part_Box_Animation
struct struct
{ {
Evas_Object_Box_Layout layout; Evas_Object_Box_Layout layout;
void *data; void *data;
void(*free_data)(void *data); void (*free_data)(void *data);
Edje_Alignment align; Edje_Alignment align;
Evas_Point padding; Evas_Point padding;
} start, end; } start, end;
Eina_List *objs; Eina_List *objs;
Eina_Bool recalculate:1; Eina_Bool recalculate : 1;
Evas_Object *box; Evas_Object *box;
double progress; double progress;
double start_progress; double start_progress;
int box_start_w, box_start_h; int box_start_w, box_start_h;
}; };
static void static void
_edje_box_layout_find_all(const char *name, const char *name_alt, Evas_Object_Box_Layout *cb, void **data, void (**free_data)(void *data)) _edje_box_layout_find_all(const char *name, const char *name_alt, Evas_Object_Box_Layout *cb, void **data, void(**free_data) (void *data))
{ {
if (!_edje_box_layout_find(name, cb, data, free_data)) if (!_edje_box_layout_find(name, cb, data, free_data))
{ {
@ -58,7 +58,7 @@ _edje_box_layout_calculate_coords(Evas_Object *obj, Evas_Object_Box_Data *priv,
EINA_LIST_FOREACH(anim->objs, l, tad) EINA_LIST_FOREACH(anim->objs, l, tad)
{ {
evas_object_geometry_get(tad->obj, &tad->start.x, &tad->start.y, evas_object_geometry_get(tad->obj, &tad->start.x, &tad->start.y,
&tad->start.w, &tad->start.h); &tad->start.w, &tad->start.h);
tad->start.x = tad->start.x - x; tad->start.x = tad->start.x - x;
tad->start.y = tad->start.y - y; tad->start.y = tad->start.y - y;
} }
@ -72,7 +72,7 @@ _edje_box_layout_calculate_coords(Evas_Object *obj, Evas_Object_Box_Data *priv,
EINA_LIST_FOREACH(anim->objs, l, tad) EINA_LIST_FOREACH(anim->objs, l, tad)
{ {
evas_object_geometry_get(tad->obj, &tad->end.x, &tad->end.y, evas_object_geometry_get(tad->obj, &tad->end.x, &tad->end.y,
&tad->end.w, &tad->end.h); &tad->end.w, &tad->end.h);
tad->end.x = tad->end.x - x; tad->end.x = tad->end.x - x;
tad->end.y = tad->end.y - y; tad->end.y = tad->end.y - y;
} }
@ -124,7 +124,7 @@ _edje_box_layout(Evas_Object *obj, Evas_Object_Box_Data *priv, void *data)
} }
if ((anim->progress > 0) && (anim->start_progress < 1)) if ((anim->progress > 0) && (anim->start_progress < 1))
_edje_box_layout_exec(obj, anim); _edje_box_layout_exec(obj, anim);
} }
void void
@ -133,11 +133,11 @@ _edje_box_layout_free_data(void *data)
Edje_Transition_Animation_Data *tad; Edje_Transition_Animation_Data *tad;
Edje_Part_Box_Animation *anim = data; Edje_Part_Box_Animation *anim = data;
if (anim->start.free_data && anim->start.data) if (anim->start.free_data && anim->start.data)
anim->start.free_data(anim->start.data); anim->start.free_data(anim->start.data);
if (anim->end.free_data && anim->end.data) if (anim->end.free_data && anim->end.data)
anim->end.free_data(anim->end.data); anim->end.free_data(anim->end.data);
EINA_LIST_FREE(anim->objs, tad) EINA_LIST_FREE(anim->objs, tad)
free(tad); free(tad);
free(data); free(data);
} }
@ -146,7 +146,7 @@ _edje_box_layout_anim_new(Evas_Object *box)
{ {
Edje_Part_Box_Animation *anim = calloc(1, sizeof(Edje_Part_Box_Animation)); Edje_Part_Box_Animation *anim = calloc(1, sizeof(Edje_Part_Box_Animation));
if (!anim) if (!anim)
return NULL; return NULL;
anim->box = box; anim->box = box;
evas_object_box_layout_set(box, _edje_box_layout, anim, NULL); evas_object_box_layout_set(box, _edje_box_layout, anim, NULL);
@ -163,7 +163,7 @@ _edje_box_recalc_apply(Edje *ed EINA_UNUSED, Edje_Real_Part *ep, Edje_Calc_Param
#endif #endif
if ((ep->type != EDJE_RP_TYPE_CONTAINER) || if ((ep->type != EDJE_RP_TYPE_CONTAINER) ||
(!ep->typedata.container)) return; (!ep->typedata.container)) return;
if ((ep->param2) && (ep->description_pos != ZERO)) if ((ep->param2) && (ep->description_pos != ZERO))
{ {
Edje_Part_Description_Box *param2_desc = (Edje_Part_Description_Box *)ep->param2->description; Edje_Part_Description_Box *param2_desc = (Edje_Part_Description_Box *)ep->param2->description;
@ -177,7 +177,7 @@ _edje_box_recalc_apply(Edje *ed EINA_UNUSED, Edje_Real_Part *ep, Edje_Calc_Param
priv = eo_data_scope_get(ep->object, EVAS_BOX_CLASS); priv = eo_data_scope_get(ep->object, EVAS_BOX_CLASS);
if (priv == NULL) if (priv == NULL)
return; return;
evas_object_box_padding_set(ep->object, ep->typedata.container->anim->start.padding.x, ep->typedata.container->anim->start.padding.y); evas_object_box_padding_set(ep->object, ep->typedata.container->anim->start.padding.x, ep->typedata.container->anim->start.padding.y);
evas_object_box_align_set(ep->object, TO_DOUBLE(ep->typedata.container->anim->start.align.x), TO_DOUBLE(ep->typedata.container->anim->start.align.y)); evas_object_box_align_set(ep->object, TO_DOUBLE(ep->typedata.container->anim->start.align.x), TO_DOUBLE(ep->typedata.container->anim->start.align.y));
@ -206,8 +206,8 @@ _edje_box_recalc_apply(Edje *ed EINA_UNUSED, Edje_Real_Part *ep, Edje_Calc_Param
if (evas_object_smart_need_recalculate_get(ep->object)) if (evas_object_smart_need_recalculate_get(ep->object))
{ {
evas_object_smart_need_recalculate_set(ep->object, 0); evas_object_smart_need_recalculate_set(ep->object, 0);
evas_object_smart_calculate(ep->object); evas_object_smart_calculate(ep->object);
} }
#if 0 /* Why the hell do we affect part size after resize ??? */ #if 0 /* Why the hell do we affect part size after resize ??? */
evas_object_size_hint_min_get(ep->object, &min_w, &min_h); evas_object_size_hint_min_get(ep->object, &min_w, &min_h);
@ -222,7 +222,7 @@ Eina_Bool
_edje_box_layout_add_child(Edje_Real_Part *rp, Evas_Object *child_obj) _edje_box_layout_add_child(Edje_Real_Part *rp, Evas_Object *child_obj)
{ {
Edje_Transition_Animation_Data *tad; Edje_Transition_Animation_Data *tad;
if ((rp->type != EDJE_RP_TYPE_CONTAINER) || if ((rp->type != EDJE_RP_TYPE_CONTAINER) ||
(!rp->typedata.container)) return EINA_FALSE; (!rp->typedata.container)) return EINA_FALSE;
tad = calloc(1, sizeof(Edje_Transition_Animation_Data)); tad = calloc(1, sizeof(Edje_Transition_Animation_Data));
@ -253,3 +253,4 @@ _edje_box_layout_remove_child(Edje_Real_Part *rp, Evas_Object *child_obj)
} }
rp->typedata.container->anim->recalculate = EINA_TRUE; rp->typedata.container->anim->recalculate = EINA_TRUE;
} }

View File

@ -1,75 +1,74 @@
#include "edje_private.h" #include "edje_private.h"
Eina_Hash *_edje_file_hash = NULL; Eina_Hash *_edje_file_hash = NULL;
static int _edje_file_cache_size = 16; static int _edje_file_cache_size = 16;
static Eina_List *_edje_file_cache = NULL; static Eina_List *_edje_file_cache = NULL;
static int _edje_collection_cache_size = 16; static int _edje_collection_cache_size = 16;
EAPI void EAPI void
edje_cache_emp_alloc(Edje_Part_Collection_Directory_Entry *ce) edje_cache_emp_alloc(Edje_Part_Collection_Directory_Entry *ce)
{ /* Init Eina Mempools this is also used in edje_pick.c */ { /* Init Eina Mempools this is also used in edje_pick.c */
char *buffer; char *buffer;
#define INIT_EMP(Tp, Sz, Ce) \ #define INIT_EMP(Tp, Sz, Ce) \
buffer = alloca(strlen(ce->entry) + strlen(#Tp) + 2); \ buffer = alloca(strlen(ce->entry) + strlen(#Tp) + 2); \
sprintf(buffer, "%s/%s", ce->entry, #Tp); \ sprintf(buffer, "%s/%s", ce->entry, #Tp); \
Ce->mp.Tp = eina_mempool_add("one_big", buffer, NULL, sizeof (Sz), Ce->count.Tp); \ Ce->mp.Tp = eina_mempool_add("one_big", buffer, NULL, sizeof (Sz), Ce->count.Tp); \
_emp_##Tp = Ce->mp.Tp; _emp_##Tp = Ce->mp.Tp;
#define INIT_EMP_BOTH(Tp, Sz, Ce) \ #define INIT_EMP_BOTH(Tp, Sz, Ce) \
INIT_EMP(Tp, Sz, Ce) \ INIT_EMP(Tp, Sz, Ce) \
Ce->mp_rtl.Tp = eina_mempool_add("one_big", buffer, NULL, \ Ce->mp_rtl.Tp = eina_mempool_add("one_big", buffer, NULL, \
sizeof (Sz), Ce->count.Tp); sizeof (Sz), Ce->count.Tp);
INIT_EMP_BOTH(RECTANGLE, Edje_Part_Description_Common, ce); INIT_EMP_BOTH(RECTANGLE, Edje_Part_Description_Common, ce);
INIT_EMP_BOTH(TEXT, Edje_Part_Description_Text, ce); INIT_EMP_BOTH(TEXT, Edje_Part_Description_Text, ce);
INIT_EMP_BOTH(IMAGE, Edje_Part_Description_Image, ce); INIT_EMP_BOTH(IMAGE, Edje_Part_Description_Image, ce);
INIT_EMP_BOTH(PROXY, Edje_Part_Description_Proxy, ce); INIT_EMP_BOTH(PROXY, Edje_Part_Description_Proxy, ce);
INIT_EMP_BOTH(SWALLOW, Edje_Part_Description_Common, ce); INIT_EMP_BOTH(SWALLOW, Edje_Part_Description_Common, ce);
INIT_EMP_BOTH(TEXTBLOCK, Edje_Part_Description_Text, ce); INIT_EMP_BOTH(TEXTBLOCK, Edje_Part_Description_Text, ce);
INIT_EMP_BOTH(GROUP, Edje_Part_Description_Common, ce); INIT_EMP_BOTH(GROUP, Edje_Part_Description_Common, ce);
INIT_EMP_BOTH(BOX, Edje_Part_Description_Box, ce); INIT_EMP_BOTH(BOX, Edje_Part_Description_Box, ce);
INIT_EMP_BOTH(TABLE, Edje_Part_Description_Table, ce); INIT_EMP_BOTH(TABLE, Edje_Part_Description_Table, ce);
INIT_EMP_BOTH(EXTERNAL, Edje_Part_Description_External, ce); INIT_EMP_BOTH(EXTERNAL, Edje_Part_Description_External, ce);
INIT_EMP_BOTH(SPACER, Edje_Part_Description_Common, ce); INIT_EMP_BOTH(SPACER, Edje_Part_Description_Common, ce);
INIT_EMP(part, Edje_Part, ce); INIT_EMP(part, Edje_Part, ce);
} }
EAPI void EAPI void
edje_cache_emp_free(Edje_Part_Collection_Directory_Entry *ce) edje_cache_emp_free(Edje_Part_Collection_Directory_Entry *ce)
{ /* Free Eina Mempools this is also used in edje_pick.c */ { /* Free Eina Mempools this is also used in edje_pick.c */
/* Destroy all part and description. */ /* Destroy all part and description. */
eina_mempool_del(ce->mp.RECTANGLE); eina_mempool_del(ce->mp.RECTANGLE);
eina_mempool_del(ce->mp.TEXT); eina_mempool_del(ce->mp.TEXT);
eina_mempool_del(ce->mp.IMAGE); eina_mempool_del(ce->mp.IMAGE);
eina_mempool_del(ce->mp.PROXY); eina_mempool_del(ce->mp.PROXY);
eina_mempool_del(ce->mp.SWALLOW); eina_mempool_del(ce->mp.SWALLOW);
eina_mempool_del(ce->mp.TEXTBLOCK); eina_mempool_del(ce->mp.TEXTBLOCK);
eina_mempool_del(ce->mp.GROUP); eina_mempool_del(ce->mp.GROUP);
eina_mempool_del(ce->mp.BOX); eina_mempool_del(ce->mp.BOX);
eina_mempool_del(ce->mp.TABLE); eina_mempool_del(ce->mp.TABLE);
eina_mempool_del(ce->mp.EXTERNAL); eina_mempool_del(ce->mp.EXTERNAL);
eina_mempool_del(ce->mp.SPACER); eina_mempool_del(ce->mp.SPACER);
eina_mempool_del(ce->mp.part); eina_mempool_del(ce->mp.part);
memset(&ce->mp, 0, sizeof (ce->mp)); memset(&ce->mp, 0, sizeof (ce->mp));
eina_mempool_del(ce->mp_rtl.RECTANGLE); eina_mempool_del(ce->mp_rtl.RECTANGLE);
eina_mempool_del(ce->mp_rtl.TEXT); eina_mempool_del(ce->mp_rtl.TEXT);
eina_mempool_del(ce->mp_rtl.IMAGE); eina_mempool_del(ce->mp_rtl.IMAGE);
eina_mempool_del(ce->mp_rtl.PROXY); eina_mempool_del(ce->mp_rtl.PROXY);
eina_mempool_del(ce->mp_rtl.SWALLOW); eina_mempool_del(ce->mp_rtl.SWALLOW);
eina_mempool_del(ce->mp_rtl.TEXTBLOCK); eina_mempool_del(ce->mp_rtl.TEXTBLOCK);
eina_mempool_del(ce->mp_rtl.GROUP); eina_mempool_del(ce->mp_rtl.GROUP);
eina_mempool_del(ce->mp_rtl.BOX); eina_mempool_del(ce->mp_rtl.BOX);
eina_mempool_del(ce->mp_rtl.TABLE); eina_mempool_del(ce->mp_rtl.TABLE);
eina_mempool_del(ce->mp_rtl.EXTERNAL); eina_mempool_del(ce->mp_rtl.EXTERNAL);
eina_mempool_del(ce->mp_rtl.SPACER); eina_mempool_del(ce->mp_rtl.SPACER);
memset(&ce->mp_rtl, 0, sizeof (ce->mp_rtl)); memset(&ce->mp_rtl, 0, sizeof (ce->mp_rtl));
ce->ref = NULL; ce->ref = NULL;
} }
void void
_edje_programs_patterns_init(Edje_Part_Collection *edc) _edje_programs_patterns_init(Edje_Part_Collection *edc)
{ {
@ -82,21 +81,21 @@ _edje_programs_patterns_init(Edje_Part_Collection *edc)
if (getenv("EDJE_DUMP_PROGRAMS")) if (getenv("EDJE_DUMP_PROGRAMS"))
{ {
INF("Group '%s' programs:", edc->part); INF("Group '%s' programs:", edc->part);
#define EDJE_DUMP_PROGRAM(Section) \ #define EDJE_DUMP_PROGRAM(Section) \
for (i = 0; i < edc->programs.Section##_count; i++) \ for (i = 0; i < edc->programs.Section##_count; i++) \
INF(#Section" for ('%s', '%s')", edc->programs.Section[i]->signal, edc->programs.Section[i]->source); INF(#Section " for ('%s', '%s')", edc->programs.Section[i]->signal, edc->programs.Section[i]->source);
EDJE_DUMP_PROGRAM(strcmp); EDJE_DUMP_PROGRAM(strcmp);
EDJE_DUMP_PROGRAM(strncmp); EDJE_DUMP_PROGRAM(strncmp);
EDJE_DUMP_PROGRAM(strrncmp); EDJE_DUMP_PROGRAM(strrncmp);
EDJE_DUMP_PROGRAM(fnmatch); EDJE_DUMP_PROGRAM(fnmatch);
EDJE_DUMP_PROGRAM(nocmp); EDJE_DUMP_PROGRAM(nocmp);
} }
edje_match_program_hash_build(edc->programs.strcmp, edje_match_program_hash_build(edc->programs.strcmp,
edc->programs.strcmp_count, edc->programs.strcmp_count,
&ssp->exact_match); &ssp->exact_match);
j = edc->programs.strncmp_count j = edc->programs.strncmp_count
+ edc->programs.strrncmp_count + edc->programs.strrncmp_count
@ -109,9 +108,9 @@ _edje_programs_patterns_init(Edje_Part_Collection *edc)
j = 0; j = 0;
/* FIXME: Build specialized data type for each case */ /* FIXME: Build specialized data type for each case */
#define EDJE_LOAD_PROGRAMS_ADD(Array, Edc, It, Git, All) \ #define EDJE_LOAD_PROGRAMS_ADD(Array, Edc, It, Git, All) \
for (It = 0; It < Edc->programs.Array##_count; ++It, ++Git) \ for (It = 0; It < Edc->programs.Array##_count; ++It, ++Git) \
All[Git] = Edc->programs.Array[It]; All[Git] = Edc->programs.Array[It];
EDJE_LOAD_PROGRAMS_ADD(fnmatch, edc, i, j, all); EDJE_LOAD_PROGRAMS_ADD(fnmatch, edc, i, j, all);
EDJE_LOAD_PROGRAMS_ADD(strncmp, edc, i, j, all); EDJE_LOAD_PROGRAMS_ADD(strncmp, edc, i, j, all);
@ -141,20 +140,20 @@ _edje_file_coll_open(Edje_File *edf, const char *coll)
if (ce->ref) if (ce->ref)
{ {
ce->ref->references++; ce->ref->references++;
return ce->ref; return ce->ref;
} }
EINA_LIST_FOREACH(edf->collection_cache, l, edc) EINA_LIST_FOREACH(edf->collection_cache, l, edc)
{ {
if (!strcmp(edc->part, coll)) if (!strcmp(edc->part, coll))
{ {
edc->references = 1; edc->references = 1;
ce->ref = edc; ce->ref = edc;
edf->collection_cache = eina_list_remove_list(edf->collection_cache, l); edf->collection_cache = eina_list_remove_list(edf->collection_cache, l);
return ce->ref; return ce->ref;
} }
} }
id = ce->id; id = ce->id;
@ -174,10 +173,10 @@ _edje_file_coll_open(Edje_File *edf, const char *coll)
/* This will preserve previous rendering */ /* This will preserve previous rendering */
unsigned int i; unsigned int i;
/* people expect signal to not be broadcasted */ /* people expect signal to not be broadcasted */
edc->broadcast_signal = EINA_FALSE; edc->broadcast_signal = EINA_FALSE;
/* people expect text.align to be 0.0 0.0 */ /* people expect text.align to be 0.0 0.0 */
for (i = 0; i < edc->parts_count; ++i) for (i = 0; i < edc->parts_count; ++i)
{ {
if (edc->parts[i]->type == EDJE_PART_TYPE_TEXTBLOCK) if (edc->parts[i]->type == EDJE_PART_TYPE_TEXTBLOCK)
@ -185,13 +184,13 @@ _edje_file_coll_open(Edje_File *edf, const char *coll)
Edje_Part_Description_Text *text; Edje_Part_Description_Text *text;
unsigned int j; unsigned int j;
text = (Edje_Part_Description_Text*) edc->parts[i]->default_desc; text = (Edje_Part_Description_Text *)edc->parts[i]->default_desc;
text->text.align.x = TO_DOUBLE(0.0); text->text.align.x = TO_DOUBLE(0.0);
text->text.align.y = TO_DOUBLE(0.0); text->text.align.y = TO_DOUBLE(0.0);
for (j = 0; j < edc->parts[i]->other.desc_count; ++j) for (j = 0; j < edc->parts[i]->other.desc_count; ++j)
{ {
text = (Edje_Part_Description_Text*) edc->parts[i]->other.desc[j]; text = (Edje_Part_Description_Text *)edc->parts[i]->other.desc[j];
text->text.align.x = TO_DOUBLE(0.0); text->text.align.x = TO_DOUBLE(0.0);
text->text.align.y = TO_DOUBLE(0.0); text->text.align.y = TO_DOUBLE(0.0);
} }
@ -204,9 +203,9 @@ _edje_file_coll_open(Edje_File *edf, const char *coll)
if (data) if (data)
{ {
edc->script = embryo_program_new(data, size); edc->script = embryo_program_new(data, size);
_edje_embryo_script_init(edc); _edje_embryo_script_init(edc);
free(data); free(data);
} }
snprintf(buf, sizeof(buf), "edje/scripts/lua/%i", id); snprintf(buf, sizeof(buf), "edje/scripts/lua/%i", id);
@ -215,7 +214,7 @@ _edje_file_coll_open(Edje_File *edf, const char *coll)
if (data) if (data)
{ {
_edje_lua2_script_load(edc, data, size); _edje_lua2_script_load(edc, data, size);
free(data); free(data);
} }
ce->ref = edc; ce->ref = edc;
@ -230,27 +229,27 @@ _edje_file_coll_open(Edje_File *edf, const char *coll)
if (n > 0) if (n > 0)
{ {
Edje_Program *pr; Edje_Program *pr;
unsigned int i; unsigned int i;
edc->patterns.table_programs = malloc(sizeof(Edje_Program *) * n); edc->patterns.table_programs = malloc(sizeof(Edje_Program *) * n);
if (edc->patterns.table_programs) if (edc->patterns.table_programs)
{ {
edc->patterns.table_programs_size = n; edc->patterns.table_programs_size = n;
#define EDJE_LOAD_BUILD_TABLE(Array, Edc, It, Tmp) \ #define EDJE_LOAD_BUILD_TABLE(Array, Edc, It, Tmp) \
for (It = 0; It < Edc->programs.Array##_count; ++It) \ for (It = 0; It < Edc->programs.Array##_count; ++It) \
{ \ { \
Tmp = Edc->programs.Array[It]; \ Tmp = Edc->programs.Array[It]; \
Edc->patterns.table_programs[Tmp->id] = Tmp; \ Edc->patterns.table_programs[Tmp->id] = Tmp; \
} }
EDJE_LOAD_BUILD_TABLE(fnmatch, edc, i, pr); EDJE_LOAD_BUILD_TABLE(fnmatch, edc, i, pr);
EDJE_LOAD_BUILD_TABLE(strcmp, edc, i, pr); EDJE_LOAD_BUILD_TABLE(strcmp, edc, i, pr);
EDJE_LOAD_BUILD_TABLE(strncmp, edc, i, pr); EDJE_LOAD_BUILD_TABLE(strncmp, edc, i, pr);
EDJE_LOAD_BUILD_TABLE(strrncmp, edc, i, pr); EDJE_LOAD_BUILD_TABLE(strrncmp, edc, i, pr);
EDJE_LOAD_BUILD_TABLE(nocmp, edc, i, pr); EDJE_LOAD_BUILD_TABLE(nocmp, edc, i, pr);
} }
} }
return edc; return edc;
@ -268,15 +267,15 @@ _edje_file_open(const Eina_File *f, const char *coll, int *error_ret, Edje_Part_
ef = eet_mmap(f); ef = eet_mmap(f);
if (!ef) if (!ef)
{ {
*error_ret = EDJE_LOAD_ERROR_UNKNOWN_FORMAT; *error_ret = EDJE_LOAD_ERROR_UNKNOWN_FORMAT;
return NULL; return NULL;
} }
edf = eet_data_read(ef, _edje_edd_edje_file, "edje/file"); edf = eet_data_read(ef, _edje_edd_edje_file, "edje/file");
if (!edf) if (!edf)
{ {
*error_ret = EDJE_LOAD_ERROR_CORRUPT_FILE; *error_ret = EDJE_LOAD_ERROR_CORRUPT_FILE;
eet_close(ef); eet_close(ef);
return NULL; return NULL;
} }
edf->f = eina_file_dup(f); edf->f = eina_file_dup(f);
@ -285,20 +284,20 @@ _edje_file_open(const Eina_File *f, const char *coll, int *error_ret, Edje_Part_
if (edf->version != EDJE_FILE_VERSION) if (edf->version != EDJE_FILE_VERSION)
{ {
*error_ret = EDJE_LOAD_ERROR_INCOMPATIBLE_FILE; *error_ret = EDJE_LOAD_ERROR_INCOMPATIBLE_FILE;
_edje_file_free(edf); _edje_file_free(edf);
return NULL; return NULL;
} }
if (!edf->collection) if (!edf->collection)
{ {
*error_ret = EDJE_LOAD_ERROR_CORRUPT_FILE; *error_ret = EDJE_LOAD_ERROR_CORRUPT_FILE;
_edje_file_free(edf); _edje_file_free(edf);
return NULL; return NULL;
} }
if (edf->minor > EDJE_FILE_MINOR) if (edf->minor > EDJE_FILE_MINOR)
{ {
WRN("`%s` may use feature from a newer edje and could not show up as expected.", WRN("`%s` may use feature from a newer edje and could not show up as expected.",
eina_file_filename_get(f)); eina_file_filename_get(f));
} }
if (edf->base_scale <= ZERO) if (edf->base_scale <= ZERO)
@ -319,12 +318,12 @@ _edje_file_open(const Eina_File *f, const char *coll, int *error_ret, Edje_Part_
if (coll) if (coll)
{ {
edc = _edje_file_coll_open(edf, coll); edc = _edje_file_coll_open(edf, coll);
if (!edc) if (!edc)
{ {
*error_ret = EDJE_LOAD_ERROR_UNKNOWN_COLLECTION; *error_ret = EDJE_LOAD_ERROR_UNKNOWN_COLLECTION;
} }
if (edc_ret) *edc_ret = edc; if (edc_ret) *edc_ret = edc;
} }
return edf; return edf;
@ -341,10 +340,11 @@ _edje_file_dangling(Edje_File *edf)
eina_hash_del(_edje_file_hash, &edf->f, edf); eina_hash_del(_edje_file_hash, &edf->f, edf);
if (!eina_hash_population(_edje_file_hash)) if (!eina_hash_population(_edje_file_hash))
{ {
eina_hash_free(_edje_file_hash); eina_hash_free(_edje_file_hash);
_edje_file_hash = NULL; _edje_file_hash = NULL;
} }
} }
#endif #endif
Edje_File * Edje_File *
@ -357,27 +357,27 @@ _edje_cache_file_coll_open(const Eina_File *file, const char *coll, int *error_r
if (!_edje_file_hash) if (!_edje_file_hash)
{ {
_edje_file_hash = eina_hash_pointer_new(NULL); _edje_file_hash = eina_hash_pointer_new(NULL);
goto find_list; goto find_list;
} }
edf = eina_hash_find(_edje_file_hash, &file); edf = eina_hash_find(_edje_file_hash, &file);
if (edf) if (edf)
{ {
edf->references++; edf->references++;
goto open; goto open;
} }
find_list: find_list:
EINA_LIST_FOREACH(_edje_file_cache, l, edf) EINA_LIST_FOREACH(_edje_file_cache, l, edf)
{ {
if (edf->f == file) if (edf->f == file)
{ {
edf->references = 1; edf->references = 1;
_edje_file_cache = eina_list_remove_list(_edje_file_cache, l); _edje_file_cache = eina_list_remove_list(_edje_file_cache, l);
eina_hash_direct_add(_edje_file_hash, &edf->f, edf); eina_hash_direct_add(_edje_file_hash, &edf->f, edf);
goto open; goto open;
} }
} }
edf = _edje_file_open(file, coll, error_ret, edc_ret, eina_file_mtime_get(file)); edf = _edje_file_open(file, coll, error_ret, edc_ret, eina_file_mtime_get(file));
@ -388,106 +388,106 @@ find_list:
open: open:
if (!coll) if (!coll)
return edf; return edf;
edc = _edje_file_coll_open(edf, coll); edc = _edje_file_coll_open(edf, coll);
if (!edc) if (!edc)
{ {
*error_ret = EDJE_LOAD_ERROR_UNKNOWN_COLLECTION; *error_ret = EDJE_LOAD_ERROR_UNKNOWN_COLLECTION;
} }
else else
{ {
if (!edc->checked) if (!edc->checked)
{ {
unsigned int j; unsigned int j;
for (j = 0; j < edc->parts_count; ++j) for (j = 0; j < edc->parts_count; ++j)
{ {
Edje_Part *ep2; Edje_Part *ep2;
ep = edc->parts[j]; ep = edc->parts[j];
/* Register any color classes in this parts descriptions. */ /* Register any color classes in this parts descriptions. */
hist = NULL; hist = NULL;
hist = eina_list_append(hist, ep); hist = eina_list_append(hist, ep);
ep2 = ep; ep2 = ep;
while (ep2->dragable.confine_id >= 0) while (ep2->dragable.confine_id >= 0)
{ {
if (ep2->dragable.confine_id >= (int) edc->parts_count) if (ep2->dragable.confine_id >= (int)edc->parts_count)
{ {
ERR("confine_to above limit. invalidating it."); ERR("confine_to above limit. invalidating it.");
ep2->dragable.confine_id = -1; ep2->dragable.confine_id = -1;
break; break;
} }
ep2 = edc->parts[ep2->dragable.confine_id]; ep2 = edc->parts[ep2->dragable.confine_id];
if (eina_list_data_find(hist, ep2)) if (eina_list_data_find(hist, ep2))
{ {
ERR("confine_to loops. invalidating loop."); ERR("confine_to loops. invalidating loop.");
ep2->dragable.confine_id = -1; ep2->dragable.confine_id = -1;
break; break;
} }
hist = eina_list_append(hist, ep2); hist = eina_list_append(hist, ep2);
} }
eina_list_free(hist); eina_list_free(hist);
hist = NULL; hist = NULL;
hist = eina_list_append(hist, ep); hist = eina_list_append(hist, ep);
ep2 = ep; ep2 = ep;
while (ep2->dragable.event_id >= 0) while (ep2->dragable.event_id >= 0)
{ {
Edje_Part* prev; Edje_Part *prev;
if (ep2->dragable.event_id >= (int) edc->parts_count) if (ep2->dragable.event_id >= (int)edc->parts_count)
{ {
ERR("event_id above limit. invalidating it."); ERR("event_id above limit. invalidating it.");
ep2->dragable.event_id = -1; ep2->dragable.event_id = -1;
break; break;
} }
prev = ep2; prev = ep2;
ep2 = edc->parts[ep2->dragable.event_id]; ep2 = edc->parts[ep2->dragable.event_id];
/* events_to may be used only with dragable */ /* events_to may be used only with dragable */
if (!ep2->dragable.x && !ep2->dragable.y) if (!ep2->dragable.x && !ep2->dragable.y)
{ {
prev->dragable.event_id = -1; prev->dragable.event_id = -1;
break; break;
} }
if (eina_list_data_find(hist, ep2)) if (eina_list_data_find(hist, ep2))
{ {
ERR("events_to loops. invalidating loop."); ERR("events_to loops. invalidating loop.");
ep2->dragable.event_id = -1; ep2->dragable.event_id = -1;
break; break;
} }
hist = eina_list_append(hist, ep2); hist = eina_list_append(hist, ep2);
} }
eina_list_free(hist); eina_list_free(hist);
hist = NULL; hist = NULL;
hist = eina_list_append(hist, ep); hist = eina_list_append(hist, ep);
ep2 = ep; ep2 = ep;
while (ep2->clip_to_id >= 0) while (ep2->clip_to_id >= 0)
{ {
if (ep2->clip_to_id >= (int) edc->parts_count) if (ep2->clip_to_id >= (int)edc->parts_count)
{ {
ERR("clip_to_id above limit. invalidating it."); ERR("clip_to_id above limit. invalidating it.");
ep2->clip_to_id = -1; ep2->clip_to_id = -1;
break; break;
} }
ep2 = edc->parts[ep2->clip_to_id]; ep2 = edc->parts[ep2->clip_to_id];
if (eina_list_data_find(hist, ep2)) if (eina_list_data_find(hist, ep2))
{ {
ERR("clip_to loops. invalidating loop."); ERR("clip_to loops. invalidating loop.");
ep2->clip_to_id = -1; ep2->clip_to_id = -1;
break; break;
} }
hist = eina_list_append(hist, ep2); hist = eina_list_append(hist, ep2);
} }
eina_list_free(hist); eina_list_free(hist);
hist = NULL; hist = NULL;
} }
edc->checked = 1; edc->checked = 1;
} }
} }
if (edc_ret) *edc_ret = edc; if (edc_ret) *edc_ret = edc;
@ -499,16 +499,16 @@ void
_edje_cache_coll_clean(Edje_File *edf) _edje_cache_coll_clean(Edje_File *edf)
{ {
while ((edf->collection_cache) && while ((edf->collection_cache) &&
(eina_list_count(edf->collection_cache) > (unsigned int) _edje_collection_cache_size)) (eina_list_count(edf->collection_cache) > (unsigned int)_edje_collection_cache_size))
{ {
Edje_Part_Collection_Directory_Entry *ce; Edje_Part_Collection_Directory_Entry *ce;
Edje_Part_Collection *edc; Edje_Part_Collection *edc;
edc = eina_list_data_get(eina_list_last(edf->collection_cache)); 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)); edf->collection_cache = eina_list_remove_list(edf->collection_cache, eina_list_last(edf->collection_cache));
ce = eina_hash_find(edf->collection, edc->part); ce = eina_hash_find(edf->collection, edc->part);
_edje_collection_free(edf, edc, ce); _edje_collection_free(edf, edc, ce);
} }
} }
@ -517,17 +517,17 @@ _edje_cache_coll_flush(Edje_File *edf)
{ {
while (edf->collection_cache) while (edf->collection_cache)
{ {
Edje_Part_Collection_Directory_Entry *ce; Edje_Part_Collection_Directory_Entry *ce;
Edje_Part_Collection *edc; Edje_Part_Collection *edc;
Eina_List *last; Eina_List *last;
last = eina_list_last(edf->collection_cache); last = eina_list_last(edf->collection_cache);
edc = eina_list_data_get(last); edc = eina_list_data_get(last);
edf->collection_cache = eina_list_remove_list(edf->collection_cache, edf->collection_cache = eina_list_remove_list(edf->collection_cache,
last); last);
ce = eina_hash_find(edf->collection, edc->part); ce = eina_hash_find(edf->collection, edc->part);
_edje_collection_free(edf, edc, ce); _edje_collection_free(edf, edc, ce);
} }
} }
@ -542,23 +542,23 @@ _edje_cache_coll_unref(Edje_File *edf, Edje_Part_Collection *edc)
ce = eina_hash_find(edf->collection, edc->part); ce = eina_hash_find(edf->collection, edc->part);
if (!ce) if (!ce)
{ {
ERR("Something is wrong with reference count of '%s'.", edc->part); ERR("Something is wrong with reference count of '%s'.", edc->part);
} }
else if (ce->ref) else if (ce->ref)
{ {
ce->ref = NULL; ce->ref = NULL;
if (edf->dangling) if (edf->dangling)
{ {
/* No need to keep the collection around if the file is dangling */ /* No need to keep the collection around if the file is dangling */
_edje_collection_free(edf, edc, ce); _edje_collection_free(edf, edc, ce);
_edje_cache_coll_flush(edf); _edje_cache_coll_flush(edf);
} }
else else
{ {
edf->collection_cache = eina_list_prepend(edf->collection_cache, edc); edf->collection_cache = eina_list_prepend(edf->collection_cache, edc);
_edje_cache_coll_clean(edf); _edje_cache_coll_clean(edf);
} }
} }
} }
@ -570,14 +570,14 @@ _edje_cache_file_clean(void)
count = eina_list_count(_edje_file_cache); count = eina_list_count(_edje_file_cache);
while ((_edje_file_cache) && (count > _edje_file_cache_size)) while ((_edje_file_cache) && (count > _edje_file_cache_size))
{ {
Eina_List *last; Eina_List *last;
Edje_File *edf; Edje_File *edf;
last = eina_list_last(_edje_file_cache); last = eina_list_last(_edje_file_cache);
edf = eina_list_data_get(last); edf = eina_list_data_get(last);
_edje_file_cache = eina_list_remove_list(_edje_file_cache, last); _edje_file_cache = eina_list_remove_list(_edje_file_cache, last);
_edje_file_free(edf); _edje_file_free(edf);
count = eina_list_count(_edje_file_cache); count = eina_list_count(_edje_file_cache);
} }
} }
@ -589,15 +589,15 @@ _edje_cache_file_unref(Edje_File *edf)
if (edf->dangling) if (edf->dangling)
{ {
_edje_file_free(edf); _edje_file_free(edf);
return; return;
} }
eina_hash_del(_edje_file_hash, &edf->f, edf); eina_hash_del(_edje_file_hash, &edf->f, edf);
if (!eina_hash_population(_edje_file_hash)) if (!eina_hash_population(_edje_file_hash))
{ {
eina_hash_free(_edje_file_hash); eina_hash_free(_edje_file_hash);
_edje_file_hash = NULL; _edje_file_hash = NULL;
} }
_edje_file_cache = eina_list_prepend(_edje_file_cache, edf); _edje_file_cache = eina_list_prepend(_edje_file_cache, edf);
_edje_cache_file_clean(); _edje_cache_file_clean();
@ -609,15 +609,13 @@ _edje_file_cache_shutdown(void)
edje_file_cache_flush(); edje_file_cache_flush();
} }
/*============================================================================*
* Global *
*============================================================================*/
/*============================================================================* /*============================================================================*
* Global * * API *
*============================================================================*/ *============================================================================*/
/*============================================================================*
* API *
*============================================================================*/
EAPI void EAPI void
edje_file_cache_set(int count) edje_file_cache_set(int count)
@ -627,14 +625,12 @@ edje_file_cache_set(int count)
_edje_cache_file_clean(); _edje_cache_file_clean();
} }
EAPI int EAPI int
edje_file_cache_get(void) edje_file_cache_get(void)
{ {
return _edje_file_cache_size; return _edje_file_cache_size;
} }
EAPI void EAPI void
edje_file_cache_flush(void) edje_file_cache_flush(void)
{ {
@ -646,7 +642,6 @@ edje_file_cache_flush(void)
_edje_file_cache_size = ps; _edje_file_cache_size = ps;
} }
EAPI void EAPI void
edje_collection_cache_set(int count) edje_collection_cache_set(int count)
{ {
@ -660,14 +655,12 @@ edje_collection_cache_set(int count)
/* FIXME: freach in file hash too! */ /* FIXME: freach in file hash too! */
} }
EAPI int EAPI int
edje_collection_cache_get(void) edje_collection_cache_get(void)
{ {
return _edje_collection_cache_size; return _edje_collection_cache_size;
} }
EAPI void EAPI void
edje_collection_cache_flush(void) edje_collection_cache_flush(void)
{ {
@ -682,3 +675,4 @@ edje_collection_cache_flush(void)
/* FIXME: freach in file hash too! */ /* FIXME: freach in file hash too! */
_edje_collection_cache_size = ps; _edje_collection_cache_size = ps;
} }

1925
src/lib/edje/edje_calc.c Executable file → Normal file

File diff suppressed because it is too large Load Diff

View File

@ -35,7 +35,6 @@ _edje_focus_in_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc E
return EO_CALLBACK_CONTINUE; return EO_CALLBACK_CONTINUE;
} }
static Eina_Bool static Eina_Bool
_edje_focus_out_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED) _edje_focus_out_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED)
{ {
@ -52,7 +51,6 @@ _edje_focus_out_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc
return EO_CALLBACK_CONTINUE; return EO_CALLBACK_CONTINUE;
} }
static Eina_Bool static Eina_Bool
_edje_mouse_in_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc EINA_UNUSED, void *event_info) _edje_mouse_in_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc EINA_UNUSED, void *event_info)
{ {
@ -65,13 +63,12 @@ _edje_mouse_in_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc E
rp = evas_object_data_get(obj, "real_part"); rp = evas_object_data_get(obj, "real_part");
if ((!rp) || if ((!rp) ||
((ev->event_flags) && ((ev->event_flags) &&
(rp->part->ignore_flags & ev->event_flags))) return EO_CALLBACK_CONTINUE; (rp->part->ignore_flags & ev->event_flags))) return EO_CALLBACK_CONTINUE;
_edje_emit(ed, "mouse,in", rp->part->name); _edje_emit(ed, "mouse,in", rp->part->name);
return EO_CALLBACK_CONTINUE; return EO_CALLBACK_CONTINUE;
} }
static Eina_Bool static Eina_Bool
_edje_mouse_out_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc EINA_UNUSED, void *event_info) _edje_mouse_out_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc EINA_UNUSED, void *event_info)
{ {
@ -84,13 +81,12 @@ _edje_mouse_out_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc
rp = evas_object_data_get(obj, "real_part"); rp = evas_object_data_get(obj, "real_part");
if ((!rp) || if ((!rp) ||
((ev->event_flags) && ((ev->event_flags) &&
(rp->part->ignore_flags & ev->event_flags))) return EO_CALLBACK_CONTINUE; (rp->part->ignore_flags & ev->event_flags))) return EO_CALLBACK_CONTINUE;
_edje_emit(ed, "mouse,out", rp->part->name); _edje_emit(ed, "mouse,out", rp->part->name);
return EO_CALLBACK_CONTINUE; return EO_CALLBACK_CONTINUE;
} }
static Eina_Bool static Eina_Bool
_edje_mouse_down_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc EINA_UNUSED, void *event_info) _edje_mouse_down_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc EINA_UNUSED, void *event_info)
{ {
@ -112,13 +108,13 @@ _edje_mouse_down_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc
if ((!ev->event_flags) || (!ignored)) if ((!ev->event_flags) || (!ignored))
{ {
if (ev->flags & EVAS_BUTTON_TRIPLE_CLICK) if (ev->flags & EVAS_BUTTON_TRIPLE_CLICK)
snprintf(buf, sizeof(buf), "mouse,down,%i,triple", ev->button); snprintf(buf, sizeof(buf), "mouse,down,%i,triple", ev->button);
else if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK) else if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK)
snprintf(buf, sizeof(buf), "mouse,down,%i,double", ev->button); snprintf(buf, sizeof(buf), "mouse,down,%i,double", ev->button);
else else
snprintf(buf, sizeof(buf), "mouse,down,%i", ev->button); snprintf(buf, sizeof(buf), "mouse,down,%i", ev->button);
_edje_emit(ed, buf, rp->part->name); _edje_emit(ed, buf, rp->part->name);
} }
if (rp->part->dragable.event_id >= 0) if (rp->part->dragable.event_id >= 0)
@ -133,25 +129,25 @@ _edje_mouse_down_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc
if (rp->drag) if (rp->drag)
{ {
if (rp->drag->down.count == 0) if (rp->drag->down.count == 0)
{ {
if (rp->part->dragable.x) if (rp->part->dragable.x)
rp->drag->down.x = ev->canvas.x; rp->drag->down.x = ev->canvas.x;
if (rp->part->dragable.y) if (rp->part->dragable.y)
rp->drag->down.y = ev->canvas.y; rp->drag->down.y = ev->canvas.y;
rp->drag->threshold_x = EINA_FALSE; rp->drag->threshold_x = EINA_FALSE;
rp->drag->threshold_y = EINA_FALSE; rp->drag->threshold_y = EINA_FALSE;
rp->drag->threshold_started_x = EINA_TRUE; rp->drag->threshold_started_x = EINA_TRUE;
rp->drag->threshold_started_y = EINA_TRUE; rp->drag->threshold_started_y = EINA_TRUE;
} }
rp->drag->down.count++; rp->drag->down.count++;
} }
if (rp->clicked_button == 0) if (rp->clicked_button == 0)
{ {
rp->clicked_button = ev->button; rp->clicked_button = ev->button;
if (!(ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)) if (!(ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD))
rp->still_in = EINA_TRUE; rp->still_in = EINA_TRUE;
} }
// _edje_recalc_do(ed); // _edje_recalc_do(ed);
_edje_util_thaw(ed); _edje_util_thaw(ed);
@ -160,7 +156,6 @@ _edje_mouse_down_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc
return EO_CALLBACK_CONTINUE; return EO_CALLBACK_CONTINUE;
} }
static Eina_Bool static Eina_Bool
_edje_mouse_up_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc EINA_UNUSED, void *event_info) _edje_mouse_up_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc EINA_UNUSED, void *event_info)
{ {
@ -182,47 +177,47 @@ _edje_mouse_up_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc E
if ((!ev->event_flags) || (!ignored)) if ((!ev->event_flags) || (!ignored))
{ {
snprintf(buf, sizeof(buf), "mouse,up,%i", ev->button); snprintf(buf, sizeof(buf), "mouse,up,%i", ev->button);
_edje_emit(ed, buf, rp->part->name); _edje_emit(ed, buf, rp->part->name);
} }
if (rp->part->dragable.event_id >= 0) if (rp->part->dragable.event_id >= 0)
{ {
rp = ed->table_parts[rp->part->dragable.event_id % ed->table_parts_size]; rp = ed->table_parts[rp->part->dragable.event_id % ed->table_parts_size];
if (!ignored) if (!ignored)
{ {
snprintf(buf, sizeof(buf), "mouse,up,%i", ev->button); snprintf(buf, sizeof(buf), "mouse,up,%i", ev->button);
_edje_emit(ed, buf, rp->part->name); _edje_emit(ed, buf, rp->part->name);
} }
} }
if (rp->drag) if (rp->drag)
{ {
if (rp->drag->down.count > 0) if (rp->drag->down.count > 0)
{ {
rp->drag->down.count--; rp->drag->down.count--;
if (rp->drag->down.count == 0) if (rp->drag->down.count == 0)
{ {
rp->drag->threshold_started_x = EINA_FALSE; rp->drag->threshold_started_x = EINA_FALSE;
rp->drag->threshold_started_y = EINA_FALSE; rp->drag->threshold_started_y = EINA_FALSE;
rp->drag->need_reset = 1; rp->drag->need_reset = 1;
ed->recalc_call = EINA_TRUE; ed->recalc_call = EINA_TRUE;
ed->dirty = EINA_TRUE; ed->dirty = EINA_TRUE;
#ifdef EDJE_CALC_CACHE #ifdef EDJE_CALC_CACHE
rp->invalidate = EINA_TRUE; rp->invalidate = EINA_TRUE;
#endif #endif
if (!ignored && rp->drag->started) if (!ignored && rp->drag->started)
_edje_emit(ed, "drag,stop", rp->part->name); _edje_emit(ed, "drag,stop", rp->part->name);
rp->drag->started = EINA_FALSE; rp->drag->started = EINA_FALSE;
_edje_recalc_do(ed); _edje_recalc_do(ed);
} }
} }
} }
if ((rp->still_in) && (rp->clicked_button == ev->button) && (!ignored)) if ((rp->still_in) && (rp->clicked_button == ev->button) && (!ignored))
{ {
snprintf(buf, sizeof(buf), "mouse,clicked,%i", ev->button); snprintf(buf, sizeof(buf), "mouse,clicked,%i", ev->button);
_edje_emit(ed, buf, rp->part->name); _edje_emit(ed, buf, rp->part->name);
} }
rp->clicked_button = 0; rp->clicked_button = 0;
rp->still_in = EINA_FALSE; rp->still_in = EINA_FALSE;
@ -234,7 +229,6 @@ _edje_mouse_up_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc E
return EO_CALLBACK_CONTINUE; return EO_CALLBACK_CONTINUE;
} }
static Eina_Bool static Eina_Bool
_edje_mouse_move_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc EINA_UNUSED, void *event_info) _edje_mouse_move_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc EINA_UNUSED, void *event_info)
{ {
@ -260,58 +254,57 @@ _edje_mouse_move_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc
if (rp->still_in) if (rp->still_in)
{ {
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
rp->still_in = EINA_FALSE; rp->still_in = EINA_FALSE;
else else
{ {
Evas_Coord x, y, w, h; Evas_Coord x, y, w, h;
evas_object_geometry_get(obj, &x, &y, &w, &h); evas_object_geometry_get(obj, &x, &y, &w, &h);
if ((ev->cur.canvas.x < x) || (ev->cur.canvas.y < y) || if ((ev->cur.canvas.x < x) || (ev->cur.canvas.y < y) ||
(ev->cur.canvas.x >= (x + w)) || (ev->cur.canvas.y >= (y + h))) (ev->cur.canvas.x >= (x + w)) || (ev->cur.canvas.y >= (y + h)))
rp->still_in = EINA_FALSE; rp->still_in = EINA_FALSE;
} }
} }
else else
{ {
if (!(ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)) if (!(ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD))
{ {
Evas_Coord x, y, w, h; Evas_Coord x, y, w, h;
evas_object_geometry_get(obj, &x, &y, &w, &h); evas_object_geometry_get(obj, &x, &y, &w, &h);
if ((ev->cur.canvas.x >= x) && (ev->cur.canvas.y >= y) && if ((ev->cur.canvas.x >= x) && (ev->cur.canvas.y >= y) &&
(ev->cur.canvas.x < (x + w)) && (ev->cur.canvas.y < (y + h))) (ev->cur.canvas.x < (x + w)) && (ev->cur.canvas.y < (y + h)))
rp->still_in = EINA_TRUE; rp->still_in = EINA_TRUE;
} }
} }
_edje_util_freeze(ed); _edje_util_freeze(ed);
if (rp->drag) if (rp->drag)
{ {
if (rp->drag->down.count > 0) if (rp->drag->down.count > 0)
{ {
if (rp->part->dragable.x) if (rp->part->dragable.x)
rp->drag->tmp.x = ev->cur.canvas.x - rp->drag->down.x; rp->drag->tmp.x = ev->cur.canvas.x - rp->drag->down.x;
if (rp->part->dragable.y) if (rp->part->dragable.y)
rp->drag->tmp.y = ev->cur.canvas.y - rp->drag->down.y; rp->drag->tmp.y = ev->cur.canvas.y - rp->drag->down.y;
ed->recalc_call = EINA_TRUE; ed->recalc_call = EINA_TRUE;
ed->dirty = EINA_TRUE; ed->dirty = EINA_TRUE;
#ifdef EDJE_CALC_CACHE #ifdef EDJE_CALC_CACHE
rp->invalidate = EINA_TRUE; rp->invalidate = EINA_TRUE;
#endif #endif
} }
_edje_recalc_do(ed); _edje_recalc_do(ed);
if (rp->drag->down.count > 0) if (rp->drag->down.count > 0)
{ {
FLOAT_T dx, dy; FLOAT_T dx, dy;
_edje_part_dragable_calc(ed, rp, &dx, &dy); _edje_part_dragable_calc(ed, rp, &dx, &dy);
if ((dx != rp->drag->val.x) || (dy != rp->drag->val.y)) if ((dx != rp->drag->val.x) || (dy != rp->drag->val.y))
{ {
rp->drag->val.x = dx; rp->drag->val.x = dx;
rp->drag->val.y = dy; rp->drag->val.y = dy;
if (!ignored) if (!ignored)
{ {
if (!rp->drag->started) if (!rp->drag->started)
_edje_emit(ed, "drag,start", rp->part->name); _edje_emit(ed, "drag,start", rp->part->name);
@ -319,13 +312,13 @@ _edje_mouse_move_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc
rp->drag->started = EINA_TRUE; rp->drag->started = EINA_TRUE;
} }
ed->recalc_call = EINA_TRUE; ed->recalc_call = EINA_TRUE;
ed->dirty = EINA_TRUE; ed->dirty = EINA_TRUE;
#ifdef EDJE_CALC_CACHE #ifdef EDJE_CALC_CACHE
rp->invalidate = EINA_TRUE; rp->invalidate = EINA_TRUE;
#endif #endif
_edje_recalc_do(ed); _edje_recalc_do(ed);
} }
} }
} }
_edje_unref(ed); _edje_unref(ed);
_edje_util_thaw(ed); _edje_util_thaw(ed);
@ -333,7 +326,6 @@ _edje_mouse_move_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc
return EO_CALLBACK_CONTINUE; return EO_CALLBACK_CONTINUE;
} }
static Eina_Bool static Eina_Bool
_edje_mouse_wheel_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc EINA_UNUSED, void *event_info) _edje_mouse_wheel_signal_cb(void *data, Eo *obj, const Eo_Event_Description *desc EINA_UNUSED, void *event_info)
{ {
@ -345,9 +337,9 @@ _edje_mouse_wheel_signal_cb(void *data, Eo *obj, const Eo_Event_Description *des
ev = event_info; ev = event_info;
ed = data; ed = data;
rp = evas_object_data_get(obj, "real_part"); rp = evas_object_data_get(obj, "real_part");
if ((!rp) || if ((!rp) ||
((ev->event_flags) && ((ev->event_flags) &&
(!(rp->part->ignore_flags & ev->event_flags)))) return EO_CALLBACK_CONTINUE; (!(rp->part->ignore_flags & ev->event_flags)))) return EO_CALLBACK_CONTINUE;
snprintf(buf, sizeof(buf), "mouse,wheel,%i,%i", ev->direction, (ev->z < 0) ? (-1) : (1)); snprintf(buf, sizeof(buf), "mouse,wheel,%i,%i", ev->direction, (ev->z < 0) ? (-1) : (1));
_edje_emit(ed, buf, rp->part->name); _edje_emit(ed, buf, rp->part->name);
@ -355,7 +347,6 @@ _edje_mouse_wheel_signal_cb(void *data, Eo *obj, const Eo_Event_Description *des
return EO_CALLBACK_CONTINUE; return EO_CALLBACK_CONTINUE;
} }
Eina_Bool Eina_Bool
_edje_timer_cb(void *data EINA_UNUSED) _edje_timer_cb(void *data EINA_UNUSED)
{ {
@ -367,64 +358,64 @@ _edje_timer_cb(void *data EINA_UNUSED)
t = ecore_loop_time_get(); t = ecore_loop_time_get();
EINA_LIST_FOREACH(_edje_animators, l, ed) EINA_LIST_FOREACH(_edje_animators, l, ed)
{ {
_edje_ref(ed); _edje_ref(ed);
animl = eina_list_append(animl, ed); animl = eina_list_append(animl, ed);
} }
while (animl) while (animl)
{ {
Eina_List *newl = NULL; Eina_List *newl = NULL;
ed = eina_list_data_get(animl); ed = eina_list_data_get(animl);
_edje_block(ed); _edje_block(ed);
_edje_util_freeze(ed); _edje_util_freeze(ed);
animl = eina_list_remove(animl, eina_list_data_get(animl)); animl = eina_list_remove(animl, eina_list_data_get(animl));
if ((!ed->paused) && (!ed->delete_me)) if ((!ed->paused) && (!ed->delete_me))
{ {
const void *tmp; const void *tmp;
ed->walking_actions = EINA_TRUE; ed->walking_actions = EINA_TRUE;
EINA_LIST_FOREACH(ed->actions, l, tmp) EINA_LIST_FOREACH(ed->actions, l, tmp)
newl = eina_list_append(newl, tmp); newl = eina_list_append(newl, tmp);
while (newl) while (newl)
{ {
Edje_Running_Program *runp; Edje_Running_Program *runp;
runp = eina_list_data_get(newl); runp = eina_list_data_get(newl);
newl = eina_list_remove(newl, eina_list_data_get(newl)); newl = eina_list_remove(newl, eina_list_data_get(newl));
if (!runp->delete_me) if (!runp->delete_me)
_edje_program_run_iterate(runp, t); _edje_program_run_iterate(runp, t);
if (_edje_block_break(ed)) if (_edje_block_break(ed))
{ {
eina_list_free(newl); eina_list_free(newl);
newl = NULL; newl = NULL;
goto break_prog; goto break_prog;
} }
} }
EINA_LIST_FOREACH(ed->actions, l, tmp) EINA_LIST_FOREACH(ed->actions, l, tmp)
newl = eina_list_append(newl, tmp); newl = eina_list_append(newl, tmp);
while (newl) while (newl)
{ {
Edje_Running_Program *runp; Edje_Running_Program *runp;
runp = eina_list_data_get(newl); runp = eina_list_data_get(newl);
newl = eina_list_remove(newl, eina_list_data_get(newl)); newl = eina_list_remove(newl, eina_list_data_get(newl));
if (runp->delete_me) if (runp->delete_me)
{ {
_edje_anim_count--; _edje_anim_count--;
runp->edje->actions = runp->edje->actions =
eina_list_remove(runp->edje->actions, runp); eina_list_remove(runp->edje->actions, runp);
if (!runp->edje->actions) if (!runp->edje->actions)
_edje_animators = _edje_animators =
eina_list_remove(_edje_animators, runp->edje); eina_list_remove(_edje_animators, runp->edje);
free(runp); free(runp);
} }
} }
ed->walking_actions = EINA_FALSE; ed->walking_actions = EINA_FALSE;
} }
break_prog: break_prog:
_edje_unblock(ed); _edje_unblock(ed);
_edje_util_thaw(ed); _edje_util_thaw(ed);
_edje_unref(ed); _edje_unref(ed);
} }
if (_edje_anim_count > 0) return ECORE_CALLBACK_RENEW; if (_edje_anim_count > 0) return ECORE_CALLBACK_RENEW;
_edje_timer = NULL; _edje_timer = NULL;
@ -483,3 +474,4 @@ _edje_callbacks_focus_del(Evas_Object *obj, Edje *ed)
eo_do(obj, eo_event_callback_array_del(edje_focus_callbacks(), ed)); eo_do(obj, eo_event_callback_array_del(edje_focus_callbacks(), ed));
evas_object_data_del(obj, "real_part"); evas_object_data_del(obj, "real_part");
} }

View File

@ -14,7 +14,8 @@ _edje_container_relayout(Smart_Data *sd)
if (!sd->need_layout) return; if (!sd->need_layout) return;
if (sd->w < sd->min_w) sw = sd->min_w; if (sd->w < sd->min_w) sw = sd->min_w;
else if (sd->w > sd->max_w) sw = sd->max_w; else if (sd->w > sd->max_w)
sw = sd->max_w;
else sw = sd->w; else sw = sd->w;
y = 0; y = 0;
@ -24,10 +25,10 @@ _edje_container_relayout(Smart_Data *sd)
EINA_LIST_FOREACH(sd->children, l, ei) EINA_LIST_FOREACH(sd->children, l, ei)
{ {
if (sd->homogenous) h = sd->min_row_h; if (sd->homogenous) h = sd->min_row_h;
ei->y = y; ei->y = y;
ei->h = h; ei->h = h;
// ei->w = w; // ei->w = w;
// ei->h = h; // ei->h = h;
} }
@ -57,16 +58,16 @@ _edje_container_recalc(Smart_Data *sd)
for (i = 0; i < sd->cols; i++) for (i = 0; i < sd->cols; i++)
{ {
sd->min_w += sd->colinfo[i].minw; sd->min_w += sd->colinfo[i].minw;
if (sd->colinfo[i].maxw >= 0) if (sd->colinfo[i].maxw >= 0)
{ {
if (sd->max_w >= 0) if (sd->max_w >= 0)
sd->max_w += sd->colinfo[i].maxw; sd->max_w += sd->colinfo[i].maxw;
else else
sd->max_w = sd->colinfo[i].maxw; sd->max_w = sd->colinfo[i].maxw;
} }
else else
any_max_w = 1; any_max_w = 1;
} }
if (any_max_w) sd->max_w = -1; if (any_max_w) sd->max_w = -1;
@ -77,37 +78,37 @@ _edje_container_recalc(Smart_Data *sd)
EINA_LIST_FOREACH(sd->children, l, ei) EINA_LIST_FOREACH(sd->children, l, ei)
{ {
if (ei->minh > sd->min_row_h) if (ei->minh > sd->min_row_h)
sd->min_row_h = ei->minh; sd->min_row_h = ei->minh;
if (sd->max_row_h >= 0) if (sd->max_row_h >= 0)
{ {
if (ei->maxh >= 0) if (ei->maxh >= 0)
{ {
if (sd->max_row_h > ei->maxh) if (sd->max_row_h > ei->maxh)
sd->max_row_h = ei->maxh; sd->max_row_h = ei->maxh;
} }
else else
any_max_h = 1; any_max_h = 1;
} }
sd->min_h += ei->minh; sd->min_h += ei->minh;
if (ei->maxh >= 0) if (ei->maxh >= 0)
{ {
if (sd->max_h >= 0) if (sd->max_h >= 0)
sd->max_h += ei->maxh; sd->max_h += ei->maxh;
else else
sd->max_h = ei->maxh; sd->max_h = ei->maxh;
} }
else else
any_max_h = 1; any_max_h = 1;
} }
if (any_max_h) if (any_max_h)
{ {
sd->max_h = -1; sd->max_h = -1;
sd->max_row_h = -1; sd->max_row_h = -1;
} }
if (sd->homogenous) if (sd->homogenous)
{ {
sd->min_h = eina_list_count(sd->children) * sd->min_row_h; sd->min_h = eina_list_count(sd->children) * sd->min_row_h;
} }
sd->changed = 0; sd->changed = 0;
@ -132,29 +133,29 @@ _edje_item_recalc(Edje_Item *ei)
ei->maxh = -1; ei->maxh = -1;
for (i = 0; i < ((Smart_Data *)(ei->sd))->cols; i++) for (i = 0; i < ((Smart_Data *)(ei->sd))->cols; i++)
{ {
if (ei->cells[i].minh > ei->minh) ei->minh = ei->cells[i].minh; if (ei->cells[i].minh > ei->minh) ei->minh = ei->cells[i].minh;
if (ei->cells[i].maxh >= 0) if (ei->cells[i].maxh >= 0)
{ {
if (ei->maxh >= 0) if (ei->maxh >= 0)
{ {
if (ei->cells[i].maxh < ei->maxh) if (ei->cells[i].maxh < ei->maxh)
ei->maxh = ei->cells[i].maxh; ei->maxh = ei->cells[i].maxh;
} }
else else
ei->maxh = ei->cells[i].maxh; ei->maxh = ei->cells[i].maxh;
} }
if (((Smart_Data *)(ei->sd))->colinfo[i].minw < ei->cells[i].minw) if (((Smart_Data *)(ei->sd))->colinfo[i].minw < ei->cells[i].minw)
((Smart_Data *)(ei->sd))->colinfo[i].minw = ei->cells[i].minw; ((Smart_Data *)(ei->sd))->colinfo[i].minw = ei->cells[i].minw;
if (((Smart_Data *)(ei->sd))->colinfo[i].maxw >= 0) if (((Smart_Data *)(ei->sd))->colinfo[i].maxw >= 0)
{ {
if (ei->cells[i].maxw >= 0) if (ei->cells[i].maxw >= 0)
{ {
if (((Smart_Data *)(ei->sd))->colinfo[i].maxw > ei->cells[i].maxw) if (((Smart_Data *)(ei->sd))->colinfo[i].maxw > ei->cells[i].maxw)
((Smart_Data *)(ei->sd))->colinfo[i].maxw = ei->cells[i].maxw; ((Smart_Data *)(ei->sd))->colinfo[i].maxw = ei->cells[i].maxw;
} }
} }
else else
((Smart_Data *)(ei->sd))->colinfo[i].maxw = ei->cells[i].maxw; ((Smart_Data *)(ei->sd))->colinfo[i].maxw = ei->cells[i].maxw;
} }
ei->recalc = EINA_FALSE; ei->recalc = EINA_FALSE;
@ -162,19 +163,18 @@ _edje_item_recalc(Edje_Item *ei)
_edje_container_recalc(ei->sd); _edje_container_recalc(ei->sd);
} }
/*****************************/ /*****************************/
/** /**
* @endcond * @endcond
*/ */
/*============================================================================* /*============================================================================*
* Global * * Global *
*============================================================================*/ *============================================================================*/
/*============================================================================* /*============================================================================*
* API * * API *
*============================================================================*/ *============================================================================*/
/** /**
* @addtogroup Edje_container_Group Container * @addtogroup Edje_container_Group Container
@ -311,15 +311,13 @@ edje_item_overlay_object_set(Edje_Item *ei, Evas_Object *obj)
{ {
if (ei->overlay_object) if (ei->overlay_object)
{ {
/* FIXME: if it changed - remove...*/ /* FIXME: if it changed - remove...*/
} }
ei->overlay_object = obj; ei->overlay_object = obj;
if (ei->sd) if (ei->sd)
evas_object_smart_member_add(((Smart_Data *)(ei->sd))->smart_obj, obj); evas_object_smart_member_add(((Smart_Data *)(ei->sd))->smart_obj, obj);
} }
Evas_Object * Evas_Object *
edje_item_overlay_object_get(Edje_Item *ei) edje_item_overlay_object_get(Edje_Item *ei)
{ {
@ -332,7 +330,7 @@ edje_item_object_set(Edje_Item *ei, Evas_Object *obj)
{ {
if (ei->object) if (ei->object)
{ {
/* FIXME: if it changed - remove...*/ /* FIXME: if it changed - remove...*/
} }
ei->object = obj; ei->object = obj;
if (ei->sd) if (ei->sd)
@ -351,9 +349,9 @@ edje_item_object_column_set(Edje_Item *ei, int col, Evas_Object *obj)
{ {
if (ei->cells_num <= (col + 1)) if (ei->cells_num <= (col + 1))
{ {
/* FIXME: unsafe realloc */ /* FIXME: unsafe realloc */
ei->cells = realloc(ei->cells, sizeof(Edje_Item_Cell) * col); ei->cells = realloc(ei->cells, sizeof(Edje_Item_Cell) * col);
ei->cells_num = col + 1; ei->cells_num = col + 1;
} }
ei->cells[col].obj = obj; ei->cells[col].obj = obj;
} }
@ -371,11 +369,11 @@ edje_item_geometry_get(Edje_Item *ei, Evas_Coord *x, Evas_Coord *y, Evas_Coord *
{ {
if (!ei->sd) if (!ei->sd)
{ {
if (x) *x = 0; if (x) *x = 0;
if (y) *y = 0; if (y) *y = 0;
if (w) *w = 0; if (w) *w = 0;
if (h) *h = 0; if (h) *h = 0;
return; return;
} }
if (x) *x = ((Smart_Data *)(ei->sd))->x; if (x) *x = ((Smart_Data *)(ei->sd))->x;
if (y) *y = ((Smart_Data *)(ei->sd))->y + ei->y; if (y) *y = ((Smart_Data *)(ei->sd))->y + ei->y;
@ -407,9 +405,9 @@ edje_item_column_size_set(Edje_Item *ei, int col, Evas_Coord minw, Evas_Coord ma
{ {
if (ei->cells_num <= (col + 1)) if (ei->cells_num <= (col + 1))
{ {
/* FIXME: unsafe realloc */ /* FIXME: unsafe realloc */
ei->cells = realloc(ei->cells, sizeof(Edje_Item_Cell) * col); ei->cells = realloc(ei->cells, sizeof(Edje_Item_Cell) * col);
ei->cells_num = col + 1; ei->cells_num = col + 1;
} }
if ((ei->cells[col].minw == minw) && if ((ei->cells[col].minw == minw) &&
(ei->cells[col].minh == minh) && (ei->cells[col].minh == minh) &&
@ -422,8 +420,8 @@ edje_item_column_size_set(Edje_Item *ei, int col, Evas_Coord minw, Evas_Coord ma
ei->recalc = EINA_TRUE; ei->recalc = EINA_TRUE;
if (ei->sd) if (ei->sd)
{ {
((Smart_Data *)(ei->sd))->changed = 1; ((Smart_Data *)(ei->sd))->changed = 1;
((Smart_Data *)(ei->sd))->change_child = 1; ((Smart_Data *)(ei->sd))->change_child = 1;
} }
_edje_item_recalc(ei); _edje_item_recalc(ei);
} }
@ -433,10 +431,10 @@ edje_item_column_size_get(Edje_Item *ei, int col, Evas_Coord *minw, Evas_Coord *
{ {
if (ei->cells_num <= (col + 1)) if (ei->cells_num <= (col + 1))
{ {
if (minw) *minw = 0; if (minw) *minw = 0;
if (minh) *minh = 0; if (minh) *minh = 0;
if (maxw) *maxw = -1; if (maxw) *maxw = -1;
if (maxh) *maxh = -1; if (maxh) *maxh = -1;
} }
if (minw) *minw = ei->cells[col].minw; if (minw) *minw = ei->cells[col].minw;
if (minh) *minh = ei->cells[col].minh; if (minh) *minh = ei->cells[col].minh;
@ -629,13 +627,13 @@ edje_container_columns_set(Evas_Object *obj, int cols)
sd->colinfo = realloc(sd->colinfo, cols * sizeof(Smart_Data_Colinfo)); sd->colinfo = realloc(sd->colinfo, cols * sizeof(Smart_Data_Colinfo));
if (cols > sd->cols) if (cols > sd->cols)
{ {
int i; int i;
for (i = sd->cols; i < cols; i++) for (i = sd->cols; i < cols; i++)
{ {
sd->colinfo[i].minw = 0; sd->colinfo[i].minw = 0;
sd->colinfo[i].maxw = -1; sd->colinfo[i].maxw = -1;
} }
} }
sd->cols = cols; sd->cols = cols;
sd->changed = 1; sd->changed = 1;
@ -662,12 +660,12 @@ edje_container_min_size_get(Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh
if (!sd) return; if (!sd) return;
if (sd->changed) if (sd->changed)
{ {
int freeze; int freeze;
freeze = sd->freeze; freeze = sd->freeze;
sd->freeze = 0; sd->freeze = 0;
_edje_container_recalc(sd); _edje_container_recalc(sd);
sd->freeze = freeze; sd->freeze = freeze;
} }
if (minw) *minw = sd->min_w; if (minw) *minw = sd->min_w;
if (minh) *minh = sd->min_h; if (minh) *minh = sd->min_h;
@ -682,12 +680,12 @@ edje_container_max_size_get(Evas_Object *obj, Evas_Coord *maxw, Evas_Coord *maxh
if (!sd) return; if (!sd) return;
if (sd->changed) if (sd->changed)
{ {
int freeze; int freeze;
freeze = sd->freeze; freeze = sd->freeze;
sd->freeze = 0; sd->freeze = 0;
_edje_container_recalc(sd); _edje_container_recalc(sd);
sd->freeze = freeze; sd->freeze = freeze;
} }
if (maxw) *maxw = sd->max_w; if (maxw) *maxw = sd->max_w;
if (maxh) *maxh = sd->max_h; if (maxh) *maxh = sd->max_h;
@ -811,17 +809,17 @@ edje_container_scroll_get(Evas_Object *obj, double *pos, double *shift)
} }
static void _smart_init(void); static void _smart_init(void);
static void _smart_add(Evas_Object * obj); static void _smart_add(Evas_Object *obj);
static void _smart_del(Evas_Object * obj); static void _smart_del(Evas_Object *obj);
static void _smart_move(Evas_Object * obj, Evas_Coord x, Evas_Coord y); static void _smart_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y);
static void _smart_resize(Evas_Object * obj, Evas_Coord w, Evas_Coord h); static void _smart_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h);
static void _smart_show(Evas_Object * obj); static void _smart_show(Evas_Object *obj);
static void _smart_hide(Evas_Object * obj); static void _smart_hide(Evas_Object *obj);
static void _smart_color_set(Evas_Object * obj, int r, int g, int b, int a); static void _smart_color_set(Evas_Object *obj, int r, int g, int b, int a);
static void _smart_clip_set(Evas_Object * obj, Evas_Object * clip); static void _smart_clip_set(Evas_Object *obj, Evas_Object *clip);
static void _smart_clip_unset(Evas_Object * obj); static void _smart_clip_unset(Evas_Object *obj);
static Evas_Smart *smart = NULL; static Evas_Smart *smart = NULL;
Evas_Object * Evas_Object *
edje_container_object_add(Evas *evas) edje_container_object_add(Evas *evas)
@ -837,25 +835,25 @@ static void
_smart_init(void) _smart_init(void)
{ {
if (smart) return; if (smart) return;
{ {
static const Evas_Smart_Class sc = static const Evas_Smart_Class sc =
{ {
E_OBJ_NAME, E_OBJ_NAME,
_smart_add, _smart_add,
_smart_del, _smart_del,
_smart_move, _smart_move,
_smart_resize, _smart_resize,
_smart_show, _smart_show,
_smart_hide, _smart_hide,
_smart_color_set, _smart_color_set,
_smart_clip_set, _smart_clip_set,
_smart_clip_unset, _smart_clip_unset,
NULL, NULL,
NULL, NULL,
NULL NULL
}; };
smart = evas_smart_class_new(&sc); smart = evas_smart_class_new(&sc);
} }
} }
static void static void

View File

@ -34,7 +34,7 @@ _edje_collection_string_free(void *data)
{ {
Edje_File *edf; Edje_File *edf;
edf = (Edje_File*) _edje_file_get(); edf = (Edje_File *)_edje_file_get();
if (!edf->warning) if (!edf->warning)
CRI("This program as probably called edje_shutdown() with " CRI("This program as probably called edje_shutdown() with "
@ -78,8 +78,8 @@ _edje_file_convert_external(Edje_File *edf, Old_Edje_File *oedf)
EINA_LIST_FREE(oedf->external_dir->entries, ede) EINA_LIST_FREE(oedf->external_dir->entries, ede)
{ {
edf->external_dir->entries[i++].entry = ede->entry; edf->external_dir->entries[i++].entry = ede->entry;
free(ede); free(ede);
} }
free(oedf->external_dir); free(oedf->external_dir);
@ -113,10 +113,10 @@ _edje_file_convert_images(Edje_File *edf, Old_Edje_File *oedf)
EINA_LIST_FREE(oedf->image_dir->entries, de) EINA_LIST_FREE(oedf->image_dir->entries, de)
{ {
memcpy(edf->image_dir->entries + de->id, memcpy(edf->image_dir->entries + de->id,
de, de,
sizeof (Edje_Image_Directory_Entry)); sizeof (Edje_Image_Directory_Entry));
free(de); free(de);
} }
max = -1; max = -1;
@ -129,17 +129,17 @@ _edje_file_convert_images(Edje_File *edf, Old_Edje_File *oedf)
if (!edf->image_dir->sets && edf->image_dir->sets_count) if (!edf->image_dir->sets && edf->image_dir->sets_count)
{ {
free(edf->image_dir->entries); free(edf->image_dir->entries);
edf->image_dir->entries = NULL; edf->image_dir->entries = NULL;
return EINA_FALSE; return EINA_FALSE;
} }
EINA_LIST_FREE(oedf->image_dir->sets, ds) EINA_LIST_FREE(oedf->image_dir->sets, ds)
{ {
memcpy(edf->image_dir->sets + ds->id, memcpy(edf->image_dir->sets + ds->id,
ds, ds,
sizeof (Edje_Image_Directory_Set)); sizeof (Edje_Image_Directory_Set));
free(ds); free(ds);
} }
return EINA_TRUE; return EINA_TRUE;
@ -161,15 +161,15 @@ _edje_file_convert(Eet_File *file, Old_Edje_File *oedf)
if (edf->free_strings) if (edf->free_strings)
{ {
edf->fonts = eina_hash_string_small_new(_edje_font_string_free); edf->fonts = eina_hash_string_small_new(_edje_font_string_free);
edf->collection = eina_hash_string_small_new(_edje_collection_string_free); edf->collection = eina_hash_string_small_new(_edje_collection_string_free);
edf->data = eina_hash_string_small_new((Eina_Free_Cb) eina_stringshare_del); edf->data = eina_hash_string_small_new((Eina_Free_Cb)eina_stringshare_del);
} }
else else
{ {
edf->fonts = eina_hash_string_small_new(free); edf->fonts = eina_hash_string_small_new(free);
edf->collection = eina_hash_string_small_new(free); edf->collection = eina_hash_string_small_new(free);
edf->data = eina_hash_string_small_new(NULL); edf->data = eina_hash_string_small_new(NULL);
} }
if (!edf->fonts || !edf->collection || !edf->data) if (!edf->fonts || !edf->collection || !edf->data)
@ -177,8 +177,8 @@ _edje_file_convert(Eet_File *file, Old_Edje_File *oedf)
EINA_LIST_FREE(oedf->data, ed) EINA_LIST_FREE(oedf->data, ed)
{ {
eina_hash_direct_add(edf->data, ed->key, ed->value); eina_hash_direct_add(edf->data, ed->key, ed->value);
free(ed); free(ed);
} }
EINA_LIST_FOREACH(oedf->collection_dir->entries, l, ce) EINA_LIST_FOREACH(oedf->collection_dir->entries, l, ce)
@ -188,19 +188,19 @@ _edje_file_convert(Eet_File *file, Old_Edje_File *oedf)
if (oedf->font_dir) if (oedf->font_dir)
EINA_LIST_FOREACH(oedf->font_dir->entries, l, fnt) EINA_LIST_FOREACH(oedf->font_dir->entries, l, fnt)
{ {
char *tmp; char *tmp;
int length; int length;
length = strlen(fnt->entry) + 7; length = strlen(fnt->entry) + 7;
tmp = alloca(length); tmp = alloca(length);
snprintf(tmp, length, "fonts/%s", fnt->entry); snprintf(tmp, length, "fonts/%s", fnt->entry);
fnt->path = eina_stringshare_add(tmp); fnt->path = eina_stringshare_add(tmp);
if (edf->free_strings) if (edf->free_strings)
eina_stringshare_del(fnt->entry); eina_stringshare_del(fnt->entry);
fnt->entry = fnt->path + 6; fnt->entry = fnt->path + 6;
eina_hash_direct_add(edf->fonts, fnt->entry, fnt); eina_hash_direct_add(edf->fonts, fnt->entry, fnt);
} }
if (!_edje_file_convert_images(edf, oedf)) if (!_edje_file_convert_images(edf, oedf))
@ -226,7 +226,7 @@ _edje_file_convert(Eet_File *file, Old_Edje_File *oedf)
return edf; return edf;
on_error: on_error:
eina_hash_free(edf->fonts); eina_hash_free(edf->fonts);
eina_hash_free(edf->collection); eina_hash_free(edf->collection);
eina_hash_free(edf->data); eina_hash_free(edf->data);
@ -238,12 +238,12 @@ _edje_file_convert(Eet_File *file, Old_Edje_File *oedf)
static void static void
_edje_collection_program_add(Edje_Program ***array, _edje_collection_program_add(Edje_Program ***array,
unsigned int *count, unsigned int *count,
Edje_Program *add) Edje_Program *add)
{ {
Edje_Program **tmp; Edje_Program **tmp;
tmp = realloc(*array, sizeof (Edje_Program*) * (*count + 1)); tmp = realloc(*array, sizeof (Edje_Program *) * (*count + 1));
if (!tmp) return; if (!tmp) return;
tmp[(*count)++] = add; tmp[(*count)++] = add;
@ -266,37 +266,37 @@ _edje_collection_convert(Edje_File *file, Old_Edje_Part_Collection *oedc)
/* Count each type part and their respective state */ /* Count each type part and their respective state */
EINA_LIST_FOREACH(oedc->parts, l, part) EINA_LIST_FOREACH(oedc->parts, l, part)
{ {
int *count; int *count;
int dummy = 0; int dummy = 0;
switch (part->type)
{
#define CSP(Tp, Ce) \
case EDJE_PART_TYPE_##Tp: \
count = &Ce->count.Tp; \
break;
switch (part->type) CSP(RECTANGLE, ce);
{ CSP(TEXT, ce);
#define CSP(Tp, Ce) \ CSP(IMAGE, ce);
case EDJE_PART_TYPE_##Tp : \ CSP(SWALLOW, ce);
count = &Ce->count.Tp; \ CSP(TEXTBLOCK, ce);
break; CSP(GROUP, ce);
CSP(BOX, ce);
CSP(TABLE, ce);
CSP(EXTERNAL, ce);
CSP(RECTANGLE, ce); default:
CSP(TEXT, ce); count = &dummy;
CSP(IMAGE, ce); break;
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; *count += eina_list_count(part->other_desc) + 1;
} }
ce->count.part = eina_list_count(oedc->parts); ce->count.part = eina_list_count(oedc->parts);
#define CONVERT_EMN(Tp, Sz, Ce) \ #define CONVERT_EMN(Tp, Sz, Ce) \
Ce->mp.Tp = eina_mempool_add("one_big", #Tp, NULL, sizeof (Sz), Ce->count.Tp); Ce->mp.Tp = eina_mempool_add("one_big", #Tp, NULL, sizeof (Sz), Ce->count.Tp);
CONVERT_EMN(RECTANGLE, Edje_Part_Description_Common, ce); CONVERT_EMN(RECTANGLE, Edje_Part_Description_Common, ce);
CONVERT_EMN(TEXT, Edje_Part_Description_Text, ce); CONVERT_EMN(TEXT, Edje_Part_Description_Text, ce);
@ -316,36 +316,36 @@ _edje_collection_convert(Edje_File *file, Old_Edje_Part_Collection *oedc)
EINA_LIST_FREE(oedc->programs, pg) EINA_LIST_FREE(oedc->programs, pg)
{ {
if (!pg->signal && !pg->source) if (!pg->signal && !pg->source)
_edje_collection_program_add(&edc->programs.nocmp, _edje_collection_program_add(&edc->programs.nocmp,
&edc->programs.nocmp_count, &edc->programs.nocmp_count,
pg); pg);
else if (pg->signal && !strpbrk(pg->signal, "*?[\\") else if (pg->signal && !strpbrk(pg->signal, "*?[\\")
&& pg->source && !strpbrk(pg->source, "*?[\\")) && pg->source && !strpbrk(pg->source, "*?[\\"))
_edje_collection_program_add(&edc->programs.strcmp, _edje_collection_program_add(&edc->programs.strcmp,
&edc->programs.strcmp_count, &edc->programs.strcmp_count,
pg); pg);
else if (pg->signal && edje_program_is_strncmp(pg->signal) else if (pg->signal && edje_program_is_strncmp(pg->signal)
&& pg->source && edje_program_is_strncmp(pg->source)) && pg->source && edje_program_is_strncmp(pg->source))
_edje_collection_program_add(&edc->programs.strncmp, _edje_collection_program_add(&edc->programs.strncmp,
&edc->programs.strncmp_count, &edc->programs.strncmp_count,
pg); pg);
else if (pg->signal && edje_program_is_strrncmp(pg->signal) else if (pg->signal && edje_program_is_strrncmp(pg->signal)
&& pg->source && edje_program_is_strrncmp(pg->source)) && pg->source && edje_program_is_strrncmp(pg->source))
_edje_collection_program_add(&edc->programs.strrncmp, _edje_collection_program_add(&edc->programs.strrncmp,
&edc->programs.strrncmp_count, &edc->programs.strrncmp_count,
pg); pg);
else else
_edje_collection_program_add(&edc->programs.fnmatch, _edje_collection_program_add(&edc->programs.fnmatch,
&edc->programs.fnmatch_count, &edc->programs.fnmatch_count,
pg); pg);
} }
edc->data = eina_hash_string_small_new(NULL); edc->data = eina_hash_string_small_new(NULL);
EINA_LIST_FREE(oedc->data, di) EINA_LIST_FREE(oedc->data, di)
{ {
eina_hash_direct_add(edc->data, di->key, di->value); eina_hash_direct_add(edc->data, di->key, di->value);
free(di); free(di);
} }
edc->parts_count = eina_list_count(oedc->parts); edc->parts_count = eina_list_count(oedc->parts);
@ -354,56 +354,56 @@ _edje_collection_convert(Edje_File *file, Old_Edje_Part_Collection *oedc)
EINA_LIST_FREE(oedc->parts, part) EINA_LIST_FREE(oedc->parts, part)
{ {
Old_Edje_Part_Description *oepd; Old_Edje_Part_Description *oepd;
Edje_Pack_Element *elm; Edje_Pack_Element *elm;
Edje_Part *replacement; Edje_Part *replacement;
unsigned int i; unsigned int i;
replacement = eina_mempool_malloc(ce->mp.part, sizeof (Edje_Part)); replacement = eina_mempool_malloc(ce->mp.part, sizeof (Edje_Part));
replacement->name = part->name; replacement->name = part->name;
replacement->default_desc = _edje_description_convert(part->type, ce, part->default_desc); replacement->default_desc = _edje_description_convert(part->type, ce, part->default_desc);
replacement->other_count = eina_list_count(part->other_desc); replacement->other_count = eina_list_count(part->other_desc);
replacement->other_desc = calloc(replacement->other_count, sizeof (Edje_Part_Description_Common*)); replacement->other_desc = calloc(replacement->other_count, sizeof (Edje_Part_Description_Common *));
i = 0; i = 0;
EINA_LIST_FREE(part->other_desc, oepd) EINA_LIST_FREE(part->other_desc, oepd)
replacement->other_desc[i++] = _edje_description_convert(part->type, ce, oepd); replacement->other_desc[i++] = _edje_description_convert(part->type, ce, oepd);
replacement->source = part->source; replacement->source = part->source;
replacement->source2 = part->source2; replacement->source2 = part->source2;
replacement->source3 = part->source3; replacement->source3 = part->source3;
replacement->source4 = part->source4; replacement->source4 = part->source4;
replacement->source5 = part->source5; replacement->source5 = part->source5;
replacement->source6 = part->source6; replacement->source6 = part->source6;
replacement->id = part->id; replacement->id = part->id;
replacement->clip_to_id = part->clip_to_id; replacement->clip_to_id = part->clip_to_id;
replacement->dragable = part->dragable; replacement->dragable = part->dragable;
replacement->items_count = eina_list_count(part->items); replacement->items_count = eina_list_count(part->items);
replacement->items = calloc(replacement->items_count, sizeof (Edje_Pack_Element*)); replacement->items = calloc(replacement->items_count, sizeof (Edje_Pack_Element *));
i = 0; i = 0;
EINA_LIST_FREE(part->items, elm) EINA_LIST_FREE(part->items, elm)
replacement->items[i++] = elm; replacement->items[i++] = elm;
replacement->type = part->type; replacement->type = part->type;
replacement->effect = part->effect; replacement->effect = part->effect;
replacement->mouse_events = part->mouse_events; replacement->mouse_events = part->mouse_events;
replacement->repeat_events = part->repeat_events; replacement->repeat_events = part->repeat_events;
replacement->ignore_flags = part->ignore_flags; replacement->ignore_flags = part->ignore_flags;
replacement->scale = part->scale; replacement->scale = part->scale;
replacement->precise_is_inside = part->precise_is_inside; replacement->precise_is_inside = part->precise_is_inside;
replacement->use_alternate_font_metrics = part->use_alternate_font_metrics; replacement->use_alternate_font_metrics = part->use_alternate_font_metrics;
replacement->pointer_mode = part->pointer_mode; replacement->pointer_mode = part->pointer_mode;
replacement->entry_mode = part->entry_mode; replacement->entry_mode = part->entry_mode;
replacement->select_mode = part->select_mode; replacement->select_mode = part->select_mode;
replacement->multiline = part->multiline; replacement->multiline = part->multiline;
replacement->api = part->api; replacement->api = part->api;
edc->parts[k++] = replacement; edc->parts[k++] = replacement;
free(part); free(part);
} }
edc->id = oedc->id; edc->id = oedc->id;
@ -420,75 +420,77 @@ _edje_collection_convert(Edje_File *file, Old_Edje_Part_Collection *oedc)
return edc; return edc;
} }
Edje_Part_Description_Common* Edje_Part_Description_Common *
_edje_description_convert(int type, _edje_description_convert(int type,
Edje_Part_Collection_Directory_Entry *ce, Edje_Part_Collection_Directory_Entry *ce,
Old_Edje_Part_Description *oed) Old_Edje_Part_Description *oed)
{ {
Edje_Part_Description_Common *result = NULL; Edje_Part_Description_Common *result = NULL;
switch (type) switch (type)
{ {
case EDJE_PART_TYPE_RECTANGLE: case EDJE_PART_TYPE_RECTANGLE:
result = eina_mempool_malloc(ce->mp.RECTANGLE, result = eina_mempool_malloc(ce->mp.RECTANGLE,
sizeof (Edje_Part_Description_Common)); sizeof (Edje_Part_Description_Common));
break; break;
case EDJE_PART_TYPE_SWALLOW: case EDJE_PART_TYPE_SWALLOW:
result = eina_mempool_malloc(ce->mp.SWALLOW, result = eina_mempool_malloc(ce->mp.SWALLOW,
sizeof (Edje_Part_Description_Common)); sizeof (Edje_Part_Description_Common));
break; break;
case EDJE_PART_TYPE_GROUP: case EDJE_PART_TYPE_GROUP:
result = eina_mempool_malloc(ce->mp.GROUP, result = eina_mempool_malloc(ce->mp.GROUP,
sizeof (Edje_Part_Description_Common)); sizeof (Edje_Part_Description_Common));
break; break;
case EDJE_PART_TYPE_IMAGE: case EDJE_PART_TYPE_IMAGE:
{ {
Edje_Part_Description_Image *img; Edje_Part_Description_Image *img;
Edje_Part_Image_Id *id; Edje_Part_Image_Id *id;
unsigned int i = 0; unsigned int i = 0;
img = eina_mempool_malloc(ce->mp.IMAGE, sizeof (Edje_Part_Description_Image)); 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_count = eina_list_count(oed->image.tween_list);
img->image.tweens = calloc(img->image.tweens_count, img->image.tweens = calloc(img->image.tweens_count,
sizeof (Edje_Part_Image_Id*)); sizeof (Edje_Part_Image_Id *));
if (img->image.tweens_count > 0 && !img->image.tweens) if (img->image.tweens_count > 0 && !img->image.tweens)
{ {
eina_mempool_free(ce->mp.IMAGE, img); eina_mempool_free(ce->mp.IMAGE, img);
return NULL; return NULL;
} }
EINA_LIST_FREE(oed->image.tween_list, id) EINA_LIST_FREE(oed->image.tween_list, id)
img->image.tweens[i++] = id; img->image.tweens[i++] = id;
img->image.id = oed->image.id; img->image.id = oed->image.id;
img->image.scale_hint = oed->image.scale_hint; img->image.scale_hint = oed->image.scale_hint;
img->image.set = oed->image.set; img->image.set = oed->image.set;
img->image.border = oed->image.border; img->image.border = oed->image.border;
img->image.fill = oed->image.fill; img->image.fill = oed->image.fill;
result = &img->common; result = &img->common;
break; break;
} }
#define CONVERT_ALLOC_POOL(Short, Type, Name) \ #define CONVERT_ALLOC_POOL(Short, Type, Name) \
case EDJE_PART_TYPE_##Short: \ case EDJE_PART_TYPE_##Short: \
{ \ { \
Edje_Part_Description_##Type *Name; \ Edje_Part_Description_##Type * Name; \
\ \
Name = eina_mempool_malloc(ce->mp.Short, sizeof (Edje_Part_Description_##Type)); \ Name = eina_mempool_malloc(ce->mp.Short, sizeof (Edje_Part_Description_##Type)); \
Name->Name = oed->Name; \ Name->Name = oed->Name; \
result = &Name->common; \ result = &Name->common; \
break; \ break; \
} }
CONVERT_ALLOC_POOL(TEXT, Text, text); CONVERT_ALLOC_POOL(TEXT, Text, text);
CONVERT_ALLOC_POOL(TEXTBLOCK, Text, text); CONVERT_ALLOC_POOL(TEXTBLOCK, Text, text);
CONVERT_ALLOC_POOL(BOX, Box, box); CONVERT_ALLOC_POOL(BOX, Box, box);
CONVERT_ALLOC_POOL(TABLE, Table, table); CONVERT_ALLOC_POOL(TABLE, Table, table);
CONVERT_ALLOC_POOL(EXTERNAL, External, external_params); CONVERT_ALLOC_POOL(EXTERNAL, External, external_params);
} }
*result = oed->common; *result = oed->common;
@ -496,3 +498,4 @@ _edje_description_convert(int type,
free(oed); free(oed);
return result; return result;
} }

View File

@ -1,7 +1,7 @@
#include "edje_private.h" #include "edje_private.h"
EAPI Eet_Data_Descriptor *_edje_edd_edje_file = NULL; EAPI Eet_Data_Descriptor * _edje_edd_edje_file = NULL;
EAPI Eet_Data_Descriptor *_edje_edd_edje_part_collection = NULL; EAPI Eet_Data_Descriptor * _edje_edd_edje_part_collection = NULL;
Eet_Data_Descriptor *_edje_edd_edje_string = NULL; Eet_Data_Descriptor *_edje_edd_edje_string = NULL;
Eet_Data_Descriptor *_edje_edd_edje_style = NULL; Eet_Data_Descriptor *_edje_edd_edje_style = NULL;
@ -75,23 +75,23 @@ Eet_Data_Descriptor *_edje_edd_edje_physics_face = NULL;
Eet_Data_Descriptor *_edje_edd_edje_map_colors = NULL; Eet_Data_Descriptor *_edje_edd_edje_map_colors = NULL;
Eet_Data_Descriptor *_edje_edd_edje_map_colors_pointer = NULL; Eet_Data_Descriptor *_edje_edd_edje_map_colors_pointer = NULL;
#define EMP(Type, Minus) \ #define EMP(Type, Minus) \
EAPI Eina_Mempool *_emp_##Type = NULL; \ EAPI Eina_Mempool *_emp_##Type = NULL; \
\ \
static void * \ static void * \
mem_alloc_##Minus(size_t size) \ mem_alloc_##Minus(size_t size) \
{ \ { \
void *data; \ void *data; \
\ \
data = eina_mempool_malloc(_emp_##Type, size); \ data = eina_mempool_malloc(_emp_##Type, size); \
memset(data, 0, size); \ memset(data, 0, size); \
return data; \ return data; \
} \ } \
\ \
static void \ static void \
mem_free_##Minus(void *data) \ mem_free_##Minus(void *data) \
{ \ { \
eina_mempool_free(_emp_##Type, data); \ eina_mempool_free(_emp_##Type, data); \
} }
EMP(RECTANGLE, rectangle); EMP(RECTANGLE, rectangle);
@ -114,47 +114,48 @@ EAPI Eina_Mempool *_emp_part = NULL;
static void * static void *
mem_alloc_part(size_t size) mem_alloc_part(size_t size)
{ {
Edje_Part *ep; Edje_Part *ep;
ep = eina_mempool_malloc(_emp_part, size); ep = eina_mempool_malloc(_emp_part, size);
memset(ep, 0, size); memset(ep, 0, size);
// This value need to be defined for older file that didn't provide it // This value need to be defined for older file that didn't provide it
// as it should -1 by default instead of 0. // as it should -1 by default instead of 0.
ep->dragable.threshold_id = -1; ep->dragable.threshold_id = -1;
return ep; return ep;
} }
static void static void
mem_free_part(void *data) mem_free_part(void *data)
{ {
eina_mempool_free(_emp_part, data); eina_mempool_free(_emp_part, data);
} }
#define FREED(eed) \ #define FREED(eed) \
if (eed) \ if (eed) \
{ \ { \
eet_data_descriptor_free((eed)); \ eet_data_descriptor_free((eed)); \
(eed) = NULL; \ (eed) = NULL; \
} }
struct { struct
{
Edje_Part_Type type; Edje_Part_Type type;
const char *name; const char *name;
} variant_convertion[] = { } variant_convertion[] = {
{ EDJE_PART_TYPE_RECTANGLE, "rectangle" }, { EDJE_PART_TYPE_RECTANGLE, "rectangle" },
{ EDJE_PART_TYPE_SWALLOW, "swallow" }, { EDJE_PART_TYPE_SWALLOW, "swallow" },
{ EDJE_PART_TYPE_GROUP, "group" }, { EDJE_PART_TYPE_GROUP, "group" },
{ EDJE_PART_TYPE_IMAGE, "image" }, { EDJE_PART_TYPE_IMAGE, "image" },
{ EDJE_PART_TYPE_TEXT, "text" }, { EDJE_PART_TYPE_TEXT, "text" },
{ EDJE_PART_TYPE_TEXTBLOCK, "textblock" }, { EDJE_PART_TYPE_TEXTBLOCK, "textblock" },
{ EDJE_PART_TYPE_BOX, "box" }, { EDJE_PART_TYPE_BOX, "box" },
{ EDJE_PART_TYPE_TABLE, "table" }, { EDJE_PART_TYPE_TABLE, "table" },
{ EDJE_PART_TYPE_EXTERNAL, "external" }, { EDJE_PART_TYPE_EXTERNAL, "external" },
{ EDJE_PART_TYPE_PROXY, "proxy" }, { EDJE_PART_TYPE_PROXY, "proxy" },
{ EDJE_PART_TYPE_SPACER, "spacer" }, { EDJE_PART_TYPE_SPACER, "spacer" },
{ EDJE_PART_TYPE_MESH_NODE, "mesh_node" }, { EDJE_PART_TYPE_MESH_NODE, "mesh_node" },
{ EDJE_PART_TYPE_LIGHT, "light" }, { EDJE_PART_TYPE_LIGHT, "light" },
{ EDJE_PART_TYPE_CAMERA, "camera" } { EDJE_PART_TYPE_CAMERA, "camera" }
}; };
static const char * static const char *
@ -183,17 +184,17 @@ _edje_description_variant_type_set(const char *type, void *data, Eina_Bool unkno
for (i = 0; i < (sizeof (variant_convertion) / sizeof (variant_convertion[0])); ++i) for (i = 0; i < (sizeof (variant_convertion) / sizeof (variant_convertion[0])); ++i)
if (!strcmp(variant_convertion[i].name, type)) if (!strcmp(variant_convertion[i].name, type))
{ {
*dt = variant_convertion[i].type; *dt = variant_convertion[i].type;
return EINA_TRUE; return EINA_TRUE;
} }
return EINA_FALSE; return EINA_FALSE;
} }
static Eina_Hash * static Eina_Hash *
_edje_eina_hash_add_alloc(Eina_Hash *hash, _edje_eina_hash_add_alloc(Eina_Hash *hash,
const char *key, const char *key,
void *data) void *data)
{ {
if (!hash) if (!hash)
hash = eina_hash_string_small_new(free); hash = eina_hash_string_small_new(free);
@ -285,19 +286,19 @@ _edje_edd_shutdown(void)
FREED(_edje_edd_edje_part_collection); FREED(_edje_edd_edje_part_collection);
} }
#define EDJE_DEFINE_POINTER_TYPE(Type, Name) \ #define EDJE_DEFINE_POINTER_TYPE(Type, Name) \
{ \ { \
typedef struct _Edje_##Type##_Pointer Edje_##Type##_Pointer; \ typedef struct _Edje_##Type##_Pointer Edje_##Type## _Pointer; \
struct _Edje_##Type##_Pointer \ struct _Edje_##Type##_Pointer \
{ \ { \
Edje_##Type *pointer; \ Edje_##Type * pointer; \
}; \ }; \
\ \
EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_##Type##_Pointer); \ EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_##Type##_Pointer); \
_edje_edd_edje_##Name##_pointer = \ _edje_edd_edje_##Name##_pointer = \
eet_data_descriptor_file_new(&eddc); \ eet_data_descriptor_file_new(&eddc); \
EET_DATA_DESCRIPTOR_ADD_SUB(_edje_edd_edje_##Name##_pointer, Edje_##Type##_Pointer, "pointer", pointer, _edje_edd_edje_##Name); \ EET_DATA_DESCRIPTOR_ADD_SUB(_edje_edd_edje_##Name##_pointer, Edje_##Type##_Pointer, "pointer", pointer, _edje_edd_edje_##Name); \
} }
// FIXME: remove EAPI when edje_convert goes // FIXME: remove EAPI when edje_convert goes
EAPI void EAPI void
@ -357,7 +358,7 @@ _edje_edd_init(void)
_edje_edd_edje_image_directory_set = _edje_edd_edje_image_directory_set =
eet_data_descriptor_file_new(&eddc); eet_data_descriptor_file_new(&eddc);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_image_directory_set, Edje_Image_Directory_Set, "name", name, EET_T_STRING); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_image_directory_set, Edje_Image_Directory_Set, "name", name, EET_T_STRING);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_image_directory_set, Edje_Image_Directory_Set, "id", id, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_image_directory_set, Edje_Image_Directory_Set, "id", id, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_image_directory_set, Edje_Image_Directory_Set, "entries", entries, _edje_edd_edje_image_directory_set_entry); EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_image_directory_set, Edje_Image_Directory_Set, "entries", entries, _edje_edd_edje_image_directory_set_entry);
EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Image_Directory); EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Image_Directory);
@ -451,7 +452,6 @@ _edje_edd_init(void)
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_3d_vec, Edje_3D_Vec, "y", y, EDJE_T_FLOAT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_3d_vec, Edje_3D_Vec, "y", y, EDJE_T_FLOAT);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_3d_vec, Edje_3D_Vec, "z", z, EDJE_T_FLOAT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_3d_vec, Edje_3D_Vec, "z", z, EDJE_T_FLOAT);
/* collection directory */ /* collection directory */
EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Collection_Directory_Entry); EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Collection_Directory_Entry);
_edje_edd_edje_part_collection_directory_entry = _edje_edd_edje_part_collection_directory_entry =
@ -507,7 +507,7 @@ _edje_edd_init(void)
/* the main file directory */ /* the main file directory */
EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_File); EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_File);
eddc.func.hash_add = (void * (*)(void *, const char *, void *)) _edje_eina_hash_add_alloc; eddc.func.hash_add = (void * (*)(void *, const char *, void *))_edje_eina_hash_add_alloc;
_edje_edd_edje_file = eet_data_descriptor_file_new(&eddc); _edje_edd_edje_file = eet_data_descriptor_file_new(&eddc);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_file, Edje_File, "compiler", compiler, EET_T_STRING); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_file, Edje_File, "compiler", compiler, EET_T_STRING);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_file, Edje_File, "version", version, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_file, Edje_File, "version", version, EET_T_INT);
@ -559,8 +559,8 @@ _edje_edd_init(void)
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "sample_name", sample_name, EET_T_STRING); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "sample_name", sample_name, EET_T_STRING);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "tone_name", tone_name, EET_T_STRING); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "tone_name", tone_name, EET_T_STRING);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program ,"duration", duration, EET_T_DOUBLE); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "duration", duration, EET_T_DOUBLE);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program ,"speed", speed, EET_T_DOUBLE); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "speed", speed, EET_T_DOUBLE);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "vibration_name", vibration_name, EET_T_STRING); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "vibration_name", vibration_name, EET_T_STRING);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "vibration_repeat", vibration_repeat, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "vibration_repeat", vibration_repeat, EET_T_INT);
@ -625,198 +625,198 @@ _edje_edd_init(void)
EDJE_DEFINE_POINTER_TYPE(Map_Color, map_colors); EDJE_DEFINE_POINTER_TYPE(Map_Color, map_colors);
#define EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON_FIELDS(Edd, Type) \ #define EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON_FIELDS(Edd, Type) \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "state.name", state.name, EET_T_STRING); \ 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, "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, "visible", visible, EET_T_CHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "limit", limit, EET_T_CHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "limit", limit, 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.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, "align.y", align.y, EDJE_T_FLOAT); \
EET_DATA_DESCRIPTOR_ADD_SUB_NESTED(Edd, Type, "align_3d", align_3d, _edje_edd_edje_part_description_3d_vec); \ EET_DATA_DESCRIPTOR_ADD_SUB_NESTED(Edd, Type, "align_3d", align_3d, _edje_edd_edje_part_description_3d_vec); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "fixed.w", fixed.w, EET_T_UCHAR); \ 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, "fixed.h", fixed.h, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "minmul.have", minmul.have, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "minmul.have", minmul.have, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "minmul.w", minmul.w, EDJE_T_FLOAT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "minmul.w", minmul.w, EDJE_T_FLOAT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "minmul.h", minmul.h, EDJE_T_FLOAT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "minmul.h", minmul.h, EDJE_T_FLOAT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "min.w", min.w, EET_T_INT); \ 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, "min.h", min.h, EET_T_INT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "min.limit", min.limit, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "min.limit", min.limit, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "max.w", max.w, 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, "max.h", max.h, EET_T_INT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "max.limit", max.limit, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "max.limit", max.limit, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "step.x", step.x, 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, "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.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.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, "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_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.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_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.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_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, "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_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.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_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.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_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, "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_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.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.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.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, "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.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.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.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, "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_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.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.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.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.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.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.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.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.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.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, "map.backcull", map.backcull, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(Edd, Type, "map.color", map.colors, _edje_edd_edje_map_colors_pointer); \ EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(Edd, Type, "map.color", map.colors, _edje_edd_edje_map_colors_pointer); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.zoom.x", map.zoom.x, EDJE_T_FLOAT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.zoom.x", map.zoom.x, EDJE_T_FLOAT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.zoom.y", map.zoom.y, EDJE_T_FLOAT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.zoom.y", map.zoom.y, EDJE_T_FLOAT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "persp.zplane", persp.zplane, EET_T_INT); \ 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); EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "persp.focal", persp.focal, EET_T_INT);
#ifdef HAVE_EPHYSICS #ifdef HAVE_EPHYSICS
#define EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON(Edd, Type) \ #define EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON(Edd, Type) \
{ \ { \
EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON_FIELDS(Edd, Type) \ EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON_FIELDS(Edd, Type) \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.mass", physics.mass, EET_T_DOUBLE); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.mass", physics.mass, EET_T_DOUBLE); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.restitution", physics.restitution, EET_T_DOUBLE); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.restitution", physics.restitution, EET_T_DOUBLE); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.friction", physics.friction, EET_T_DOUBLE); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.friction", physics.friction, EET_T_DOUBLE); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.damping.linear", physics.damping.linear, EET_T_DOUBLE); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.damping.linear", physics.damping.linear, EET_T_DOUBLE); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.damping.angular", physics.damping.angular, EET_T_DOUBLE); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.damping.angular", physics.damping.angular, EET_T_DOUBLE); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.sleep.linear", physics.sleep.linear, EET_T_DOUBLE); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.sleep.linear", physics.sleep.linear, EET_T_DOUBLE); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.sleep.angular", physics.sleep.angular, EET_T_DOUBLE); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.sleep.angular", physics.sleep.angular, EET_T_DOUBLE); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.material", physics.material, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.material", physics.material, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.density", physics.density, EET_T_DOUBLE); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.density", physics.density, EET_T_DOUBLE); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.hardness", physics.hardness, EET_T_DOUBLE); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.hardness", physics.hardness, EET_T_DOUBLE); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.z", physics.z, EET_T_INT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.z", physics.z, EET_T_INT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.depth", physics.depth, EET_T_INT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.depth", physics.depth, EET_T_INT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.ignore_part_pos", physics.ignore_part_pos, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.ignore_part_pos", physics.ignore_part_pos, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.light_on", physics.light_on, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.light_on", physics.light_on, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.backcull", physics.backcull, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.backcull", physics.backcull, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.mov_freedom.lin.x", physics.mov_freedom.lin.x, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.mov_freedom.lin.x", physics.mov_freedom.lin.x, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.mov_freedom.lin.y", physics.mov_freedom.lin.y, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.mov_freedom.lin.y", physics.mov_freedom.lin.y, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.mov_freedom.lin.z", physics.mov_freedom.lin.z, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.mov_freedom.lin.z", physics.mov_freedom.lin.z, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.mov_freedom.ang.x", physics.mov_freedom.ang.x, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.mov_freedom.ang.x", physics.mov_freedom.ang.x, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.mov_freedom.ang.y", physics.mov_freedom.ang.y, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.mov_freedom.ang.y", physics.mov_freedom.ang.y, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.mov_freedom.ang.z", physics.mov_freedom.ang.z, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.mov_freedom.ang.z", physics.mov_freedom.ang.z, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_LIST(Edd, Type, "physics.faces", physics.faces, _edje_edd_edje_physics_face); \ EET_DATA_DESCRIPTOR_ADD_LIST(Edd, Type, "physics.faces", physics.faces, _edje_edd_edje_physics_face); \
} }
#else #else
#define EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON(Edd, Type) \ #define EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON(Edd, Type) \
{ \ { \
EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON_FIELDS(Edd, Type) \ EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON_FIELDS(Edd, Type) \
} }
#endif #endif
#define EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON_SUB_FIELDS(Edd, Type, Dec) \ #define EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON_SUB_FIELDS(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.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, "state.value", Dec.state.value, EET_T_DOUBLE); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "visible", Dec.visible, EET_T_CHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "visible", Dec.visible, EET_T_CHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "align.x", Dec.align.x, EDJE_T_FLOAT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "align.x", Dec.align.x, EDJE_T_FLOAT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "align.y", Dec.align.y, EDJE_T_FLOAT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "align.y", Dec.align.y, EDJE_T_FLOAT); \
EET_DATA_DESCRIPTOR_ADD_SUB_NESTED(Edd, Type, "align_3d", Dec.align_3d, _edje_edd_edje_part_description_3d_vec); \ EET_DATA_DESCRIPTOR_ADD_SUB_NESTED(Edd, Type, "align_3d", Dec.align_3d, _edje_edd_edje_part_description_3d_vec); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "fixed.w", Dec.fixed.w, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "fixed.w", Dec.fixed.w, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "fixed.h", Dec.fixed.h, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "fixed.h", Dec.fixed.h, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "min.w", Dec.min.w, EET_T_INT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "min.w", Dec.min.w, EET_T_INT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "min.h", Dec.min.h, EET_T_INT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "min.h", Dec.min.h, EET_T_INT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "max.w", Dec.max.w, EET_T_INT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "max.w", Dec.max.w, EET_T_INT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "max.h", Dec.max.h, EET_T_INT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "max.h", Dec.max.h, EET_T_INT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "step.x", Dec.step.x, EET_T_INT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "step.x", Dec.step.x, EET_T_INT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "step.y", Dec.step.y, EET_T_INT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "step.y", Dec.step.y, EET_T_INT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "aspect.min", Dec.aspect.min, EDJE_T_FLOAT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "aspect.min", Dec.aspect.min, EDJE_T_FLOAT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "aspect.max", Dec.aspect.max, EDJE_T_FLOAT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "aspect.max", Dec.aspect.max, EDJE_T_FLOAT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "aspect.prefer", Dec.aspect.prefer, EET_T_CHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "aspect.prefer", Dec.aspect.prefer, EET_T_CHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel1.relative_x", Dec.rel1.relative_x, EDJE_T_FLOAT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel1.relative_x", Dec.rel1.relative_x, EDJE_T_FLOAT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel1.relative_y", Dec.rel1.relative_y, EDJE_T_FLOAT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel1.relative_y", Dec.rel1.relative_y, EDJE_T_FLOAT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel1.offset_x", Dec.rel1.offset_x, EET_T_INT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel1.offset_x", Dec.rel1.offset_x, EET_T_INT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel1.offset_y", Dec.rel1.offset_y, EET_T_INT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel1.offset_y", Dec.rel1.offset_y, EET_T_INT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel1.id_x", Dec.rel1.id_x, EET_T_INT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel1.id_x", Dec.rel1.id_x, EET_T_INT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel1.id_y", Dec.rel1.id_y, EET_T_INT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel1.id_y", Dec.rel1.id_y, EET_T_INT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel2.relative_x", Dec.rel2.relative_x, EDJE_T_FLOAT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel2.relative_x", Dec.rel2.relative_x, EDJE_T_FLOAT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel2.relative_y", Dec.rel2.relative_y, EDJE_T_FLOAT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel2.relative_y", Dec.rel2.relative_y, EDJE_T_FLOAT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel2.offset_x", Dec.rel2.offset_x, EET_T_INT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel2.offset_x", Dec.rel2.offset_x, EET_T_INT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel2.offset_y", Dec.rel2.offset_y, EET_T_INT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel2.offset_y", Dec.rel2.offset_y, EET_T_INT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel2.id_x", Dec.rel2.id_x, EET_T_INT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel2.id_x", Dec.rel2.id_x, EET_T_INT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel2.id_y", Dec.rel2.id_y, EET_T_INT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel2.id_y", Dec.rel2.id_y, EET_T_INT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color_class", Dec.color_class, EET_T_STRING); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color_class", Dec.color_class, EET_T_STRING); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color.r", Dec.color.r, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color.r", Dec.color.r, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color.g", Dec.color.g, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color.g", Dec.color.g, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color.b", Dec.color.b, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color.b", Dec.color.b, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color.a", Dec.color.a, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color.a", Dec.color.a, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color2.r", Dec.color2.r, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color2.r", Dec.color2.r, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color2.g", Dec.color2.g, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color2.g", Dec.color2.g, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color2.b", Dec.color2.b, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color2.b", Dec.color2.b, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color2.a", Dec.color2.a, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color2.a", Dec.color2.a, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.id_persp", Dec.map.id_persp, EET_T_INT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.id_persp", Dec.map.id_persp, EET_T_INT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.id_light", Dec.map.id_light, EET_T_INT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.id_light", Dec.map.id_light, EET_T_INT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.rot.id_center", Dec.map.rot.id_center, EET_T_INT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.rot.id_center", Dec.map.rot.id_center, EET_T_INT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.rot.x", Dec.map.rot.x, EDJE_T_FLOAT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.rot.x", Dec.map.rot.x, EDJE_T_FLOAT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.rot.y", Dec.map.rot.y, EDJE_T_FLOAT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.rot.y", Dec.map.rot.y, EDJE_T_FLOAT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.rot.z", Dec.map.rot.z, EDJE_T_FLOAT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.rot.z", Dec.map.rot.z, EDJE_T_FLOAT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.on", Dec.map.on, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.on", Dec.map.on, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.smooth", Dec.map.smooth, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.smooth", Dec.map.smooth, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.alpha", Dec.map.alpha, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.alpha", Dec.map.alpha, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.persp_on", Dec.map.persp_on, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.persp_on", Dec.map.persp_on, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.backcull", Dec.map.backcull, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.backcull", Dec.map.backcull, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(Edd, Type, "map.color", Dec.map.colors, _edje_edd_edje_map_colors_pointer); \ EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(Edd, Type, "map.color", Dec.map.colors, _edje_edd_edje_map_colors_pointer); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.zoom.x", Dec.map.zoom.x, EDJE_T_FLOAT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.zoom.x", Dec.map.zoom.x, EDJE_T_FLOAT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.zoom.y", Dec.map.zoom.y, EDJE_T_FLOAT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.zoom.y", Dec.map.zoom.y, EDJE_T_FLOAT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "persp.zplane", Dec.persp.zplane, EET_T_INT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "persp.zplane", Dec.persp.zplane, EET_T_INT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "persp.focal", Dec.persp.focal, EET_T_INT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "persp.focal", Dec.persp.focal, EET_T_INT); \
#ifdef HAVE_EPHYSICS #ifdef HAVE_EPHYSICS
#define EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON_SUB(Edd, Type, Dec) \ #define EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON_SUB(Edd, Type, Dec) \
{ \ { \
EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON_SUB_FIELDS(Edd, Type, Dec) \ EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON_SUB_FIELDS(Edd, Type, Dec) \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.mass", Dec.physics.mass, EET_T_DOUBLE); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.mass", Dec.physics.mass, EET_T_DOUBLE); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.restitution", Dec.physics.restitution, EET_T_DOUBLE); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.restitution", Dec.physics.restitution, EET_T_DOUBLE); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.friction", Dec.physics.friction, EET_T_DOUBLE); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.friction", Dec.physics.friction, EET_T_DOUBLE); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.damping.linear", Dec.physics.damping.linear, EET_T_DOUBLE); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.damping.linear", Dec.physics.damping.linear, EET_T_DOUBLE); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.damping.angular", Dec.physics.damping.angular, EET_T_DOUBLE); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.damping.angular", Dec.physics.damping.angular, EET_T_DOUBLE); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.sleep.linear", Dec.physics.sleep.linear, EET_T_DOUBLE); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.sleep.linear", Dec.physics.sleep.linear, EET_T_DOUBLE); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.sleep.angular", Dec.physics.sleep.angular, EET_T_DOUBLE); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.sleep.angular", Dec.physics.sleep.angular, EET_T_DOUBLE); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.material", Dec.physics.material, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.material", Dec.physics.material, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.density", Dec.physics.density, EET_T_DOUBLE); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.density", Dec.physics.density, EET_T_DOUBLE); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.hardness", Dec.physics.hardness, EET_T_DOUBLE); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.hardness", Dec.physics.hardness, EET_T_DOUBLE); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.z", Dec.physics.z, EET_T_INT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.z", Dec.physics.z, EET_T_INT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.depth", Dec.physics.depth, EET_T_INT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.depth", Dec.physics.depth, EET_T_INT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.ignore_part_pos", Dec.physics.ignore_part_pos, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.ignore_part_pos", Dec.physics.ignore_part_pos, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.light_on", Dec.physics.light_on, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.light_on", Dec.physics.light_on, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.backcull", Dec.physics.backcull, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.backcull", Dec.physics.backcull, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.mov_freedom.lin.x", Dec.physics.mov_freedom.lin.x, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.mov_freedom.lin.x", Dec.physics.mov_freedom.lin.x, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.mov_freedom.lin.y", Dec.physics.mov_freedom.lin.y, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.mov_freedom.lin.y", Dec.physics.mov_freedom.lin.y, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.mov_freedom.lin.z", Dec.physics.mov_freedom.lin.z, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.mov_freedom.lin.z", Dec.physics.mov_freedom.lin.z, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.mov_freedom.ang.x", Dec.physics.mov_freedom.ang.x, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.mov_freedom.ang.x", Dec.physics.mov_freedom.ang.x, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.mov_freedom.ang.y", Dec.physics.mov_freedom.ang.y, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.mov_freedom.ang.y", Dec.physics.mov_freedom.ang.y, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.mov_freedom.ang.z", Dec.physics.mov_freedom.ang.z, EET_T_UCHAR); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "physics.mov_freedom.ang.z", Dec.physics.mov_freedom.ang.z, EET_T_UCHAR); \
EET_DATA_DESCRIPTOR_ADD_LIST(Edd, Type, "physics.faces", Dec.physics.faces, _edje_edd_edje_physics_face); \ EET_DATA_DESCRIPTOR_ADD_LIST(Edd, Type, "physics.faces", Dec.physics.faces, _edje_edd_edje_physics_face); \
} }
#else #else
#define EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON_SUB(Edd, Type, Dec) \ #define EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON_SUB(Edd, Type, Dec) \
{ \ { \
EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON_SUB_FIELDS(Edd, Type, Dec) \ EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON_SUB_FIELDS(Edd, Type, Dec) \
} }
#endif #endif
#define EET_DATA_DESCRIPTOR_ADD_SUB_NESTED_LOOK(Edd, Type, Dec) \ #define EET_DATA_DESCRIPTOR_ADD_SUB_NESTED_LOOK(Edd, Type, Dec) \
{ \ { \
EET_DATA_DESCRIPTOR_ADD_BASIC_ARRAY(Edd, Type, "Dec##.orientation.look1", Dec.orientation.data, EDJE_T_FLOAT); \ EET_DATA_DESCRIPTOR_ADD_BASIC_ARRAY(Edd, Type, "Dec##.orientation.look1", Dec.orientation.data, EDJE_T_FLOAT); \
EET_DATA_DESCRIPTOR_ADD_BASIC_ARRAY(Edd, Type, "Dec##.orientation.look2", Dec.orientation.data, EDJE_T_FLOAT); \ EET_DATA_DESCRIPTOR_ADD_BASIC_ARRAY(Edd, Type, "Dec##.orientation.look2", Dec.orientation.data, EDJE_T_FLOAT); \
EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "Dec##.orientation.look_to", Dec.orientation.look_to, EET_T_INT); \ EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "Dec##.orientation.look_to", Dec.orientation.look_to, EET_T_INT); \
} }
EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Description_Common); EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Description_Common);
eddc.func.mem_free = mem_free_rectangle; eddc.func.mem_free = mem_free_rectangle;
@ -1097,53 +1097,52 @@ _edje_edd_init(void)
eddc.func.type_set = _edje_description_variant_type_set; eddc.func.type_set = _edje_description_variant_type_set;
_edje_edd_edje_part_description_variant = eet_data_descriptor_file_new(&eddc); _edje_edd_edje_part_description_variant = eet_data_descriptor_file_new(&eddc);
EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "spacer", _edje_edd_edje_part_description_spacer); EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "spacer", _edje_edd_edje_part_description_spacer);
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, "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, "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, "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, "image", _edje_edd_edje_part_description_image);
EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "proxy", _edje_edd_edje_part_description_proxy); EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "proxy", _edje_edd_edje_part_description_proxy);
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, "text", _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, "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, "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, "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); EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "external", _edje_edd_edje_part_description_external);
EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "mesh_node", _edje_edd_edje_part_description_mesh_node); EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "mesh_node", _edje_edd_edje_part_description_mesh_node);
EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "light", _edje_edd_edje_part_description_light); EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "light", _edje_edd_edje_part_description_light);
EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "camera", _edje_edd_edje_part_description_camera); EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "camera", _edje_edd_edje_part_description_camera);
#define EDJE_ADD_ARRAY_MAPPING(Variant, Type, Minus) \
#define EDJE_ADD_ARRAY_MAPPING(Variant, Type, Minus) \ { \
{ \ Edje_Part_Description_List tmp; \
Edje_Part_Description_List tmp; \ \
\ eet_data_descriptor_element_add(Variant, Type, \
eet_data_descriptor_element_add(Variant, Type, \ EET_T_UNKNOW, EET_G_VAR_ARRAY, \
EET_T_UNKNOW, EET_G_VAR_ARRAY, \ 0, (char *)(&tmp.desc_count) - (char *)(&tmp), \
0, (char*)(&tmp.desc_count) - (char*)(&tmp), \ NULL, \
NULL, \ _edje_edd_edje_part_description_##Minus##_pointer); \
_edje_edd_edje_part_description_##Minus##_pointer); \ }
}
_edje_edd_edje_part_description_variant_list = eet_data_descriptor_file_new(&eddc); _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", rectangle); EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "rectangle", rectangle);
EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "spacer", spacer); EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "spacer", spacer);
EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "swallow", swallow); 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, "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, "image", image);
EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "proxy", proxy); EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "proxy", proxy);
EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "text", text); 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", textblock); 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, "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, "table", table);
EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "external", external); EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "external", external);
EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "mesh_node", mesh_node); EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "mesh_node", mesh_node);
EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "light", light); EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "light", light);
EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "camera", camera); EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "camera", camera);
EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Pack_Element); EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Pack_Element);
_edje_edd_edje_pack_element = _edje_edd_edje_pack_element =
eet_data_descriptor_file_new(&eddc); eet_data_descriptor_file_new(&eddc);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "type", type, EET_T_UCHAR); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "type", type, EET_T_UCHAR);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "name", name, EET_T_STRING); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "name", name, EET_T_STRING);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "source", source, EET_T_STRING); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "source", source, EET_T_STRING);
@ -1229,7 +1228,7 @@ _edje_edd_init(void)
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_limit, Edje_Part_Limit, "part", part, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_limit, Edje_Part_Limit, "part", part, EET_T_INT);
EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Collection); EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Collection);
_edje_edd_edje_part_collection = _edje_edd_edje_part_collection =
eet_data_descriptor_file_new(&eddc); eet_data_descriptor_file_new(&eddc);
EDJE_DEFINE_POINTER_TYPE(Program, program); EDJE_DEFINE_POINTER_TYPE(Program, program);
@ -1275,21 +1274,22 @@ _edje_edd_init(void)
EAPI void EAPI void
_edje_data_font_list_desc_make(Eet_Data_Descriptor **_font_list_edd, _edje_data_font_list_desc_make(Eet_Data_Descriptor **_font_list_edd,
Eet_Data_Descriptor **_font_edd) Eet_Data_Descriptor **_font_edd)
{ /* User have to free: _font_list_edd, _font_edd */ { /* User have to free: _font_list_edd, _font_edd */
Eet_Data_Descriptor_Class eddc; Eet_Data_Descriptor_Class eddc;
eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc), eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc),
"font", sizeof (Edje_Font)); "font", sizeof (Edje_Font));
*_font_edd = eet_data_descriptor_stream_new(&eddc); *_font_edd = eet_data_descriptor_stream_new(&eddc);
EET_DATA_DESCRIPTOR_ADD_BASIC(*_font_edd, Edje_Font, EET_DATA_DESCRIPTOR_ADD_BASIC(*_font_edd, Edje_Font,
"file", file, EET_T_INLINED_STRING); "file", file, EET_T_INLINED_STRING);
EET_DATA_DESCRIPTOR_ADD_BASIC(*_font_edd, Edje_Font, EET_DATA_DESCRIPTOR_ADD_BASIC(*_font_edd, Edje_Font,
"name", name, EET_T_INLINED_STRING); "name", name, EET_T_INLINED_STRING);
eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc), eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc),
"font_list", sizeof (Edje_Font_List)); "font_list", sizeof (Edje_Font_List));
*_font_list_edd = eet_data_descriptor_stream_new(&eddc); *_font_list_edd = eet_data_descriptor_stream_new(&eddc);
EET_DATA_DESCRIPTOR_ADD_LIST(*_font_list_edd, Edje_Font_List, EET_DATA_DESCRIPTOR_ADD_LIST(*_font_list_edd, Edje_Font_List,
"list", list, *_font_edd); "list", list, *_font_edd);
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -9,8 +9,8 @@ static void _edje_entry_imf_event_selection_set_cb(void *data, Ecore_IMF_Co
static Eina_Bool _edje_entry_imf_retrieve_selection_cb(void *data, Ecore_IMF_Context *ctx, char **text); static Eina_Bool _edje_entry_imf_retrieve_selection_cb(void *data, Ecore_IMF_Context *ctx, char **text);
#endif #endif
typedef struct _Entry Entry; typedef struct _Entry Entry;
typedef struct _Sel Sel; typedef struct _Sel Sel;
typedef struct _Anchor Anchor; typedef struct _Anchor Anchor;
static void _edje_entry_imf_cursor_location_set(Entry *en); static void _edje_entry_imf_cursor_location_set(Entry *en);
@ -20,54 +20,54 @@ static void _text_filter_format_prepend(Edje *ed, Entry *en, Evas_Textblock_Curs
struct _Entry struct _Entry
{ {
Edje_Real_Part *rp; Edje_Real_Part *rp;
Edje *ed; Edje *ed;
Evas_Coord ox, oy; Evas_Coord ox, oy;
Evas_Object *cursor_bg; Evas_Object *cursor_bg;
Evas_Object *cursor_fg, *cursor_fg2; Evas_Object *cursor_fg, *cursor_fg2;
Evas_Textblock_Cursor *cursor; Evas_Textblock_Cursor *cursor;
Evas_Textblock_Cursor *sel_start, *sel_end; Evas_Textblock_Cursor *sel_start, *sel_end;
Evas_Textblock_Cursor *cursor_user, *cursor_user_extra; Evas_Textblock_Cursor *cursor_user, *cursor_user_extra;
Evas_Textblock_Cursor *preedit_start, *preedit_end; Evas_Textblock_Cursor *preedit_start, *preedit_end;
Ecore_Timer *pw_timer; Ecore_Timer *pw_timer;
Eina_List *sel; Eina_List *sel;
Eina_List *anchors; Eina_List *anchors;
Eina_List *anchorlist; Eina_List *anchorlist;
Eina_List *itemlist; Eina_List *itemlist;
Eina_List *seq; Eina_List *seq;
char *selection; char *selection;
Edje_Input_Panel_Lang input_panel_lang; Edje_Input_Panel_Lang input_panel_lang;
Eina_Bool composing : 1; Eina_Bool composing : 1;
Eina_Bool selecting : 1; Eina_Bool selecting : 1;
Eina_Bool have_selection : 1; Eina_Bool have_selection : 1;
Eina_Bool select_allow : 1; Eina_Bool select_allow : 1;
Eina_Bool select_mod_start : 1; Eina_Bool select_mod_start : 1;
Eina_Bool select_mod_end : 1; Eina_Bool select_mod_end : 1;
Eina_Bool had_sel : 1; Eina_Bool had_sel : 1;
Eina_Bool input_panel_enable : 1; Eina_Bool input_panel_enable : 1;
Eina_Bool prediction_allow : 1; Eina_Bool prediction_allow : 1;
Eina_Bool anchors_updated : 1; Eina_Bool anchors_updated : 1;
#ifdef HAVE_ECORE_IMF #ifdef HAVE_ECORE_IMF
Eina_Bool have_preedit : 1; Eina_Bool have_preedit : 1;
Eina_Bool commit_cancel : 1; // For skipping useless commit Eina_Bool commit_cancel : 1; // For skipping useless commit
Ecore_IMF_Context *imf_context; Ecore_IMF_Context *imf_context;
#endif #endif
}; };
struct _Sel struct _Sel
{ {
Evas_Textblock_Rectangle rect; Evas_Textblock_Rectangle rect;
Evas_Object *obj_fg, *obj_bg, *obj, *sobj; Evas_Object *obj_fg, *obj_bg, *obj, *sobj;
}; };
struct _Anchor struct _Anchor
{ {
Entry *en; Entry *en;
char *name; char *name;
Evas_Textblock_Cursor *start, *end; Evas_Textblock_Cursor *start, *end;
Eina_List *sel; Eina_List *sel;
Eina_Bool item : 1; Eina_Bool item : 1;
}; };
#ifdef HAVE_ECORE_IMF #ifdef HAVE_ECORE_IMF
@ -142,6 +142,7 @@ _edje_entry_focus_out_cb(void *data, Evas_Object *o EINA_UNUSED, const char *emi
ecore_imf_context_reset(en->imf_context); ecore_imf_context_reset(en->imf_context);
ecore_imf_context_focus_out(en->imf_context); ecore_imf_context_focus_out(en->imf_context);
} }
#endif #endif
static void static void
@ -242,8 +243,9 @@ _text_filter_markup_prepend_internal(Edje *ed, Entry *en, Evas_Textblock_Cursor
_range_del_emit(ed, en->cursor, en->rp->object, en); _range_del_emit(ed, en->cursor, en->rp->object, en);
if (info) info->merge = EINA_TRUE; if (info) info->merge = EINA_TRUE;
} }
if (info) info->change.insert.pos = if (info)
evas_textblock_cursor_pos_get(en->cursor); info->change.insert.pos =
evas_textblock_cursor_pos_get(en->cursor);
if (fmtpre) _text_filter_format_prepend(ed, en, en->cursor, fmtpre); if (fmtpre) _text_filter_format_prepend(ed, en, en->cursor, fmtpre);
evas_object_textblock_text_markup_prepend(c, text); evas_object_textblock_text_markup_prepend(c, text);
free(text); free(text);
@ -282,8 +284,8 @@ _text_filter_text_prepend(Edje *ed, Entry *en, Evas_Textblock_Cursor *c,
free(text2); free(text2);
if (markup_text) if (markup_text)
info = _text_filter_markup_prepend_internal(ed, en, c, markup_text, info = _text_filter_markup_prepend_internal(ed, en, c, markup_text,
fmtpre, fmtpost, fmtpre, fmtpost,
clearsel, changeinfo); clearsel, changeinfo);
return info; return info;
} }
return NULL; return NULL;
@ -314,13 +316,14 @@ _text_filter_format_prepend(Edje *ed, Entry *en, Evas_Textblock_Cursor *c, const
if (*s == '+') if (*s == '+')
{ {
s++; s++;
while (*s == ' ') s++; while (*s == ' ')
s++;
if (!*s) if (!*s)
{ {
free(text2); free(text2);
return; return;
} }
markup_text = (char*) malloc(strlen(s) + 3); markup_text = (char *)malloc(strlen(s) + 3);
if (markup_text) if (markup_text)
{ {
*(markup_text) = '<'; *(markup_text) = '<';
@ -332,13 +335,14 @@ _text_filter_format_prepend(Edje *ed, Entry *en, Evas_Textblock_Cursor *c, const
else if (s[0] == '-') else if (s[0] == '-')
{ {
s++; s++;
while (*s == ' ') s++; while (*s == ' ')
s++;
if (!*s) if (!*s)
{ {
free(text2); free(text2);
return; return;
} }
markup_text = (char*) malloc(strlen(s) + 4); markup_text = (char *)malloc(strlen(s) + 4);
if (markup_text) if (markup_text)
{ {
*(markup_text) = '<'; *(markup_text) = '<';
@ -350,7 +354,7 @@ _text_filter_format_prepend(Edje *ed, Entry *en, Evas_Textblock_Cursor *c, const
} }
else else
{ {
markup_text = (char*) malloc(strlen(s) + 4); markup_text = (char *)malloc(strlen(s) + 4);
if (markup_text) if (markup_text)
{ {
*(markup_text) = '<'; *(markup_text) = '<';
@ -409,12 +413,13 @@ _curs_update_from_curs(Evas_Textblock_Cursor *c, Evas_Object *o EINA_UNUSED, Ent
switch (en->rp->part->cursor_mode) switch (en->rp->part->cursor_mode)
{ {
case EDJE_ENTRY_CURSOR_MODE_BEFORE: case EDJE_ENTRY_CURSOR_MODE_BEFORE:
cur_type = EVAS_TEXTBLOCK_CURSOR_BEFORE; cur_type = EVAS_TEXTBLOCK_CURSOR_BEFORE;
break; break;
case EDJE_ENTRY_CURSOR_MODE_UNDER: case EDJE_ENTRY_CURSOR_MODE_UNDER:
/* no break for a reason */ /* no break for a reason */
default: default:
cur_type = EVAS_TEXTBLOCK_CURSOR_UNDER; cur_type = EVAS_TEXTBLOCK_CURSOR_UNDER;
} }
evas_textblock_cursor_geometry_get(c, cx, cy, &cw, &ch, NULL, cur_type); evas_textblock_cursor_geometry_get(c, cx, cy, &cw, &ch, NULL, cur_type);
*cx += (cw / 2); *cx += (cw / 2);
@ -627,7 +632,7 @@ _sel_update(Edje *ed, Evas_Textblock_Cursor *c EINA_UNUSED, Evas_Object *o, Entr
smart = evas_object_smart_parent_get(o); smart = evas_object_smart_parent_get(o);
clip = evas_object_clip_get(o); clip = evas_object_clip_get(o);
if (!en->sel_start) if (!en->sel_start)
return; return;
evas_object_geometry_get(o, &x, &y, NULL, NULL); evas_object_geometry_get(o, &x, &y, NULL, NULL);
if (en->have_selection) if (en->have_selection)
@ -907,8 +912,8 @@ _anchors_update(Evas_Textblock_Cursor *c EINA_UNUSED, Evas_Object *o, Entry *en)
if (ed->item_provider.func) if (ed->item_provider.func)
{ {
ob = ed->item_provider.func ob = ed->item_provider.func
(ed->item_provider.data, smart, (ed->item_provider.data, smart,
en->rp->part->name, an->name); en->rp->part->name, an->name);
evas_object_smart_member_add(ob, smart); evas_object_smart_member_add(ob, smart);
evas_object_stack_above(ob, o); evas_object_stack_above(ob, o);
evas_object_clip_set(ob, clip); evas_object_clip_set(ob, clip);
@ -983,7 +988,7 @@ _anchors_update(Evas_Textblock_Cursor *c EINA_UNUSED, Evas_Object *o, Entry *en)
Evas_Coord cx, cy, cw, ch; Evas_Coord cx, cy, cw, ch;
if (!evas_textblock_cursor_format_item_geometry_get if (!evas_textblock_cursor_format_item_geometry_get
(an->start, &cx, &cy, &cw, &ch)) (an->start, &cx, &cy, &cw, &ch))
continue; continue;
evas_object_move(sel->obj, x + cx, y + cy); evas_object_move(sel->obj, x + cx, y + cy);
evas_object_resize(sel->obj, cw, ch); evas_object_resize(sel->obj, cw, ch);
@ -1104,7 +1109,7 @@ _anchor_format_parse(const char *item)
/* If we can find a quote as the first non-space char, /* If we can find a quote as the first non-space char,
* our new delimiter is a quote, not a space. */ * our new delimiter is a quote, not a space. */
while (*start == ' ') while (*start == ' ')
start++; start++;
if (*start == '\'') if (*start == '\'')
{ {
@ -1224,7 +1229,7 @@ _anchors_get(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en)
static void static void
_free_entry_change_info(void *_info) _free_entry_change_info(void *_info)
{ {
Edje_Entry_Change_Info *info = (Edje_Entry_Change_Info *) _info; Edje_Entry_Change_Info *info = (Edje_Entry_Change_Info *)_info;
if (info->insert) if (info->insert)
{ {
eina_stringshare_del(info->change.insert.content); eina_stringshare_del(info->change.insert.content);
@ -1246,7 +1251,7 @@ _range_del_emit(Edje *ed, Evas_Textblock_Cursor *c EINA_UNUSED, Evas_Object *o E
start = evas_textblock_cursor_pos_get(en->sel_start); start = evas_textblock_cursor_pos_get(en->sel_start);
end = evas_textblock_cursor_pos_get(en->sel_end); end = evas_textblock_cursor_pos_get(en->sel_end);
if (start == end) if (start == end)
goto noop; goto noop;
info = calloc(1, sizeof(*info)); info = calloc(1, sizeof(*info));
info->insert = EINA_FALSE; info->insert = EINA_FALSE;
@ -1318,7 +1323,7 @@ _edje_entry_hide_visible_password(Edje *ed, Edje_Real_Part *rp)
if (!strcmp(text, "+ password=off")) if (!strcmp(text, "+ password=off"))
{ {
evas_textblock_node_format_remove_pair(rp->object, evas_textblock_node_format_remove_pair(rp->object,
(Evas_Object_Textblock_Node_Format *) node); (Evas_Object_Textblock_Node_Format *)node);
_edje_emit(ed, "entry,changed", rp->part->name); _edje_emit(ed, "entry,changed", rp->part->name);
break; break;
} }
@ -1357,7 +1362,8 @@ _compose_seq_reset(Entry *en)
{ {
char *str; char *str;
EINA_LIST_FREE(en->seq, str) eina_stringshare_del(str); EINA_LIST_FREE(en->seq, str)
eina_stringshare_del(str);
en->composing = EINA_FALSE; en->composing = EINA_FALSE;
} }
@ -1734,12 +1740,12 @@ _edje_key_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
} }
//else if ((control) && (!shift) && (!strcmp(ev->key, "w"))) //else if ((control) && (!shift) && (!strcmp(ev->key, "w")))
//{ //{
//_compose_seq_reset(en); //_compose_seq_reset(en);
//_sel_clear(ed, en->cursor, rp->object, en); //_sel_clear(ed, en->cursor, rp->object, en);
//select current word? //select current word?
//ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; //ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
//} //}
else if (!strcmp(ev->key, "Tab")) else if (!strcmp(ev->key, "Tab"))
{ {
_compose_seq_reset(en); _compose_seq_reset(en);
@ -1761,7 +1767,7 @@ _edje_key_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
info->merge = EINA_TRUE; info->merge = EINA_TRUE;
} }
info->change.insert.pos = info->change.insert.pos =
evas_textblock_cursor_pos_get(en->cursor); evas_textblock_cursor_pos_get(en->cursor);
info->change.insert.content = eina_stringshare_add("<tab/>"); info->change.insert.content = eina_stringshare_add("<tab/>");
_text_filter_format_prepend(ed, en, en->cursor, "tab"); _text_filter_format_prepend(ed, en, en->cursor, "tab");
_anchors_get(en->cursor, rp->object, en); _anchors_get(en->cursor, rp->object, en);
@ -1839,7 +1845,7 @@ _edje_key_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
} }
info->change.insert.pos = info->change.insert.pos =
evas_textblock_cursor_pos_get(en->cursor); evas_textblock_cursor_pos_get(en->cursor);
if (shift || if (shift ||
evas_object_textblock_legacy_newline_get(rp->object)) evas_object_textblock_legacy_newline_get(rp->object))
{ {
@ -1939,7 +1945,7 @@ _edje_key_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
} }
if (_edje_password_show_last_timeout >= 0) if (_edje_password_show_last_timeout >= 0)
en->pw_timer = ecore_timer_add en->pw_timer = ecore_timer_add
(_edje_password_show_last_timeout, (_edje_password_show_last_timeout,
_password_timer_cb, en); _password_timer_cb, en);
} }
} }
@ -1998,7 +2004,7 @@ _edje_key_up_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, v
return; return;
} }
#else #else
(void) event_info; (void)event_info;
#endif #endif
} }
@ -2221,7 +2227,7 @@ _edje_part_mouse_down_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_
} }
} }
} }
end: end:
if (evas_textblock_cursor_compare(tc, en->cursor)) if (evas_textblock_cursor_compare(tc, en->cursor))
{ {
_edje_emit(en->ed, "cursor,changed", rp->part->name); _edje_emit(en->ed, "cursor,changed", rp->part->name);
@ -2257,7 +2263,6 @@ _edje_part_mouse_up_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UN
(rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_SELECTABLE)) (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_SELECTABLE))
return; return;
/* We don't check for ON_HOLD because we'd like to end selection anyway when /* We don't check for ON_HOLD because we'd like to end selection anyway when
* mouse is up, even if it's held. */ * mouse is up, even if it's held. */
@ -2321,12 +2326,12 @@ _edje_part_mouse_up_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UN
if (en->had_sel) if (en->had_sel)
{ {
if (en->select_mod_end) if (en->select_mod_end)
_sel_extend(en->ed, en->cursor, rp->object, en); _sel_extend(en->ed, en->cursor, rp->object, en);
else if (en->select_mod_start) else if (en->select_mod_start)
_sel_preextend(en->ed, en->cursor, rp->object, en); _sel_preextend(en->ed, en->cursor, rp->object, en);
} }
else else
_sel_extend(en->ed, en->cursor, rp->object, en); _sel_extend(en->ed, en->cursor, rp->object, en);
//evas_textblock_cursor_copy(en->cursor, en->sel_end); //evas_textblock_cursor_copy(en->cursor, en->sel_end);
} }
else else
@ -2422,12 +2427,12 @@ _edje_part_mouse_move_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_
if (en->had_sel) if (en->had_sel)
{ {
if (en->select_mod_end) if (en->select_mod_end)
_sel_extend(en->ed, en->cursor, rp->object, en); _sel_extend(en->ed, en->cursor, rp->object, en);
else if (en->select_mod_start) else if (en->select_mod_start)
_sel_preextend(en->ed, en->cursor, rp->object, en); _sel_preextend(en->ed, en->cursor, rp->object, en);
} }
else else
_sel_extend(en->ed, en->cursor, rp->object, en); _sel_extend(en->ed, en->cursor, rp->object, en);
} }
else else
{ {
@ -2620,9 +2625,9 @@ _edje_entry_real_part_init(Edje *ed, Edje_Real_Part *rp)
if (!en->imf_context) goto done; if (!en->imf_context) goto done;
ecore_imf_context_client_window_set ecore_imf_context_client_window_set
(en->imf_context, (en->imf_context,
(void *)ecore_evas_window_get (void *)ecore_evas_window_get
(ecore_evas_ecore_evas_get(ed->base->evas))); (ecore_evas_ecore_evas_get(ed->base->evas)));
ecore_imf_context_client_canvas_set(en->imf_context, ed->base->evas); ecore_imf_context_client_canvas_set(en->imf_context, ed->base->evas);
ecore_imf_context_retrieve_surrounding_callback_set(en->imf_context, ecore_imf_context_retrieve_surrounding_callback_set(en->imf_context,
@ -2709,12 +2714,13 @@ _edje_entry_real_part_configure(Edje *ed, Edje_Real_Part *rp)
switch (rp->part->cursor_mode) switch (rp->part->cursor_mode)
{ {
case EDJE_ENTRY_CURSOR_MODE_BEFORE: case EDJE_ENTRY_CURSOR_MODE_BEFORE:
cur_type = EVAS_TEXTBLOCK_CURSOR_BEFORE; cur_type = EVAS_TEXTBLOCK_CURSOR_BEFORE;
break; break;
case EDJE_ENTRY_CURSOR_MODE_UNDER: case EDJE_ENTRY_CURSOR_MODE_UNDER:
/* no break for a reason */ /* no break for a reason */
default: default:
cur_type = EVAS_TEXTBLOCK_CURSOR_UNDER; cur_type = EVAS_TEXTBLOCK_CURSOR_UNDER;
} }
_sel_update(ed, en->cursor, rp->object, en); _sel_update(ed, en->cursor, rp->object, en);
@ -2765,7 +2771,7 @@ _edje_entry_selection_get(Edje_Real_Part *rp)
// get selection - convert to markup // get selection - convert to markup
if ((!en->selection) && (en->have_selection)) if ((!en->selection) && (en->have_selection))
en->selection = evas_textblock_cursor_range_text_get en->selection = evas_textblock_cursor_range_text_get
(en->sel_start, en->sel_end, EVAS_TEXTBLOCK_TEXT_MARKUP); (en->sel_start, en->sel_end, EVAS_TEXTBLOCK_TEXT_MARKUP);
return en->selection; return en->selection;
} }
@ -3069,12 +3075,13 @@ _edje_entry_cursor_geometry_get(Edje_Real_Part *rp, Evas_Coord *cx, Evas_Coord *
switch (rp->part->cursor_mode) switch (rp->part->cursor_mode)
{ {
case EDJE_ENTRY_CURSOR_MODE_BEFORE: case EDJE_ENTRY_CURSOR_MODE_BEFORE:
cur_type = EVAS_TEXTBLOCK_CURSOR_BEFORE; cur_type = EVAS_TEXTBLOCK_CURSOR_BEFORE;
break; break;
case EDJE_ENTRY_CURSOR_MODE_UNDER: case EDJE_ENTRY_CURSOR_MODE_UNDER:
/* no break for a reason */ /* no break for a reason */
default: default:
cur_type = EVAS_TEXTBLOCK_CURSOR_UNDER; cur_type = EVAS_TEXTBLOCK_CURSOR_UNDER;
} }
x = y = w = h = -1; x = y = w = h = -1;
@ -3104,7 +3111,7 @@ _edje_entry_user_insert(Edje_Real_Part *rp, const char *text)
if (!en) return; if (!en) return;
_edje_entry_imf_context_reset(rp); _edje_entry_imf_context_reset(rp);
info = _text_filter_markup_prepend(en->ed, en, en->cursor, text, NULL, NULL, info = _text_filter_markup_prepend(en->ed, en, en->cursor, text, NULL, NULL,
EINA_TRUE, EINA_TRUE); EINA_TRUE, EINA_TRUE);
_anchors_get(en->cursor, rp->object, en); _anchors_get(en->cursor, rp->object, en);
if (info) if (info)
{ {
@ -3263,7 +3270,7 @@ _edje_entry_input_hint_set(Edje_Real_Part *rp, Edje_Input_Hints input_hints)
if (en->imf_context) if (en->imf_context)
ecore_imf_context_input_hint_set(en->imf_context, (Ecore_IMF_Input_Hints)input_hints); ecore_imf_context_input_hint_set(en->imf_context, (Ecore_IMF_Input_Hints)input_hints);
#else #else
(void) input_hints; (void)input_hints;
#endif #endif
} }
@ -3516,10 +3523,11 @@ _edje_entry_input_panel_show_on_demand_get(Edje_Real_Part *rp)
en = rp->typedata.text->entry_data; en = rp->typedata.text->entry_data;
if (!en) return EINA_FALSE; if (!en) return EINA_FALSE;
#ifdef HAVE_ECORE_IMF #ifdef HAVE_ECORE_IMF
if (en->imf_context) { if (en->imf_context)
Eina_Bool ret = ecore_imf_context_input_panel_show_on_demand_get(en->imf_context); {
return ret; Eina_Bool ret = ecore_imf_context_input_panel_show_on_demand_get(en->imf_context);
} return ret;
}
#endif #endif
return EINA_FALSE; return EINA_FALSE;
} }
@ -3536,29 +3544,36 @@ _cursor_get(Edje_Real_Part *rp, Edje_Cursor cur)
switch (cur) switch (cur)
{ {
case EDJE_CURSOR_MAIN: case EDJE_CURSOR_MAIN:
return en->cursor; return en->cursor;
case EDJE_CURSOR_SELECTION_BEGIN: case EDJE_CURSOR_SELECTION_BEGIN:
return en->sel_start; return en->sel_start;
case EDJE_CURSOR_SELECTION_END: case EDJE_CURSOR_SELECTION_END:
return en->sel_end; return en->sel_end;
case EDJE_CURSOR_PREEDIT_START: case EDJE_CURSOR_PREEDIT_START:
if (!en->preedit_start) if (!en->preedit_start)
en->preedit_start = evas_object_textblock_cursor_new(rp->object); en->preedit_start = evas_object_textblock_cursor_new(rp->object);
return en->preedit_start; return en->preedit_start;
case EDJE_CURSOR_PREEDIT_END: case EDJE_CURSOR_PREEDIT_END:
if (!en->preedit_end) if (!en->preedit_end)
en->preedit_end = evas_object_textblock_cursor_new(rp->object); en->preedit_end = evas_object_textblock_cursor_new(rp->object);
return en->preedit_end; return en->preedit_end;
case EDJE_CURSOR_USER: case EDJE_CURSOR_USER:
if (!en->cursor_user) if (!en->cursor_user)
en->cursor_user = evas_object_textblock_cursor_new(rp->object); en->cursor_user = evas_object_textblock_cursor_new(rp->object);
return en->cursor_user; return en->cursor_user;
case EDJE_CURSOR_USER_EXTRA: case EDJE_CURSOR_USER_EXTRA:
if (!en->cursor_user_extra) if (!en->cursor_user_extra)
en->cursor_user_extra = evas_object_textblock_cursor_new(rp->object); en->cursor_user_extra = evas_object_textblock_cursor_new(rp->object);
return en->cursor_user_extra; return en->cursor_user_extra;
default: default:
break; break;
} }
return NULL; return NULL;
} }
@ -3808,7 +3823,7 @@ _edje_entry_cursor_coord_set(Edje_Real_Part *rp, Edje_Cursor cur,
(cur == EDJE_CURSOR_SELECTION_END)) (cur == EDJE_CURSOR_SELECTION_END))
{ {
if (en->have_selection) if (en->have_selection)
_edje_emit(en->ed, "selection,changed", rp->part->name); _edje_emit(en->ed, "selection,changed", rp->part->name);
} }
return evas_textblock_cursor_char_coord_set(c, x, y); return evas_textblock_cursor_char_coord_set(c, x, y);
} }
@ -3892,8 +3907,8 @@ _edje_entry_input_panel_layout_set(Edje_Real_Part *rp, Edje_Input_Panel_Layout l
if (en->imf_context) if (en->imf_context)
ecore_imf_context_input_panel_layout_set(en->imf_context, (Ecore_IMF_Input_Panel_Layout)layout); ecore_imf_context_input_panel_layout_set(en->imf_context, (Ecore_IMF_Input_Panel_Layout)layout);
#else #else
(void) rp; (void)rp;
(void) layout; (void)layout;
#endif #endif
} }
@ -3929,7 +3944,7 @@ _edje_entry_input_panel_layout_variation_set(Edje_Real_Part *rp, int variation)
if (en->imf_context) if (en->imf_context)
ecore_imf_context_input_panel_layout_variation_set(en->imf_context, variation); ecore_imf_context_input_panel_layout_variation_set(en->imf_context, variation);
#else #else
(void) variation; (void)variation;
#endif #endif
} }
@ -3963,7 +3978,7 @@ _edje_entry_imf_context_reset(Edje_Real_Part *rp)
if (en->imf_context) if (en->imf_context)
ecore_imf_context_reset(en->imf_context); ecore_imf_context_reset(en->imf_context);
if (en->commit_cancel) if (en->commit_cancel)
en->commit_cancel = EINA_FALSE; en->commit_cancel = EINA_FALSE;
#else #else
(void)rp; (void)rp;
#endif #endif
@ -3981,7 +3996,7 @@ _edje_entry_imf_cursor_location_set(Entry *en)
ecore_imf_context_cursor_location_set(en->imf_context, cx, cy, cw, ch); ecore_imf_context_cursor_location_set(en->imf_context, cx, cy, cw, ch);
ecore_imf_context_bidi_direction_set(en->imf_context, (Ecore_IMF_BiDi_Direction)dir); ecore_imf_context_bidi_direction_set(en->imf_context, (Ecore_IMF_BiDi_Direction)dir);
#else #else
(void) en; (void)en;
#endif #endif
} }
@ -4007,7 +4022,7 @@ _edje_entry_imf_cursor_info_set(Entry *en)
_edje_entry_imf_cursor_location_set(en); _edje_entry_imf_cursor_location_set(en);
#else #else
(void) en; (void)en;
#endif #endif
} }
@ -4119,7 +4134,7 @@ _edje_entry_imf_event_commit_cb(void *data, Ecore_IMF_Context *ctx EINA_UNUSED,
} }
if (_edje_password_show_last_timeout >= 0) if (_edje_password_show_last_timeout >= 0)
en->pw_timer = ecore_timer_add en->pw_timer = ecore_timer_add
(_edje_password_show_last_timeout, (_edje_password_show_last_timeout,
_password_timer_cb, en); _password_timer_cb, en);
} }
} }
@ -4130,7 +4145,6 @@ _edje_entry_imf_event_commit_cb(void *data, Ecore_IMF_Context *ctx EINA_UNUSED,
EINA_TRUE, EINA_TRUE); EINA_TRUE, EINA_TRUE);
} }
_edje_entry_imf_cursor_info_set(en); _edje_entry_imf_cursor_info_set(en);
_anchors_get(en->cursor, rp->object, en); _anchors_get(en->cursor, rp->object, en);
if (info) if (info)
@ -4154,8 +4168,10 @@ _edje_entry_imf_event_preedit_changed_cb(void *data, Ecore_IMF_Context *ctx EINA
int preedit_start_pos, preedit_end_pos; int preedit_start_pos, preedit_end_pos;
char *preedit_string; char *preedit_string;
char *markup_txt = NULL; char *markup_txt = NULL;
char *tagname[] = {NULL, "preedit", "preedit_sel", "preedit_sel", char *tagname[] = {
"preedit_sub1", "preedit_sub2", "preedit_sub3", "preedit_sub4"}; NULL, "preedit", "preedit_sel", "preedit_sel",
"preedit_sub1", "preedit_sub2", "preedit_sub3", "preedit_sub4"
};
int i; int i;
size_t preedit_type_size = sizeof(tagname) / sizeof(tagname[0]); size_t preedit_type_size = sizeof(tagname) / sizeof(tagname[0]);
Eina_Bool preedit_end_state = EINA_FALSE; Eina_Bool preedit_end_state = EINA_FALSE;
@ -4225,7 +4241,7 @@ _edje_entry_imf_event_preedit_changed_cb(void *data, Ecore_IMF_Context *ctx EINA
// For skipping useless commit // For skipping useless commit
if (!preedit_end_state) if (!preedit_end_state)
en->have_preedit = EINA_TRUE; en->have_preedit = EINA_TRUE;
if ((rp->part->entry_mode == EDJE_ENTRY_EDIT_MODE_PASSWORD) && if ((rp->part->entry_mode == EDJE_ENTRY_EDIT_MODE_PASSWORD) &&
_edje_password_show_last) _edje_password_show_last)
@ -4247,7 +4263,7 @@ _edje_entry_imf_event_preedit_changed_cb(void *data, Ecore_IMF_Context *ctx EINA
} }
if (_edje_password_show_last_timeout >= 0) if (_edje_password_show_last_timeout >= 0)
en->pw_timer = ecore_timer_add en->pw_timer = ecore_timer_add
(_edje_password_show_last_timeout, (_edje_password_show_last_timeout,
_password_timer_cb, en); _password_timer_cb, en);
free(info); free(info);
} }
@ -4293,7 +4309,8 @@ _edje_entry_imf_event_preedit_changed_cb(void *data, Ecore_IMF_Context *ctx EINA
/* delete attribute list */ /* delete attribute list */
if (attrs) if (attrs)
{ {
EINA_LIST_FREE(attrs, attr) free(attr); EINA_LIST_FREE(attrs, attr)
free(attr);
} }
free(preedit_string); free(preedit_string);
@ -4406,6 +4423,7 @@ _edje_entry_imf_retrieve_selection_cb(void *data, Ecore_IMF_Context *ctx EINA_UN
else else
return EINA_FALSE; return EINA_FALSE;
} }
#endif #endif
/* vim:set ts=8 sw=3 sts=3 expandtab cino=>5n-2f0^-2{2(0W1st0 :*/ /* vim:set ts=8 sw=3 sts=3 expandtab cino=>5n-2f0^-2{2(0W1st0 :*/

View File

@ -9,21 +9,26 @@ edje_external_param_type_str(Edje_External_Param_Type type)
switch (type) switch (type)
{ {
case EDJE_EXTERNAL_PARAM_TYPE_INT: case EDJE_EXTERNAL_PARAM_TYPE_INT:
return "INT"; return "INT";
case EDJE_EXTERNAL_PARAM_TYPE_DOUBLE: case EDJE_EXTERNAL_PARAM_TYPE_DOUBLE:
return "DOUBLE"; return "DOUBLE";
case EDJE_EXTERNAL_PARAM_TYPE_STRING: case EDJE_EXTERNAL_PARAM_TYPE_STRING:
return "STRING"; return "STRING";
case EDJE_EXTERNAL_PARAM_TYPE_BOOL: case EDJE_EXTERNAL_PARAM_TYPE_BOOL:
return "BOOL"; return "BOOL";
case EDJE_EXTERNAL_PARAM_TYPE_CHOICE: case EDJE_EXTERNAL_PARAM_TYPE_CHOICE:
return "CHOICE"; return "CHOICE";
default: default:
return "(unknown)"; return "(unknown)";
} }
} }
EOLIAN Evas_Object* EOLIAN Evas_Object *
_edje_object_part_external_object_get(Eo *obj EINA_UNUSED, Edje *ed, const char *part) _edje_object_part_external_object_get(Eo *obj EINA_UNUSED, Edje *ed, const char *part)
{ {
Edje_Real_Part *rp; Edje_Real_Part *rp;
@ -36,14 +41,14 @@ _edje_object_part_external_object_get(Eo *obj EINA_UNUSED, Edje *ed, const char
rp = _edje_real_part_recursive_get(&ed, (char *)part); rp = _edje_real_part_recursive_get(&ed, (char *)part);
if (!rp) if (!rp)
{ {
ERR("no part '%s'", part); ERR("no part '%s'", part);
return NULL; return NULL;
} }
if (rp->part->type != EDJE_PART_TYPE_EXTERNAL) if (rp->part->type != EDJE_PART_TYPE_EXTERNAL)
{ {
ERR("cannot get external object of a part '%s' that is not EXTERNAL", ERR("cannot get external object of a part '%s' that is not EXTERNAL",
rp->part->name); rp->part->name);
return NULL; return NULL;
} }
if ((rp->type != EDJE_RP_TYPE_SWALLOW) || if ((rp->type != EDJE_RP_TYPE_SWALLOW) ||
(!rp->typedata.swallow)) return NULL; (!rp->typedata.swallow)) return NULL;
@ -63,12 +68,12 @@ _edje_object_part_external_param_set(Eo *obj, Edje *ed, const char *part, const
rp = _edje_real_part_recursive_get(&ed, (char *)part); rp = _edje_real_part_recursive_get(&ed, (char *)part);
if (!rp) if (!rp)
{ {
ERR("no part '%s'", part); ERR("no part '%s'", part);
return EINA_FALSE; return EINA_FALSE;
} }
if (_edje_external_param_set(obj, rp, param)) if (_edje_external_param_set(obj, rp, param))
return EINA_TRUE; return EINA_TRUE;
return EINA_FALSE; return EINA_FALSE;
} }
@ -84,14 +89,14 @@ _edje_object_part_external_param_get(Eo *obj, Edje *ed, const char *part, Edje_E
rp = _edje_real_part_recursive_get(&ed, (char *)part); rp = _edje_real_part_recursive_get(&ed, (char *)part);
if (!rp) if (!rp)
{ {
ERR("no part '%s'", part); ERR("no part '%s'", part);
return EINA_FALSE; return EINA_FALSE;
} }
return _edje_external_param_get(obj, rp, param); return _edje_external_param_get(obj, rp, param);
} }
EOLIAN Evas_Object* EOLIAN Evas_Object *
_edje_object_part_external_content_get(Eo *obj EINA_UNUSED, Edje *ed, const char *part, const char *content) _edje_object_part_external_content_get(Eo *obj EINA_UNUSED, Edje *ed, const char *part, const char *content)
{ {
Edje_Real_Part *rp; Edje_Real_Part *rp;
@ -103,8 +108,8 @@ _edje_object_part_external_content_get(Eo *obj EINA_UNUSED, Edje *ed, const char
rp = _edje_real_part_recursive_get(&ed, (char *)part); rp = _edje_real_part_recursive_get(&ed, (char *)part);
if (!rp) if (!rp)
{ {
ERR("no part '%s'", part); ERR("no part '%s'", part);
return NULL; return NULL;
} }
if ((rp->type != EDJE_RP_TYPE_SWALLOW) || if ((rp->type != EDJE_RP_TYPE_SWALLOW) ||
(!rp->typedata.swallow)) return NULL; (!rp->typedata.swallow)) return NULL;
@ -124,25 +129,25 @@ _edje_object_part_external_param_type_get(Eo *obj, Edje *ed, const char *part, c
rp = _edje_real_part_recursive_get(&ed, (char *)part); rp = _edje_real_part_recursive_get(&ed, (char *)part);
if (!rp) if (!rp)
{ {
ERR("no part '%s'", part); ERR("no part '%s'", part);
return EDJE_EXTERNAL_PARAM_TYPE_MAX; return EDJE_EXTERNAL_PARAM_TYPE_MAX;
} }
if ((rp->type != EDJE_RP_TYPE_SWALLOW) || if ((rp->type != EDJE_RP_TYPE_SWALLOW) ||
(!rp->typedata.swallow)) return EDJE_EXTERNAL_PARAM_TYPE_MAX; (!rp->typedata.swallow)) return EDJE_EXTERNAL_PARAM_TYPE_MAX;
type = evas_object_data_get(rp->typedata.swallow->swallowed_object, "Edje_External_Type"); type = evas_object_data_get(rp->typedata.swallow->swallowed_object, "Edje_External_Type");
if (!type) if (!type)
{ {
ERR("no external type for object %p", obj); ERR("no external type for object %p", obj);
return EDJE_EXTERNAL_PARAM_TYPE_MAX; return EDJE_EXTERNAL_PARAM_TYPE_MAX;
} }
if (!type->parameters_info) if (!type->parameters_info)
{ {
ERR("no parameters information for external type '%s'", ERR("no parameters information for external type '%s'",
type->module_name); type->module_name);
return EDJE_EXTERNAL_PARAM_TYPE_MAX; return EDJE_EXTERNAL_PARAM_TYPE_MAX;
} }
for (info = type->parameters_info; info->name; info++) for (info = type->parameters_info; info->name; info++)
if (strcmp(info->name, param) == 0) return info->type;; if (strcmp(info->name, param) == 0) return info->type; ;
ERR("no parameter '%s' external type '%s'", param, type->module_name); ERR("no parameter '%s' external type '%s'", param, type->module_name);
@ -159,17 +164,17 @@ edje_external_type_register(const char *type_name, const Edje_External_Type *typ
if (type_info->abi_version != EDJE_EXTERNAL_TYPE_ABI_VERSION) if (type_info->abi_version != EDJE_EXTERNAL_TYPE_ABI_VERSION)
{ {
ERR("external type '%s' (%p) has incorrect abi version. " ERR("external type '%s' (%p) has incorrect abi version. "
"got %#x where %#x was expected.", "got %#x where %#x was expected.",
type_name, type_info, type_name, type_info,
type_info->abi_version, EDJE_EXTERNAL_TYPE_ABI_VERSION); type_info->abi_version, EDJE_EXTERNAL_TYPE_ABI_VERSION);
return EINA_FALSE; return EINA_FALSE;
} }
if (eina_hash_find(type_registry, type_name)) if (eina_hash_find(type_registry, type_name))
{ {
ERR("External type '%s' already registered", type_name); ERR("External type '%s' already registered", type_name);
return EINA_FALSE; return EINA_FALSE;
} }
return eina_hash_add(type_registry, type_name, type_info); return eina_hash_add(type_registry, type_name, type_info);
} }
@ -192,16 +197,16 @@ edje_external_type_array_register(const Edje_External_Type_Info *array)
for (itr = array; itr->name; itr++) for (itr = array; itr->name; itr++)
{ {
if (itr->info->abi_version != EDJE_EXTERNAL_TYPE_ABI_VERSION) if (itr->info->abi_version != EDJE_EXTERNAL_TYPE_ABI_VERSION)
{ {
ERR("external type '%s' (%p) has incorrect abi " ERR("external type '%s' (%p) has incorrect abi "
"version. got %#x where %#x was expected.", "version. got %#x where %#x was expected.",
itr->name, itr->info, itr->name, itr->info,
itr->info->abi_version, EDJE_EXTERNAL_TYPE_ABI_VERSION); itr->info->abi_version, EDJE_EXTERNAL_TYPE_ABI_VERSION);
continue; continue;
} }
eina_hash_direct_add(type_registry, itr->name, itr->info); eina_hash_direct_add(type_registry, itr->name, itr->info);
} }
} }
@ -236,7 +241,7 @@ edje_external_param_find(const Eina_List *params, const char *key)
Edje_External_Param *param; Edje_External_Param *param;
EINA_LIST_FOREACH(params, l, param) EINA_LIST_FOREACH(params, l, param)
if (!strcmp(param->name, key)) return param; if (!strcmp(param->name, key)) return param;
return NULL; return NULL;
} }
@ -251,8 +256,8 @@ edje_external_param_int_get(const Eina_List *params, const char *key, int *ret)
if (param && param->type == EDJE_EXTERNAL_PARAM_TYPE_INT && ret) if (param && param->type == EDJE_EXTERNAL_PARAM_TYPE_INT && ret)
{ {
*ret = param->i; *ret = param->i;
return EINA_TRUE; return EINA_TRUE;
} }
return EINA_FALSE; return EINA_FALSE;
@ -268,8 +273,8 @@ edje_external_param_double_get(const Eina_List *params, const char *key, double
if (param && param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE && ret) if (param && param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE && ret)
{ {
*ret = param->d; *ret = param->d;
return EINA_TRUE; return EINA_TRUE;
} }
return EINA_FALSE; return EINA_FALSE;
@ -285,8 +290,8 @@ edje_external_param_string_get(const Eina_List *params, const char *key, const c
if (param && param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING && ret) if (param && param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING && ret)
{ {
*ret = param->s; *ret = param->s;
return EINA_TRUE; return EINA_TRUE;
} }
return EINA_FALSE; return EINA_FALSE;
@ -302,8 +307,8 @@ edje_external_param_bool_get(const Eina_List *params, const char *key, Eina_Bool
if (param && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL && ret) if (param && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL && ret)
{ {
*ret = param->i; *ret = param->i;
return EINA_TRUE; return EINA_TRUE;
} }
return EINA_FALSE; return EINA_FALSE;
@ -319,8 +324,8 @@ edje_external_param_choice_get(const Eina_List *params, const char *key, const c
if (param && param->type == EDJE_EXTERNAL_PARAM_TYPE_CHOICE && ret) if (param && param->type == EDJE_EXTERNAL_PARAM_TYPE_CHOICE && ret)
{ {
*ret = param->s; *ret = param->s;
return EINA_TRUE; return EINA_TRUE;
} }
return EINA_FALSE; return EINA_FALSE;
@ -357,8 +362,8 @@ _edje_external_shutdown(void)
{ {
if (--init_count == 0) if (--init_count == 0)
{ {
eina_hash_free(type_registry); eina_hash_free(type_registry);
type_registry = NULL; type_registry = NULL;
} }
} }
@ -371,15 +376,15 @@ _edje_external_type_add(const char *type_name, Evas *evas, Evas_Object *parent,
type = eina_hash_find(type_registry, type_name); type = eina_hash_find(type_registry, type_name);
if (!type) if (!type)
{ {
ERR("external type '%s' not registered", type_name); ERR("external type '%s' not registered", type_name);
return NULL; return NULL;
} }
obj = type->add(type->data, evas, parent, params, part_name); obj = type->add(type->data, evas, parent, params, part_name);
if (!obj) if (!obj)
{ {
ERR("External type '%s' returned NULL from constructor", type_name); ERR("External type '%s' returned NULL from constructor", type_name);
return NULL; return NULL;
} }
evas_object_data_set(obj, "Edje_External_Type", type); evas_object_data_set(obj, "Edje_External_Type", type);
@ -395,8 +400,8 @@ _edje_external_signal_emit(Evas_Object *obj, const char *emission, const char *s
type = evas_object_data_get(obj, "Edje_External_Type"); type = evas_object_data_get(obj, "Edje_External_Type");
if (!type) if (!type)
{ {
ERR("External type data not found."); ERR("External type data not found.");
return; return;
} }
type->signal_emit(type->data, obj, emission, source); type->signal_emit(type->data, obj, emission, source);
@ -406,31 +411,31 @@ Eina_Bool
_edje_external_param_set(Evas_Object *obj, Edje_Real_Part *rp, const Edje_External_Param *param) _edje_external_param_set(Evas_Object *obj, Edje_Real_Part *rp, const Edje_External_Param *param)
{ {
Evas_Object *swallowed_object; Evas_Object *swallowed_object;
if ((rp->type != EDJE_RP_TYPE_SWALLOW) || if ((rp->type != EDJE_RP_TYPE_SWALLOW) ||
(!rp->typedata.swallow)) return EINA_FALSE; (!rp->typedata.swallow)) return EINA_FALSE;
swallowed_object = rp->typedata.swallow->swallowed_object; swallowed_object = rp->typedata.swallow->swallowed_object;
Edje_External_Type *type = evas_object_data_get(swallowed_object, "Edje_External_Type"); Edje_External_Type *type = evas_object_data_get(swallowed_object, "Edje_External_Type");
if (!type) if (!type)
{ {
if ((rp->part->type == EDJE_PART_TYPE_TEXT) || if ((rp->part->type == EDJE_PART_TYPE_TEXT) ||
(rp->part->type == EDJE_PART_TYPE_TEXTBLOCK)) (rp->part->type == EDJE_PART_TYPE_TEXTBLOCK))
{ {
if ((param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING) && if ((param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING) &&
(!strcmp (param->name, "text")) && (obj)) (!strcmp(param->name, "text")) && (obj))
{ {
return edje_object_part_text_set(obj, rp->part->name, param->s); return edje_object_part_text_set(obj, rp->part->name, param->s);
} }
} }
ERR("no external type for object %p", swallowed_object); ERR("no external type for object %p", swallowed_object);
return EINA_FALSE; return EINA_FALSE;
} }
if (!type->param_set) if (!type->param_set)
{ {
ERR("external type '%s' from module '%s' does not provide param_set()", ERR("external type '%s' from module '%s' does not provide param_set()",
type->module_name, type->module); type->module_name, type->module);
return EINA_FALSE; return EINA_FALSE;
} }
return type->param_set(type->data, swallowed_object, param); return type->param_set(type->data, swallowed_object, param);
} }
@ -439,50 +444,50 @@ Eina_Bool
_edje_external_param_get(const Evas_Object *obj, Edje_Real_Part *rp, Edje_External_Param *param) _edje_external_param_get(const Evas_Object *obj, Edje_Real_Part *rp, Edje_External_Param *param)
{ {
Evas_Object *swallowed_object; Evas_Object *swallowed_object;
if ((rp->type != EDJE_RP_TYPE_SWALLOW) || if ((rp->type != EDJE_RP_TYPE_SWALLOW) ||
(!rp->typedata.swallow)) return EINA_FALSE; (!rp->typedata.swallow)) return EINA_FALSE;
swallowed_object = rp->typedata.swallow->swallowed_object; swallowed_object = rp->typedata.swallow->swallowed_object;
Edje_External_Type *type = evas_object_data_get(swallowed_object, "Edje_External_Type"); Edje_External_Type *type = evas_object_data_get(swallowed_object, "Edje_External_Type");
if (!type) if (!type)
{ {
if ((rp->part->type == EDJE_PART_TYPE_TEXT) || if ((rp->part->type == EDJE_PART_TYPE_TEXT) ||
(rp->part->type == EDJE_PART_TYPE_TEXTBLOCK)) (rp->part->type == EDJE_PART_TYPE_TEXTBLOCK))
{ {
const char *text; const char *text;
param->type = EDJE_EXTERNAL_PARAM_TYPE_STRING; param->type = EDJE_EXTERNAL_PARAM_TYPE_STRING;
param->name = "text"; param->name = "text";
text = edje_object_part_text_get(obj, rp->part->name); text = edje_object_part_text_get(obj, rp->part->name);
param->s = text; param->s = text;
return EINA_TRUE; return EINA_TRUE;
} }
ERR("no external type for object %p", swallowed_object); ERR("no external type for object %p", swallowed_object);
return EINA_FALSE; return EINA_FALSE;
} }
if (!type->param_get) if (!type->param_get)
{ {
ERR("external type '%s' from module '%s' does not provide param_get()", ERR("external type '%s' from module '%s' does not provide param_get()",
type->module_name, type->module); type->module_name, type->module);
return EINA_FALSE; return EINA_FALSE;
} }
return type->param_get(type->data, swallowed_object, param); return type->param_get(type->data, swallowed_object, param);
} }
Evas_Object* Evas_Object *
_edje_external_content_get(const Evas_Object *obj, const char *content) _edje_external_content_get(const Evas_Object *obj, const char *content)
{ {
Edje_External_Type *type = evas_object_data_get(obj, "Edje_External_Type"); Edje_External_Type *type = evas_object_data_get(obj, "Edje_External_Type");
if (!type) if (!type)
{ {
ERR("no external type for object %p", obj); ERR("no external type for object %p", obj);
return NULL; return NULL;
} }
if (!type->content_get) if (!type->content_get)
{ {
ERR("external type '%s' from module '%s' does not provide content_get()", ERR("external type '%s' from module '%s' does not provide content_get()",
type->module_name, type->module); type->module_name, type->module);
return NULL; return NULL;
} }
return type->content_get(type->data, obj, content); return type->content_get(type->data, obj, content);
} }
@ -494,41 +499,41 @@ _edje_external_params_free(Eina_List *external_params, Eina_Bool free_strings)
EINA_LIST_FREE(external_params, param) EINA_LIST_FREE(external_params, param)
{ {
if (free_strings) if (free_strings)
{ {
if (param->name) eina_stringshare_del(param->name); if (param->name) eina_stringshare_del(param->name);
if (param->s) eina_stringshare_del(param->s); if (param->s) eina_stringshare_del(param->s);
} }
free(param); free(param);
} }
} }
void void
_edje_external_recalc_apply(Edje *ed EINA_UNUSED, Edje_Real_Part *ep, _edje_external_recalc_apply(Edje *ed EINA_UNUSED, Edje_Real_Part *ep,
Edje_Calc_Params *params EINA_UNUSED, Edje_Calc_Params *params EINA_UNUSED,
Edje_Part_Description_Common *chosen_desc EINA_UNUSED) Edje_Part_Description_Common *chosen_desc EINA_UNUSED)
{ {
Edje_External_Type *type; Edje_External_Type *type;
Edje_Part_Description_External *ext; Edje_Part_Description_External *ext;
void *params1, *params2 = NULL; void *params1, *params2 = NULL;
if ((ep->type != EDJE_RP_TYPE_SWALLOW) || if ((ep->type != EDJE_RP_TYPE_SWALLOW) ||
(!ep->typedata.swallow)) return; (!ep->typedata.swallow)) return;
if (!ep->typedata.swallow->swallowed_object) return; if (!ep->typedata.swallow->swallowed_object) return;
type = evas_object_data_get(ep->typedata.swallow->swallowed_object, "Edje_External_Type"); type = evas_object_data_get(ep->typedata.swallow->swallowed_object, "Edje_External_Type");
if ((!type) || (!type->state_set)) return; if ((!type) || (!type->state_set)) return;
ext = (Edje_Part_Description_External*) ep->param1.description; ext = (Edje_Part_Description_External *)ep->param1.description;
params1 = ep->param1.external_params ? params1 = ep->param1.external_params ?
ep->param1.external_params : ext->external_params; ep->param1.external_params : ext->external_params;
if (ep->param2 && ep->param2->description) if (ep->param2 && ep->param2->description)
{ {
ext = (Edje_Part_Description_External*) ep->param2->description; ext = (Edje_Part_Description_External *)ep->param2->description;
params2 = ep->param2->external_params ? params2 = ep->param2->external_params ?
ep->param2->external_params : ext->external_params; ep->param2->external_params : ext->external_params;
} }
@ -563,3 +568,4 @@ _edje_external_parsed_params_free(Evas_Object *obj, void *params)
type->params_free(params); type->params_free(params);
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -4,7 +4,7 @@ Eina_Bool
_edje_lua_script_only(Edje *ed) _edje_lua_script_only(Edje *ed)
{ {
if ((ed->collection) && (ed->collection->lua_script_only)) if ((ed->collection) && (ed->collection->lua_script_only))
return EINA_TRUE; return EINA_TRUE;
return EINA_FALSE; return EINA_FALSE;
} }
@ -12,48 +12,48 @@ void
_edje_lua_script_only_init(Edje *ed) _edje_lua_script_only_init(Edje *ed)
{ {
if (ed->collection) if (ed->collection)
_edje_lua2_script_init(ed); _edje_lua2_script_init(ed);
} }
void void
_edje_lua_script_only_shutdown(Edje *ed) _edje_lua_script_only_shutdown(Edje *ed)
{ {
if (ed->collection && ed->L) if (ed->collection && ed->L)
_edje_lua2_script_func_shutdown(ed); _edje_lua2_script_func_shutdown(ed);
} }
void void
_edje_lua_script_only_show(Edje * ed) _edje_lua_script_only_show(Edje *ed)
{ {
if (ed->collection && ed->L) if (ed->collection && ed->L)
_edje_lua2_script_func_show(ed); _edje_lua2_script_func_show(ed);
} }
void void
_edje_lua_script_only_hide(Edje * ed) _edje_lua_script_only_hide(Edje *ed)
{ {
if (ed->collection && ed->L) if (ed->collection && ed->L)
_edje_lua2_script_func_hide(ed); _edje_lua2_script_func_hide(ed);
} }
void void
_edje_lua_script_only_move(Edje * ed) _edje_lua_script_only_move(Edje *ed)
{ {
if (ed->collection && ed->L) if (ed->collection && ed->L)
_edje_lua2_script_func_move(ed); _edje_lua2_script_func_move(ed);
} }
void void
_edje_lua_script_only_resize(Edje * ed) _edje_lua_script_only_resize(Edje *ed)
{ {
if (ed->collection && ed->L) if (ed->collection && ed->L)
_edje_lua2_script_func_resize(ed); _edje_lua2_script_func_resize(ed);
} }
void void
_edje_lua_script_only_message(Edje * ed, Edje_Message * em) _edje_lua_script_only_message(Edje *ed, Edje_Message *em)
{ {
if (ed->collection && ed->L) if (ed->collection && ed->L)
_edje_lua2_script_func_message(ed, em); _edje_lua2_script_func_message(ed, em);
} }

View File

@ -1,7 +1,7 @@
#include "edje_private.h" #include "edje_private.h"
static Edje_Version _version = { VMAJ, VMIN, VMIC, VREV }; static Edje_Version _version = { VMAJ, VMIN, VMIC, VREV };
EAPI Edje_Version *edje_version = &_version; EAPI Edje_Version * edje_version = &_version;
static int _edje_init_count = 0; static int _edje_init_count = 0;
static Eina_Bool _need_imf = EINA_FALSE; static Eina_Bool _need_imf = EINA_FALSE;
@ -14,16 +14,16 @@ Eina_Cow *_edje_calc_params_map_cow = NULL;
Eina_Cow *_edje_calc_params_physics_cow = NULL; Eina_Cow *_edje_calc_params_physics_cow = NULL;
static const Edje_Calc_Params_Map default_calc_map = { static const Edje_Calc_Params_Map default_calc_map = {
{ 0, 0, 0 }, { 0.0, 0.0, 0.0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0.0, 0.0 }, NULL, 0 { 0, 0, 0 }, { 0.0, 0.0, 0.0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0.0, 0.0 }, NULL, 0
}; };
static const Edje_Calc_Params_Physics default_calc_physics = { static const Edje_Calc_Params_Physics default_calc_physics = {
0.0, 0.0, 0.0, 0.0, 0.0, { 0.0, 0.0 }, { 0.0, 0.0 }, 0, 0, { { 0, 0, 0 }, { 0, 0, 0 } }, 0, 0, 0, 0 0.0, 0.0, 0.0, 0.0, 0.0, { 0.0, 0.0 }, { 0.0, 0.0 }, 0, 0, { { 0, 0, 0 }, { 0, 0, 0 } }, 0, 0, 0, 0
}; };
/*============================================================================* /*============================================================================*
* API * * API *
*============================================================================*/ *============================================================================*/
EAPI int EAPI int
edje_init(void) edje_init(void)
{ {
@ -38,7 +38,7 @@ edje_init(void)
return --_edje_init_count; return --_edje_init_count;
_edje_default_log_dom = eina_log_domain_register _edje_default_log_dom = eina_log_domain_register
("edje", EDJE_DEFAULT_LOG_COLOR); ("edje", EDJE_DEFAULT_LOG_COLOR);
if (_edje_default_log_dom < 0) if (_edje_default_log_dom < 0)
{ {
EINA_LOG_ERR("Edje Can not create a general log domain."); EINA_LOG_ERR("Edje Can not create a general log domain.");
@ -59,14 +59,14 @@ edje_init(void)
if (!eet_init()) if (!eet_init())
{ {
ERR("Eet init failed"); ERR("Eet init failed");
goto shutdown_embryo; goto shutdown_embryo;
} }
if (!evas_init()) if (!evas_init())
{ {
ERR("Evas init failed"); ERR("Evas init failed");
goto shutdown_eet; goto shutdown_eet;
} }
if (!efreet_init()) if (!efreet_init())
@ -87,25 +87,25 @@ edje_init(void)
edje_signal_init(); edje_signal_init();
_edje_real_part_mp = eina_mempool_add("chained_mempool", _edje_real_part_mp = eina_mempool_add("chained_mempool",
"Edje_Real_Part", NULL, "Edje_Real_Part", NULL,
sizeof (Edje_Real_Part), 256); sizeof (Edje_Real_Part), 256);
if (!_edje_real_part_mp) if (!_edje_real_part_mp)
{ {
ERR("Mempool for Edje_Real_Part cannot be allocated."); ERR("Mempool for Edje_Real_Part cannot be allocated.");
goto shutdown_all; goto shutdown_all;
} }
_edje_real_part_state_mp = eina_mempool_add("chained_mempool", _edje_real_part_state_mp = eina_mempool_add("chained_mempool",
"Edje_Real_Part_State", NULL, "Edje_Real_Part_State", NULL,
sizeof (Edje_Real_Part_State), 64); sizeof (Edje_Real_Part_State), 64);
if (!_edje_real_part_state_mp) if (!_edje_real_part_state_mp)
{ {
ERR("Mempool for Edje_Real_Part_State cannot be allocated."); ERR("Mempool for Edje_Real_Part_State cannot be allocated.");
goto shutdown_all; goto shutdown_all;
} }
_edje_calc_params_map_cow = eina_cow_add("Edje Calc Params Map", sizeof (Edje_Calc_Params_Map), 8, &default_calc_map, EINA_TRUE); _edje_calc_params_map_cow = eina_cow_add("Edje Calc Params Map", sizeof (Edje_Calc_Params_Map), 8, &default_calc_map, EINA_TRUE);
_edje_calc_params_physics_cow= eina_cow_add("Edje Calc Params Physics", sizeof (Edje_Calc_Params_Physics), 8, &default_calc_physics, EINA_TRUE); _edje_calc_params_physics_cow = eina_cow_add("Edje Calc Params Physics", sizeof (Edje_Calc_Params_Physics), 8, &default_calc_physics, EINA_TRUE);
_edje_language = eina_stringshare_add(getenv("LANGUAGE")); _edje_language = eina_stringshare_add(getenv("LANGUAGE"));
@ -115,12 +115,12 @@ edje_init(void)
eina_strbuf_free(str); eina_strbuf_free(str);
eina_log_timing(_edje_default_log_dom, eina_log_timing(_edje_default_log_dom,
EINA_LOG_STATE_STOP, EINA_LOG_STATE_STOP,
EINA_LOG_STATE_INIT); EINA_LOG_STATE_INIT);
return _edje_init_count; return _edje_init_count;
shutdown_all: shutdown_all:
eina_mempool_del(_edje_real_part_state_mp); eina_mempool_del(_edje_real_part_state_mp);
eina_mempool_del(_edje_real_part_mp); eina_mempool_del(_edje_real_part_mp);
_edje_real_part_state_mp = NULL; _edje_real_part_state_mp = NULL;
@ -133,18 +133,18 @@ edje_init(void)
_edje_text_class_hash_free(); _edje_text_class_hash_free();
_edje_edd_shutdown(); _edje_edd_shutdown();
efreet_shutdown(); efreet_shutdown();
shutdown_evas: shutdown_evas:
evas_shutdown(); evas_shutdown();
shutdown_eet: shutdown_eet:
eet_shutdown(); eet_shutdown();
shutdown_embryo: shutdown_embryo:
embryo_shutdown(); embryo_shutdown();
shutdown_ecore: shutdown_ecore:
ecore_shutdown(); ecore_shutdown();
unregister_log_domain: unregister_log_domain:
eina_log_domain_unregister(_edje_default_log_dom); eina_log_domain_unregister(_edje_default_log_dom);
_edje_default_log_dom = -1; _edje_default_log_dom = -1;
shutdown_eina: shutdown_eina:
eina_shutdown(); eina_shutdown();
return --_edje_init_count; return --_edje_init_count;
} }
@ -157,8 +157,8 @@ _edje_shutdown_core(void)
if (_edje_users > 0) return; if (_edje_users > 0) return;
eina_log_timing(_edje_default_log_dom, eina_log_timing(_edje_default_log_dom,
EINA_LOG_STATE_START, EINA_LOG_STATE_START,
EINA_LOG_STATE_SHUTDOWN); EINA_LOG_STATE_SHUTDOWN);
_edje_file_cache_shutdown(); _edje_file_cache_shutdown();
_edje_color_class_members_free(); _edje_color_class_members_free();
@ -251,8 +251,8 @@ _edje_del(Edje *ed)
if (ed->processing_messages) if (ed->processing_messages)
{ {
ed->delete_me = EINA_TRUE; ed->delete_me = EINA_TRUE;
return; return;
} }
_edje_message_del(ed); _edje_message_del(ed);
_edje_signal_callback_free(ed->callbacks); _edje_signal_callback_free(ed->callbacks);
@ -264,7 +264,7 @@ _edje_del(Edje *ed)
ed->group = NULL; ed->group = NULL;
if ((ed->actions) || (ed->pending_actions)) if ((ed->actions) || (ed->pending_actions))
{ {
_edje_animators = eina_list_remove(_edje_animators, ed); _edje_animators = eina_list_remove(_edje_animators, ed);
} }
EINA_LIST_FREE(ed->actions, runp) EINA_LIST_FREE(ed->actions, runp)
free(runp); free(runp);
@ -273,9 +273,9 @@ _edje_del(Edje *ed)
eina_hash_free(ed->color_classes); eina_hash_free(ed->color_classes);
EINA_LIST_FREE(ed->text_classes, tc) EINA_LIST_FREE(ed->text_classes, tc)
{ {
if (tc->name) eina_stringshare_del(tc->name); if (tc->name) eina_stringshare_del(tc->name);
if (tc->font) eina_stringshare_del(tc->font); if (tc->font) eina_stringshare_del(tc->font);
free(tc); free(tc);
} }
EINA_LIST_FREE(ed->text_insert_filter_callbacks, cb) EINA_LIST_FREE(ed->text_insert_filter_callbacks, cb)
{ {
@ -324,3 +324,4 @@ _edje_need_imf(void)
ecore_imf_init(); ecore_imf_init();
#endif #endif
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -28,7 +28,7 @@ _edje_module_handle_load(const char *module)
EINA_SAFETY_ON_NULL_RETURN_VAL(module, NULL); EINA_SAFETY_ON_NULL_RETURN_VAL(module, NULL);
em = (Eina_Module *)eina_hash_find(_registered_modules, module); em = (Eina_Module *)eina_hash_find(_registered_modules, module);
if (em) return em; if (em) return em;
run_in_tree = !!getenv("EFL_RUN_IN_TREE"); run_in_tree = !!getenv("EFL_RUN_IN_TREE");
@ -40,16 +40,16 @@ _edje_module_handle_load(const char *module)
#if defined(HAVE_GETUID) && defined(HAVE_GETEUID) #if defined(HAVE_GETUID) && defined(HAVE_GETEUID)
if (getuid() == geteuid()) if (getuid() == geteuid())
#endif #endif
{ {
if (run_in_tree) if (run_in_tree)
{ {
struct stat st; struct stat st;
snprintf(tmp, sizeof(tmp), "%s/%s/.libs/%s", snprintf(tmp, sizeof(tmp), "%s/%s/.libs/%s",
path, module, EDJE_MODULE_NAME); path, module, EDJE_MODULE_NAME);
if (stat(tmp, &st) != 0) if (stat(tmp, &st) != 0)
tmp[0] = '\0'; tmp[0] = '\0';
} }
} }
if (tmp[0] == '\0') if (tmp[0] == '\0')
snprintf(tmp, sizeof(tmp), "%s/%s/%s/%s", snprintf(tmp, sizeof(tmp), "%s/%s/%s/%s",
@ -82,18 +82,18 @@ _edje_module_init(void)
#if defined(HAVE_GETUID) && defined(HAVE_GETEUID) #if defined(HAVE_GETUID) && defined(HAVE_GETEUID)
if (getuid() == geteuid()) if (getuid() == geteuid())
#endif #endif
{ {
if (getenv("EFL_RUN_IN_TREE")) if (getenv("EFL_RUN_IN_TREE"))
{ {
struct stat st; struct stat st;
const char mp[] = PACKAGE_BUILD_DIR"/src/modules/edje"; const char mp[] = PACKAGE_BUILD_DIR "/src/modules/edje";
if (stat(mp, &st) == 0) if (stat(mp, &st) == 0)
{ {
_modules_paths = eina_list_append(_modules_paths, strdup(mp)); _modules_paths = eina_list_append(_modules_paths, strdup(mp));
return; return;
} }
} }
} }
/* 1. libedje.so/../edje/modules/ */ /* 1. libedje.so/../edje/modules/ */
paths[0] = eina_module_symbol_path_get(_edje_module_init, "/edje/modules"); paths[0] = eina_module_symbol_path_get(_edje_module_init, "/edje/modules");
@ -102,15 +102,15 @@ _edje_module_init(void)
paths[1] = strdup(PACKAGE_LIB_DIR "/edje/modules"); paths[1] = strdup(PACKAGE_LIB_DIR "/edje/modules");
#endif #endif
for (j = 0; j < ((sizeof (paths) / sizeof (char*)) - 1); ++j) for (j = 0; j < ((sizeof (paths) / sizeof (char *)) - 1); ++j)
for (i = j + 1; i < sizeof (paths) / sizeof (char*); ++i) for (i = j + 1; i < sizeof (paths) / sizeof (char *); ++i)
if (paths[i] && paths[j] && !strcmp(paths[i], paths[j])) if (paths[i] && paths[j] && !strcmp(paths[i], paths[j]))
{ {
free(paths[i]); free(paths[i]);
paths[i] = NULL; paths[i] = NULL;
} }
for (i = 0; i < sizeof (paths) / sizeof (char*); ++i) for (i = 0; i < sizeof (paths) / sizeof (char *); ++i)
if (paths[i]) if (paths[i])
_modules_paths = eina_list_append(_modules_paths, paths[i]); _modules_paths = eina_list_append(_modules_paths, paths[i]);
} }
@ -122,8 +122,8 @@ _edje_module_shutdown(void)
if (_registered_modules) if (_registered_modules)
{ {
eina_hash_free(_registered_modules); eina_hash_free(_registered_modules);
_registered_modules = NULL; _registered_modules = NULL;
} }
EINA_LIST_FREE(_modules_paths, path) EINA_LIST_FREE(_modules_paths, path)
@ -145,35 +145,36 @@ edje_available_modules_get(void)
/* FIXME: Stat each possible dir and check if they did change, before starting a huge round of readdir/stat */ /* FIXME: Stat each possible dir and check if they did change, before starting a huge round of readdir/stat */
if (_modules_found) if (_modules_found)
{ {
EINA_LIST_FREE(_modules_found, path) EINA_LIST_FREE(_modules_found, path)
eina_stringshare_del(path); eina_stringshare_del(path);
} }
EINA_LIST_FOREACH(_modules_paths, l, path) EINA_LIST_FOREACH(_modules_paths, l, path)
{ {
it = eina_file_direct_ls(path); it = eina_file_direct_ls(path);
if (it) if (it)
{ {
EINA_ITERATOR_FOREACH(it, info) EINA_ITERATOR_FOREACH(it, info)
{ {
char tmp[PATH_MAX]; char tmp[PATH_MAX];
snprintf(tmp, sizeof (tmp), "%s/%s/" EDJE_MODULE_NAME, info->path, MODULE_ARCH snprintf(tmp, sizeof (tmp), "%s/%s/" EDJE_MODULE_NAME, info->path, MODULE_ARCH
#ifdef EDJE_EXTRA_MODULE_NAME #ifdef EDJE_EXTRA_MODULE_NAME
, info->path + info->name_start , info->path + info->name_start
#endif #endif
); );
if (ecore_file_exists(tmp)) if (ecore_file_exists(tmp))
result = eina_list_append(result, eina_stringshare_add(info->path + info->name_start)); result = eina_list_append(result, eina_stringshare_add(info->path + info->name_start));
} }
eina_iterator_free(it); eina_iterator_free(it);
} }
} }
_modules_found = result; _modules_found = result;
return result; return result;
} }

View File

@ -7,14 +7,16 @@ static Eo *out = NULL;
static int outs = 0; static int outs = 0;
static Eina_Bool outfail = EINA_FALSE; static Eina_Bool outfail = EINA_FALSE;
static Eina_Bool _play_finished(void *data EINA_UNUSED, Eo *in, const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED) static Eina_Bool
_play_finished(void *data EINA_UNUSED, Eo *in, const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED)
{ {
eo_del(in); eo_del(in);
return EINA_TRUE; return EINA_TRUE;
} }
static Eina_Bool _out_fail(void *data EINA_UNUSED, Eo *output EINA_UNUSED, const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED) static Eina_Bool
_out_fail(void *data EINA_UNUSED, Eo *output EINA_UNUSED, const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED)
{ {
outfail = EINA_TRUE; outfail = EINA_TRUE;
eo_del(out); eo_del(out);
@ -24,9 +26,9 @@ static Eina_Bool _out_fail(void *data EINA_UNUSED, Eo *output EINA_UNUSED, const
struct _edje_multisense_eet_data struct _edje_multisense_eet_data
{ {
unsigned int offset, length; unsigned int offset, length;
Eet_File *ef; Eet_File *ef;
const char *data; const char *data;
Ecore_Audio_Vio vio; Ecore_Audio_Vio vio;
}; };
@ -43,19 +45,22 @@ eet_snd_file_seek(void *data, Eo *eo_obj EINA_UNUSED, int offset, int whence)
struct _edje_multisense_eet_data *vf = data; struct _edje_multisense_eet_data *vf = data;
switch (whence) switch (whence)
{ {
case SEEK_SET: case SEEK_SET:
vf->offset = offset; vf->offset = offset;
break; break;
case SEEK_CUR: case SEEK_CUR:
vf->offset += offset; vf->offset += offset;
break; break;
case SEEK_END: case SEEK_END:
vf->offset = vf->length + offset; vf->offset = vf->length + offset;
break; break;
default:
break; default:
} break;
}
return vf->offset; return vf->offset;
} }
@ -85,7 +90,7 @@ _free(void *data)
struct _edje_multisense_eet_data *eet_data = data; struct _edje_multisense_eet_data *eet_data = data;
if (eet_data->ef) eet_close(eet_data->ef); if (eet_data->ef) eet_close(eet_data->ef);
// don't free if eet_data->data comes from eet_read_direct // don't free if eet_data->data comes from eet_read_direct
// free(eet_data->data); // free(eet_data->data);
free(data); free(data);
outs--; outs--;
@ -110,11 +115,11 @@ EAPI void
edje_audio_channel_mute_set(Edje_Channel channel, Eina_Bool mute) edje_audio_channel_mute_set(Edje_Channel channel, Eina_Bool mute)
{ {
#ifdef ENABLE_MULTISENSE #ifdef ENABLE_MULTISENSE
if ((unsigned) channel > 7) return; if ((unsigned)channel > 7) return;
_channel_mute_states[channel] = mute; _channel_mute_states[channel] = mute;
#else #else
(void) channel; (void)channel;
(void) mute; (void)mute;
#endif #endif
} }
@ -122,10 +127,10 @@ EAPI Eina_Bool
edje_audio_channel_mute_get(Edje_Channel channel) edje_audio_channel_mute_get(Edje_Channel channel)
{ {
#ifdef ENABLE_MULTISENSE #ifdef ENABLE_MULTISENSE
if ((unsigned) channel > 7) return EINA_FALSE; if ((unsigned)channel > 7) return EINA_FALSE;
return _channel_mute_states[channel]; return _channel_mute_states[channel];
#else #else
(void) channel; (void)channel;
return EINA_FALSE; return EINA_FALSE;
#endif #endif
} }
@ -141,9 +146,9 @@ _edje_multisense_internal_sound_sample_play(Edje *ed, const char *sample_name, c
Eina_Bool ret = EINA_FALSE; Eina_Bool ret = EINA_FALSE;
if (_channel_mute(ed, channel)) return EINA_FALSE; if (_channel_mute(ed, channel)) return EINA_FALSE;
if (outfail) return EINA_FALSE; if (outfail) return EINA_FALSE;
if (!sample_name) if (!sample_name)
{ {
ERR("Given Sample Name is NULL\n"); ERR("Given Sample Name is NULL\n");
@ -153,91 +158,91 @@ _edje_multisense_internal_sound_sample_play(Edje *ed, const char *sample_name, c
if ((!ed) || (!ed->file) || (!ed->file->sound_dir)) if ((!ed) || (!ed->file) || (!ed->file->sound_dir))
return EINA_FALSE; return EINA_FALSE;
for(i=0; i<(int)ed->file->sound_dir->samples_count; i++) for (i = 0; i < (int)ed->file->sound_dir->samples_count; i++)
{ {
sample = &ed->file->sound_dir->samples[i]; sample = &ed->file->sound_dir->samples[i];
if (!strcmp(sample->name, sample_name)) if (!strcmp(sample->name, sample_name))
{ {
struct _edje_multisense_eet_data *eet_data; struct _edje_multisense_eet_data *eet_data;
int len; int len;
snprintf(snd_id_str, sizeof(snd_id_str), "edje/sounds/%i", sample->id); snprintf(snd_id_str, sizeof(snd_id_str), "edje/sounds/%i", sample->id);
eet_data = calloc(1, sizeof(struct _edje_multisense_eet_data));
if (!eet_data)
{
ERR("Out of memory in allocating multisense sample info");
return EINA_FALSE;
}
// open eet file again to esnure we have reference because we
// use eet_read_direct to avoid duplicating/copying into memory
// by relying on a direct mmap, but this means we need to close
// the eet file handle instead of freeing data
eet_data->ef = eet_mmap(ed->file->f);
if (!eet_data->ef)
{
ERR("Cannot open edje file '%s' for samples", ed->path);
free(eet_data);
return EINA_FALSE;
}
eet_data->data = eet_read_direct(eet_data->ef, snd_id_str, &len);
if (len <= 0)
{
ERR("Sample form edj file '%s' is 0 length", ed->path);
eet_close(eet_data->ef);
free(eet_data);
return EINA_FALSE;
}
eet_data->length = len;
/* action->speed */
eet_data->vio.get_length = eet_snd_file_get_length; eet_data = calloc(1, sizeof(struct _edje_multisense_eet_data));
eet_data->vio.seek = eet_snd_file_seek; if (!eet_data)
eet_data->vio.read = eet_snd_file_read; {
eet_data->vio.tell = eet_snd_file_tell; ERR("Out of memory in allocating multisense sample info");
eet_data->offset = 0; return EINA_FALSE;
}
// open eet file again to esnure we have reference because we
// use eet_read_direct to avoid duplicating/copying into memory
// by relying on a direct mmap, but this means we need to close
// the eet file handle instead of freeing data
eet_data->ef = eet_mmap(ed->file->f);
if (!eet_data->ef)
{
ERR("Cannot open edje file '%s' for samples", ed->path);
free(eet_data);
return EINA_FALSE;
}
eet_data->data = eet_read_direct(eet_data->ef, snd_id_str, &len);
if (len <= 0)
{
ERR("Sample form edj file '%s' is 0 length", ed->path);
eet_close(eet_data->ef);
free(eet_data);
return EINA_FALSE;
}
eet_data->length = len;
/* action->speed */
in = eo_add(ECORE_AUDIO_IN_SNDFILE_CLASS, NULL, eet_data->vio.get_length = eet_snd_file_get_length;
ecore_audio_obj_name_set(snd_id_str), eet_data->vio.seek = eet_snd_file_seek;
ecore_audio_obj_in_speed_set(speed), eet_data->vio.read = eet_snd_file_read;
ecore_audio_obj_vio_set(&eet_data->vio, eet_data, _free), eet_data->vio.tell = eet_snd_file_tell;
eo_event_callback_add(ECORE_AUDIO_IN_EVENT_IN_STOPPED, _play_finished, NULL)); eet_data->offset = 0;
if (!out)
{ in = eo_add(ECORE_AUDIO_IN_SNDFILE_CLASS, NULL,
ecore_audio_obj_name_set(snd_id_str),
ecore_audio_obj_in_speed_set(speed),
ecore_audio_obj_vio_set(&eet_data->vio, eet_data, _free),
eo_event_callback_add(ECORE_AUDIO_IN_EVENT_IN_STOPPED, _play_finished, NULL));
if (!out)
{
#if HAVE_COREAUDIO #if HAVE_COREAUDIO
out = eo_add(ECORE_AUDIO_OUT_CORE_AUDIO_CLASS, NULL); out = eo_add(ECORE_AUDIO_OUT_CORE_AUDIO_CLASS, NULL);
#elif HAVE_PULSE #elif HAVE_PULSE
out = eo_add(ECORE_AUDIO_OUT_PULSE_CLASS, NULL, out = eo_add(ECORE_AUDIO_OUT_PULSE_CLASS, NULL,
eo_event_callback_add(ECORE_AUDIO_OUT_PULSE_EVENT_CONTEXT_FAIL, _out_fail, NULL)); eo_event_callback_add(ECORE_AUDIO_OUT_PULSE_EVENT_CONTEXT_FAIL, _out_fail, NULL));
#endif #endif
if (out) outs++; if (out) outs++;
} }
if (!out) if (!out)
{ {
#if HAVE_COREAUDIO #if HAVE_COREAUDIO
ERR("Could not create multisense audio out (CoreAudio)"); ERR("Could not create multisense audio out (CoreAudio)");
#elif HAVE_PULSE #elif HAVE_PULSE
ERR("Could not create multisense audio out (pulse)"); ERR("Could not create multisense audio out (pulse)");
#endif #endif
eo_del(in); eo_del(in);
return EINA_FALSE; return EINA_FALSE;
} }
eo_do(out, ret = ecore_audio_obj_out_input_attach(in)); eo_do(out, ret = ecore_audio_obj_out_input_attach(in));
if (!ret) if (!ret)
{ {
ERR("Could not attach input"); ERR("Could not attach input");
eo_del(in); eo_del(in);
return EINA_FALSE; return EINA_FALSE;
} }
} }
} }
return EINA_TRUE; return EINA_TRUE;
#else #else
// warning shh // warning shh
(void) ed; (void)ed;
(void) sample_name; (void)sample_name;
(void) speed; (void)speed;
(void) channel; (void)channel;
return EINA_FALSE; return EINA_FALSE;
#endif #endif
} }
@ -256,15 +261,15 @@ _edje_multisense_internal_sound_tone_play(Edje *ed, const char *tone_name, const
ERR("Given Tone Name is NULL"); ERR("Given Tone Name is NULL");
return EINA_FALSE; return EINA_FALSE;
} }
if (_channel_mute(ed, channel)) return EINA_FALSE; if (_channel_mute(ed, channel)) return EINA_FALSE;
if (outfail) return EINA_FALSE; if (outfail) return EINA_FALSE;
if ((!ed) || (!ed->file) || (!ed->file->sound_dir)) if ((!ed) || (!ed->file) || (!ed->file->sound_dir))
return EINA_FALSE; return EINA_FALSE;
for (i=0; i<ed->file->sound_dir->tones_count; i++) for (i = 0; i < ed->file->sound_dir->tones_count; i++)
{ {
tone = &ed->file->sound_dir->tones[i]; tone = &ed->file->sound_dir->tones[i];
if (!strcmp(tone->name, tone_name)) if (!strcmp(tone->name, tone_name))
@ -287,34 +292,34 @@ _edje_multisense_internal_sound_tone_play(Edje *ed, const char *tone_name, const
} }
eo_do(out, ret = ecore_audio_obj_out_input_attach(in)); eo_do(out, ret = ecore_audio_obj_out_input_attach(in));
if (!ret) { if (!ret)
ERR("Could not attach input"); {
eo_del(in); ERR("Could not attach input");
return EINA_FALSE; eo_del(in);
} return EINA_FALSE;
}
} }
} }
return EINA_TRUE; return EINA_TRUE;
#else #else
// warning shh // warning shh
(void) ed; (void)ed;
(void) duration; (void)duration;
(void) tone_name; (void)tone_name;
(void) channel; (void)channel;
return EINA_FALSE; return EINA_FALSE;
#endif #endif
} }
Eina_Bool Eina_Bool
_edje_multisense_internal_vibration_sample_play(Edje *ed EINA_UNUSED, const char *sample_name EINA_UNUSED, int repeat EINA_UNUSED) _edje_multisense_internal_vibration_sample_play(Edje *ed EINA_UNUSED, const char *sample_name EINA_UNUSED, int repeat EINA_UNUSED)
{ {
#ifdef ENABLE_MULTISENSE #ifdef ENABLE_MULTISENSE
ERR("Vibration is not supported yet, name:%s, repeat:%d", sample_name, repeat); ERR("Vibration is not supported yet, name:%s, repeat:%d", sample_name, repeat);
return EINA_FALSE; return EINA_FALSE;
#else #else
(void) ed; (void)ed;
(void) repeat; (void)repeat;
return EINA_FALSE; return EINA_FALSE;
#endif #endif
} }
@ -345,3 +350,4 @@ _edje_multisense_shutdown(void)
ecore_audio_shutdown(); ecore_audio_shutdown();
#endif #endif
} }

File diff suppressed because it is too large Load Diff

View File

@ -22,7 +22,7 @@ _edje_signal_match_key_cmp(const void *key1, int key1_length EINA_UNUSED, const
{ {
if (a->matches[i].signal != b->matches[i].signal) return a->matches[i].signal - b->matches[i].signal; if (a->matches[i].signal != b->matches[i].signal) return a->matches[i].signal - b->matches[i].signal;
if (a->matches[i].source != b->matches[i].source) return a->matches[i].source - b->matches[i].source; if (a->matches[i].source != b->matches[i].source) return a->matches[i].source - b->matches[i].source;
if (a->matches[i].func != b->matches[i].func) return (unsigned char*) a->matches[i].func - (unsigned char*) b->matches[i].func; if (a->matches[i].func != b->matches[i].func) return (unsigned char *)a->matches[i].func - (unsigned char *)b->matches[i].func;
} }
return 0; return 0;
} }
@ -37,13 +37,13 @@ _edje_signal_match_key_hash(const void *key, int key_length EINA_UNUSED)
for (i = 0; i < a->matches_count; ++i) for (i = 0; i < a->matches_count; ++i)
{ {
#ifdef EFL64 #ifdef EFL64
hash ^= eina_hash_int64((const unsigned long long int*) &a->matches[i].signal, sizeof (char *)); hash ^= eina_hash_int64((const unsigned long long int *)&a->matches[i].signal, sizeof (char *));
hash ^= eina_hash_int64((const unsigned long long int*) &a->matches[i].source, sizeof (char *)); hash ^= eina_hash_int64((const unsigned long long int *)&a->matches[i].source, sizeof (char *));
hash ^= eina_hash_int64((const unsigned long long int*) &a->matches[i].func, sizeof (Edje_Signal_Cb)); hash ^= eina_hash_int64((const unsigned long long int *)&a->matches[i].func, sizeof (Edje_Signal_Cb));
#else #else
hash ^= eina_hash_int32((const unsigned int*) a->matches[i].signal, sizeof (char *)); hash ^= eina_hash_int32((const unsigned int *)a->matches[i].signal, sizeof (char *));
hash ^= eina_hash_int32((const unsigned int*) a->matches[i].source, sizeof (char *)); hash ^= eina_hash_int32((const unsigned int *)a->matches[i].source, sizeof (char *));
hash ^= eina_hash_int32((const unsigned int*) a->matches[i].func, sizeof (Edje_Signal_Cb)); hash ^= eina_hash_int32((const unsigned int *)a->matches[i].func, sizeof (Edje_Signal_Cb));
#endif #endif
} }
return hash; return hash;
@ -66,9 +66,9 @@ _edje_signal_callback_matches_dup(const Edje_Signal_Callback_Matches *src)
for (i = 0; i < src->matches_count; i++) for (i = 0; i < src->matches_count; i++)
{ {
result->matches[i].signal = eina_stringshare_ref(src->matches[i].signal); result->matches[i].signal = eina_stringshare_ref(src->matches[i].signal);
result->matches[i].source = eina_stringshare_ref(src->matches[i].source); result->matches[i].source = eina_stringshare_ref(src->matches[i].source);
result->matches[i].func = src->matches[i].func; result->matches[i].func = src->matches[i].func;
} }
return result; return result;
@ -80,7 +80,7 @@ _edje_callbacks_patterns_clean(Edje_Signal_Callback_Group *gp)
Edje_Signal_Callback_Matches *tmp; Edje_Signal_Callback_Matches *tmp;
assert(EINA_REFCOUNT_GET(gp->matches) == 1); assert(EINA_REFCOUNT_GET(gp->matches) == 1);
tmp = (Edje_Signal_Callback_Matches*) gp->matches; tmp = (Edje_Signal_Callback_Matches *)gp->matches;
_edje_signal_callback_patterns_unref(tmp->patterns); _edje_signal_callback_patterns_unref(tmp->patterns);
tmp->patterns = NULL; tmp->patterns = NULL;
@ -94,15 +94,15 @@ _edje_callbacks_patterns_init(Edje_Signal_Callback_Group *gp)
if (gp->matches->patterns) return; if (gp->matches->patterns) return;
tmp = (Edje_Signal_Callback_Matches*) gp->matches; tmp = (Edje_Signal_Callback_Matches *)gp->matches;
tmp->patterns = calloc(1, sizeof (Edje_Signals_Sources_Patterns)); tmp->patterns = calloc(1, sizeof (Edje_Signals_Sources_Patterns));
if (!gp->matches->patterns) return; if (!gp->matches->patterns) return;
ssp = gp->matches->patterns; ssp = gp->matches->patterns;
edje_match_callback_hash_build(gp->matches->matches, edje_match_callback_hash_build(gp->matches->matches,
gp->matches->matches_count, gp->matches->matches_count,
&ssp->exact_match, &ssp->exact_match,
&ssp->u.callbacks.globing); &ssp->u.callbacks.globing);
ssp->signals_patterns = edje_match_callback_signal_init(&ssp->u.callbacks.globing, tmp->matches); ssp->signals_patterns = edje_match_callback_signal_init(&ssp->u.callbacks.globing, tmp->matches);
ssp->sources_patterns = edje_match_callback_source_init(&ssp->u.callbacks.globing, tmp->matches); ssp->sources_patterns = edje_match_callback_source_init(&ssp->u.callbacks.globing, tmp->matches);
@ -160,10 +160,10 @@ _edje_signal_callback_grow(Edje_Signal_Callback_Group *gp)
{ {
Edje_Signal_Callback_Matches *tmp; Edje_Signal_Callback_Matches *tmp;
tmp = (Edje_Signal_Callback_Matches*) gp->matches; tmp = (Edje_Signal_Callback_Matches *)gp->matches;
tmp->matches_count++; tmp->matches_count++;
tmp->matches = realloc(tmp->matches, sizeof (Edje_Signal_Callback_Match) * tmp->matches_count); tmp->matches = realloc(tmp->matches, sizeof (Edje_Signal_Callback_Match) * tmp->matches_count);
gp->custom_data = realloc(gp->custom_data, sizeof (void*) * tmp->matches_count); gp->custom_data = realloc(gp->custom_data, sizeof (void *) * tmp->matches_count);
gp->flags = realloc(gp->flags, sizeof (Edje_Signal_Callback_Flags) * tmp->matches_count); gp->flags = realloc(gp->flags, sizeof (Edje_Signal_Callback_Flags) * tmp->matches_count);
return gp; return gp;
@ -174,7 +174,7 @@ _edje_signal_callback_push(const Edje_Signal_Callback_Group *cgp,
const char *sig, const char *src, const char *sig, const char *src,
Edje_Signal_Cb func, void *data, Eina_Bool propagate) Edje_Signal_Cb func, void *data, Eina_Bool propagate)
{ {
Edje_Signal_Callback_Group *gp = (Edje_Signal_Callback_Group*) cgp; Edje_Signal_Callback_Group *gp = (Edje_Signal_Callback_Group *)cgp;
unsigned int i; unsigned int i;
Edje_Signal_Callback_Flags flags; Edje_Signal_Callback_Flags flags;
@ -200,7 +200,7 @@ _edje_signal_callback_push(const Edje_Signal_Callback_Group *cgp,
{ {
Edje_Signal_Callback_Matches *tmp; Edje_Signal_Callback_Matches *tmp;
tmp = (Edje_Signal_Callback_Matches*) gp->matches; tmp = (Edje_Signal_Callback_Matches *)gp->matches;
if (EINA_REFCOUNT_GET(tmp) == 1) if (EINA_REFCOUNT_GET(tmp) == 1)
{ {
@ -210,7 +210,7 @@ _edje_signal_callback_push(const Edje_Signal_Callback_Group *cgp,
else else
{ {
Edje_Signal_Callback_Matches *tmp_dup; Edje_Signal_Callback_Matches *tmp_dup;
tmp_dup = (Edje_Signal_Callback_Matches*) _edje_signal_callback_matches_dup(tmp); tmp_dup = (Edje_Signal_Callback_Matches *)_edje_signal_callback_matches_dup(tmp);
if (!tmp_dup) return; if (!tmp_dup) return;
EINA_REFCOUNT_UNREF(tmp) EINA_REFCOUNT_UNREF(tmp)
(void) 0; // Nothing to do because the case where refcount == 1 was already handle above. (void) 0; // Nothing to do because the case where refcount == 1 was already handle above.
@ -264,32 +264,32 @@ void
_edje_signal_callback_matches_unref(Edje_Signal_Callback_Matches *m) _edje_signal_callback_matches_unref(Edje_Signal_Callback_Matches *m)
{ {
EINA_REFCOUNT_UNREF(m) EINA_REFCOUNT_UNREF(m)
{ {
unsigned int i; unsigned int i;
_edje_signal_callback_patterns_unref(m->patterns); _edje_signal_callback_patterns_unref(m->patterns);
if (m->hashed) if (m->hashed)
eina_hash_del(signal_match, m, m); eina_hash_del(signal_match, m, m);
for (i = 0; i < m->matches_count; ++i) for (i = 0; i < m->matches_count; ++i)
{ {
eina_stringshare_del(m->matches[i].signal); eina_stringshare_del(m->matches[i].signal);
eina_stringshare_del(m->matches[i].source); eina_stringshare_del(m->matches[i].source);
} }
free(m->matches); free(m->matches);
free(m); free(m);
} }
} }
void void
_edje_signal_callback_free(const Edje_Signal_Callback_Group *cgp) _edje_signal_callback_free(const Edje_Signal_Callback_Group *cgp)
{ {
Edje_Signal_Callback_Group *gp = (Edje_Signal_Callback_Group*) cgp; Edje_Signal_Callback_Group *gp = (Edje_Signal_Callback_Group *)cgp;
if (!gp) return; if (!gp) return;
_edje_signal_callback_matches_unref((Edje_Signal_Callback_Matches*) gp->matches); _edje_signal_callback_matches_unref((Edje_Signal_Callback_Matches *)gp->matches);
gp->matches = NULL; gp->matches = NULL;
free(gp->flags); free(gp->flags);
free(gp->custom_data); free(gp->custom_data);
@ -301,7 +301,7 @@ _edje_signal_callback_disable(const Edje_Signal_Callback_Group *cgp,
const char *sig, const char *src, const char *sig, const char *src,
Edje_Signal_Cb func, void *data) Edje_Signal_Cb func, void *data)
{ {
Edje_Signal_Callback_Group *gp = (Edje_Signal_Callback_Group*) cgp; Edje_Signal_Callback_Group *gp = (Edje_Signal_Callback_Group *)cgp;
unsigned int i; unsigned int i;
if (!gp || !gp->matches) return NULL; if (!gp || !gp->matches) return NULL;
@ -343,7 +343,7 @@ _edje_signal_callback_move_last(Edje_Signal_Callback_Group *gp,
Edje_Signal_Callback_Matches *m; Edje_Signal_Callback_Matches *m;
unsigned int j; unsigned int j;
m = (Edje_Signal_Callback_Matches*) gp->matches; m = (Edje_Signal_Callback_Matches *)gp->matches;
for (j = --m->matches_count; j > i; --j) for (j = --m->matches_count; j > i; --j)
{ {
@ -364,7 +364,7 @@ const Edje_Signals_Sources_Patterns *
_edje_signal_callback_patterns_ref(const Edje_Signal_Callback_Group *gp) _edje_signal_callback_patterns_ref(const Edje_Signal_Callback_Group *gp)
{ {
const Edje_Signal_Callback_Matches *m; const Edje_Signal_Callback_Matches *m;
Edje_Signal_Callback_Matches *tmp; Edje_Signal_Callback_Matches *tmp;
if (gp->matches->hashed) if (gp->matches->hashed)
goto got_it; goto got_it;
@ -372,7 +372,7 @@ _edje_signal_callback_patterns_ref(const Edje_Signal_Callback_Group *gp)
m = eina_hash_find(signal_match, gp->matches); m = eina_hash_find(signal_match, gp->matches);
if (!m) if (!m)
{ {
tmp = (Edje_Signal_Callback_Matches*) gp->matches; tmp = (Edje_Signal_Callback_Matches *)gp->matches;
if (!(tmp->patterns && (EINA_REFCOUNT_GET(tmp->patterns) > 1))) if (!(tmp->patterns && (EINA_REFCOUNT_GET(tmp->patterns) > 1)))
{ {
// Let compact it and remove uneeded pattern before building it // Let compact it and remove uneeded pattern before building it
@ -382,31 +382,30 @@ _edje_signal_callback_patterns_ref(const Edje_Signal_Callback_Group *gp)
for (i = 0; i < tmp->matches_count; i++) for (i = 0; i < tmp->matches_count; i++)
{ {
if (gp->flags[i].delete_me) if (gp->flags[i].delete_me)
_edje_signal_callback_move_last((Edje_Signal_Callback_Group*) gp, i); _edje_signal_callback_move_last((Edje_Signal_Callback_Group *)gp, i);
} }
} }
_edje_signal_callback_patterns_unref(tmp->patterns); _edje_signal_callback_patterns_unref(tmp->patterns);
tmp->patterns = NULL; tmp->patterns = NULL;
_edje_callbacks_patterns_init((Edje_Signal_Callback_Group*) gp); _edje_callbacks_patterns_init((Edje_Signal_Callback_Group *)gp);
eina_hash_add(signal_match, tmp, tmp); eina_hash_add(signal_match, tmp, tmp);
// We should be able to use direct_add, but if I do so valgrind stack explode and // We should be able to use direct_add, but if I do so valgrind stack explode and
// it bagain to be a pain to debug efl apps. I can't understand what is going on. // it bagain to be a pain to debug efl apps. I can't understand what is going on.
// eina_hash_direct_add(signal_match, tmp, tmp); // eina_hash_direct_add(signal_match, tmp, tmp);
tmp->hashed = EINA_TRUE; tmp->hashed = EINA_TRUE;
} }
else else
{ {
_edje_signal_callback_matches_unref((Edje_Signal_Callback_Matches*) gp->matches); _edje_signal_callback_matches_unref((Edje_Signal_Callback_Matches *)gp->matches);
((Edje_Signal_Callback_Group*)gp)->matches = m; ((Edje_Signal_Callback_Group *)gp)->matches = m;
tmp = (Edje_Signal_Callback_Matches*) gp->matches; tmp = (Edje_Signal_Callback_Matches *)gp->matches;
EINA_REFCOUNT_REF(tmp); EINA_REFCOUNT_REF(tmp);
} }
got_it: got_it:
tmp = (Edje_Signal_Callback_Matches*) gp->matches; tmp = (Edje_Signal_Callback_Matches *)gp->matches;
EINA_REFCOUNT_REF(tmp->patterns); EINA_REFCOUNT_REF(tmp->patterns);
return gp->matches->patterns; return gp->matches->patterns;
@ -419,7 +418,7 @@ _edje_signal_callback_patterns_unref(const Edje_Signals_Sources_Patterns *essp)
if (!essp) return; if (!essp) return;
ssp = (Edje_Signals_Sources_Patterns*) essp; ssp = (Edje_Signals_Sources_Patterns *)essp;
EINA_REFCOUNT_UNREF(ssp) EINA_REFCOUNT_UNREF(ssp)
{ {

View File

@ -6,9 +6,9 @@
# undef MY_CLASS # undef MY_CLASS
#endif #endif
#define MY_CLASS EDJE_OBJECT_CLASS #define MY_CLASS EDJE_OBJECT_CLASS
#define MY_CLASS_NAME "Edje" #define MY_CLASS_NAME "Edje"
#define MY_CLASS_NAME_LEGACY "edje" #define MY_CLASS_NAME_LEGACY "edje"
Eina_List *_edje_edjes = NULL; Eina_List *_edje_edjes = NULL;
@ -59,7 +59,7 @@ _edje_object_eo_base_dbg_info_get(Eo *eo_obj, Edje *_pd EINA_UNUSED, Eo_Dbg_Info
if (error != EDJE_LOAD_ERROR_NONE) if (error != EDJE_LOAD_ERROR_NONE)
{ {
EO_DBG_INFO_APPEND(group, "Error", EINA_VALUE_TYPE_STRING, EO_DBG_INFO_APPEND(group, "Error", EINA_VALUE_TYPE_STRING,
edje_load_error_str(error)); edje_load_error_str(error));
} }
} }
@ -72,7 +72,6 @@ _edje_color_class_free(void *data)
free(cc); free(cc);
} }
/* Private Routines */ /* Private Routines */
EOLIAN static void EOLIAN static void
_edje_object_evas_object_smart_add(Eo *obj, Edje *ed) _edje_object_evas_object_smart_add(Eo *obj, Edje *ed)
@ -93,7 +92,7 @@ _edje_object_evas_object_smart_add(Eo *obj, Edje *ed)
ed->obj = obj; ed->obj = obj;
_edje_edjes = eina_list_append(_edje_edjes, obj); _edje_edjes = eina_list_append(_edje_edjes, obj);
/* /*
{ {
Eina_List *l; Eina_List *l;
const void *data; const void *data;
@ -104,8 +103,8 @@ _edje_object_evas_object_smart_add(Eo *obj, Edje *ed)
printf("EDJE: %80s | %80s\n", ed->path, ed->part); printf("EDJE: %80s | %80s\n", ed->path, ed->part);
} }
printf("--- EDJE DUMP [%i]\n", eina_list_count(_edje_edjes)); printf("--- EDJE DUMP [%i]\n", eina_list_count(_edje_edjes));
} }
*/ */
evas_event_thaw(tev); evas_event_thaw(tev);
evas_event_thaw_eval(tev); evas_event_thaw_eval(tev);
} }
@ -168,9 +167,9 @@ _edje_object_evas_object_smart_move(Eo *obj EINA_UNUSED, Edje *ed, Evas_Coord x,
{ {
if (ep->typedata.swallow->swallowed_object) if (ep->typedata.swallow->swallowed_object)
evas_object_move evas_object_move
(ep->typedata.swallow->swallowed_object, (ep->typedata.swallow->swallowed_object,
ed->x + ep->x, ed->x + ep->x,
ed->y + ep->y); ed->y + ep->y);
} }
} }
if (ep->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) if (ep->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
@ -236,9 +235,9 @@ _edje_object_evas_object_smart_resize(Eo *obj EINA_UNUSED, Edje *ed, Evas_Coord
ed->h = h; ed->h = h;
#ifdef HAVE_EPHYSICS #ifdef HAVE_EPHYSICS
if ((ed->collection) && (ed->world)) if ((ed->collection) && (ed->world))
ephysics_world_render_geometry_set( ephysics_world_render_geometry_set(
ed->world, ed->x, ed->y, ed->collection->physics.world.z, ed->world, ed->x, ed->y, ed->collection->physics.world.z,
ed->w, ed->h, ed->collection->physics.world.depth); ed->w, ed->h, ed->collection->physics.world.depth);
#endif #endif
#ifdef EDJE_CALC_CACHE #ifdef EDJE_CALC_CACHE
ed->all_part_change = EINA_TRUE; ed->all_part_change = EINA_TRUE;
@ -318,7 +317,7 @@ _edje_object_efl_file_file_set(Eo *obj, Edje *_pd EINA_UNUSED, const char *file,
if (file) if (file)
{ {
f = eina_file_open(file, EINA_FALSE); f = eina_file_open(file, EINA_FALSE);
if (!f) if (!f)
{ {
Edje *ed; Edje *ed;
@ -386,7 +385,7 @@ edje_object_file_set(Edje_Object *obj, const char *file, const char *group)
EAPI void EAPI void
edje_object_file_get(const Edje_Object *obj, const char **file, const char **group) edje_object_file_get(const Edje_Object *obj, const char **file, const char **group)
{ {
eo_do((Edje_Object *) obj, efl_file_get(file, group)); eo_do((Edje_Object *)obj, efl_file_get(file, group));
} }
#include "edje_object.eo.c" #include "edje_object.eo.c"

View File

@ -34,7 +34,7 @@ _set_translated_string(Edje *ed, Edje_Real_Part *ep)
const char *text = NULL; const char *text = NULL;
Edje_Part_Description_Text *chosen_desc; Edje_Part_Description_Text *chosen_desc;
chosen_desc = (Edje_Part_Description_Text*)ep->chosen_description; chosen_desc = (Edje_Part_Description_Text *)ep->chosen_description;
domain = chosen_desc->text.domain; domain = chosen_desc->text.domain;
text = edje_string_get(&chosen_desc->text.text); text = edje_string_get(&chosen_desc->text.text);
@ -76,14 +76,14 @@ _edje_text_part_on_add(Edje *ed, Edje_Real_Part *ep)
if (ep->part->type != EDJE_PART_TYPE_TEXT) return; if (ep->part->type != EDJE_PART_TYPE_TEXT) return;
/* if text class exists for this part, add the edje to the tc member list */ /* if text class exists for this part, add the edje to the tc member list */
desc = (Edje_Part_Description_Text *) pt->default_desc; desc = (Edje_Part_Description_Text *)pt->default_desc;
if ((pt->default_desc) && (desc->text.text_class)) if ((pt->default_desc) && (desc->text.text_class))
_edje_text_class_member_add(ed, desc->text.text_class); _edje_text_class_member_add(ed, desc->text.text_class);
/* If any other classes exist add them */ /* If any other classes exist add them */
for (i = 0; i < pt->other.desc_count; ++i) for (i = 0; i < pt->other.desc_count; ++i)
{ {
desc = (Edje_Part_Description_Text *) pt->other.desc[i]; desc = (Edje_Part_Description_Text *)pt->other.desc[i];
if ((desc) && (desc->text.text_class)) if ((desc) && (desc->text.text_class))
_edje_text_class_member_add(ed, desc->text.text_class); _edje_text_class_member_add(ed, desc->text.text_class);
} }
@ -99,13 +99,13 @@ _edje_text_part_on_del(Edje *ed, Edje_Part *pt)
if (pt->type != EDJE_PART_TYPE_TEXT) if (pt->type != EDJE_PART_TYPE_TEXT)
return; return;
desc = (Edje_Part_Description_Text *) pt->default_desc; desc = (Edje_Part_Description_Text *)pt->default_desc;
if ((pt->default_desc) && (desc->text.text_class)) if ((pt->default_desc) && (desc->text.text_class))
_edje_text_class_member_del(ed, desc->text.text_class); _edje_text_class_member_del(ed, desc->text.text_class);
for (i = 0; i < pt->other.desc_count; ++i) for (i = 0; i < pt->other.desc_count; ++i)
{ {
desc = (Edje_Part_Description_Text *) pt->other.desc[i]; desc = (Edje_Part_Description_Text *)pt->other.desc[i];
if (desc->text.text_class) if (desc->text.text_class)
_edje_text_class_member_del(ed, desc->text.text_class); _edje_text_class_member_del(ed, desc->text.text_class);
} }
@ -199,18 +199,18 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
Edje_Part_Description_Text *chosen_desc, Edje_Part_Description_Text *chosen_desc,
Eina_Bool calc_only) Eina_Bool calc_only)
{ {
const char *text = NULL; const char *text = NULL;
const char *font; const char *font;
char *font2 = NULL; char *font2 = NULL;
char *sfont = NULL; char *sfont = NULL;
int size; int size;
const char *filter, *source_name; const char *filter, *source_name;
Eina_List *filter_sources = NULL, *prev_sources = NULL, *li; Eina_List *filter_sources = NULL, *prev_sources = NULL, *li;
Evas_Coord tw, th; Evas_Coord tw, th;
Evas_Coord sw, sh; Evas_Coord sw, sh;
int inlined_font = 0, free_text = 0; int inlined_font = 0, free_text = 0;
Eina_Bool same_text = EINA_FALSE; Eina_Bool same_text = EINA_FALSE;
FLOAT_T sc; FLOAT_T sc;
if ((ep->type != EDJE_RP_TYPE_TEXT) || if ((ep->type != EDJE_RP_TYPE_TEXT) ||
(!ep->typedata.text)) return; (!ep->typedata.text)) return;
@ -426,8 +426,9 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
int bottom, top; int bottom, top;
if (th < sh) bottom = 10; if (th < sh) bottom = 10;
else if (th > sh) bottom = 1; else if (th > sh)
else bottom = 0; /* XXX shut up GCC, th == sh is handled before! */ bottom = 1;
else bottom = 0; /* XXX shut up GCC, th == sh is handled before! */
top = size; top = size;
/* search one that fits (binary search) */ /* search one that fits (binary search) */
@ -441,8 +442,9 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
part_get_geometry(ep, &tw, &th); part_get_geometry(ep, &tw, &th);
if (th < sh) bottom = current + 1; if (th < sh) bottom = current + 1;
else if (th > sh) top = current - 1; else if (th > sh)
top = current - 1;
} while ((bottom < top) && (th != sh)); } while ((bottom < top) && (th != sh));
} }
@ -473,272 +475,289 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
/* Handle ellipsis */ /* Handle ellipsis */
if (!chosen_desc->text.min_x) if (!chosen_desc->text.min_x)
{ {
eo_do(ep->object, eo_do (ep->object,
if (inlined_font) efl_text_properties_font_source_set(ed->path); if (inlined_font) efl_text_properties_font_source_set(ed->path);
else efl_text_properties_font_source_set(NULL)); else efl_text_properties_font_source_set(NULL));
text = _edje_text_fit_x(ed, ep, params, chosen_desc, text = _edje_text_fit_x(ed, ep, params, chosen_desc,
text, font, size, text, font, size,
sw, sh, &free_text); sw, sh, &free_text);
} }
/* when evas ellipsis support was added in efl 1.8 and used to replace /* when evas ellipsis support was added in efl 1.8 and used to replace
* previous support, SOMEONE, who I shall call "cedric", borked ellipsis * previous support, SOMEONE, who I shall call "cedric", borked ellipsis
* defaults. as a result, edje_cc continued using 0.0 (left-most) as its default value * defaults. as a result, edje_cc continued using 0.0 (left-most) as its default value
* for ellipsis while evas used -1.0 (no ellipsizing). * for ellipsis while evas used -1.0 (no ellipsizing).
* this was moderately okay for a time because nobody was using it or GROUP parts * this was moderately okay for a time because nobody was using it or GROUP parts
* with text in them very frequently, and so nobody noticed that the mismatch was breaking * with text in them very frequently, and so nobody noticed that the mismatch was breaking
* sizing in some cases when the edje ellipsis value failed to be applied, * sizing in some cases when the edje ellipsis value failed to be applied,
* which occurred any time text.min_x was set; in this case, ellipsis would NEVER be * which occurred any time text.min_x was set; in this case, ellipsis would NEVER be
* correctly applied, and instead the text object would only ever get the first * correctly applied, and instead the text object would only ever get the first
* ellipsis_set(0), permanently breaking the part. * ellipsis_set(0), permanently breaking the part.
* the only way to fix this while preserving previous behavior was to bump * the only way to fix this while preserving previous behavior was to bump
* the edje file minor version and then check it here to ignore "unset" ellipsis * the edje file minor version and then check it here to ignore "unset" ellipsis
* values from old file versions. * values from old file versions.
* the downside is that this will break old files which have text.min_x set to 0...maybe. * the downside is that this will break old files which have text.min_x set to 0...maybe.
* *
* -zmike * -zmike
* 22 April 2014 * 22 April 2014
*/ */
else if (((ed->file->version >= 3) && (ed->file->minor >= 6)) || else if (((ed->file->version >= 3) && (ed->file->minor >= 6)) ||
params->type.text.ellipsis) params->type.text.ellipsis)
evas_object_text_ellipsis_set(ep->object, evas_object_text_ellipsis_set(ep->object,
chosen_desc->text.min_x ? -1 : params->type.text.ellipsis); chosen_desc->text.min_x ? -1 : params->type.text.ellipsis);
eina_stringshare_replace(&ep->typedata.text->cache.out_str, text); eina_stringshare_replace(&ep->typedata.text->cache.out_str, text);
ep->typedata.text->cache.in_w = sw; ep->typedata.text->cache.in_w = sw;
ep->typedata.text->cache.in_h = sh; ep->typedata.text->cache.in_h = sh;
ep->typedata.text->cache.in_font = font; ep->typedata.text->cache.in_font = font;
ep->typedata.text->cache.out_size = size; ep->typedata.text->cache.out_size = size;
ep->typedata.text->cache.align_x = params->type.text.align.x; ep->typedata.text->cache.align_x = params->type.text.align.x;
ep->typedata.text->cache.align_y = params->type.text.align.y; ep->typedata.text->cache.align_y = params->type.text.align.y;
ep->typedata.text->cache.ellipsis = params->type.text.ellipsis; ep->typedata.text->cache.ellipsis = params->type.text.ellipsis;
ep->typedata.text->cache.fit_x = chosen_desc->text.fit_x; ep->typedata.text->cache.fit_x = chosen_desc->text.fit_x;
ep->typedata.text->cache.fit_y = chosen_desc->text.fit_y; ep->typedata.text->cache.fit_y = chosen_desc->text.fit_y;
arrange_text: arrange_text:
eo_do(ep->object, eo_do(ep->object,
if (inlined_font) efl_text_properties_font_source_set(ed->path); if (inlined_font) efl_text_properties_font_source_set(ed->path);
else efl_text_properties_font_source_set(NULL); else efl_text_properties_font_source_set(NULL);
if (ep->part->scale) evas_obj_scale_set(TO_DOUBLE(sc)); if (ep->part->scale) evas_obj_scale_set(TO_DOUBLE(sc));
efl_text_properties_font_set(font, size), efl_text_properties_font_set(font, size),
efl_text_set(text)); efl_text_set(text));
part_get_geometry(ep, &tw, &th); part_get_geometry(ep, &tw, &th);
/* filters */ /* filters */
eo_do(ep->object, eo_do(ep->object,
EINA_LIST_FOREACH(prev_sources, li, source_name) EINA_LIST_FOREACH(prev_sources, li, source_name)
evas_obj_text_filter_source_set(source_name, NULL); evas_obj_text_filter_source_set(source_name, NULL);
EINA_LIST_FOREACH(filter_sources, li, source_name) EINA_LIST_FOREACH(filter_sources, li, source_name)
{ {
Edje_Real_Part *rp = _edje_real_part_get(ed, source_name); Edje_Real_Part *rp = _edje_real_part_get(ed, source_name);
evas_obj_text_filter_source_set(source_name, rp ? rp->object : NULL); evas_obj_text_filter_source_set(source_name, rp ? rp->object : NULL);
}; }
evas_obj_text_filter_program_set(filter)); evas_obj_text_filter_program_set(filter));
/* Handle alignment */ /* Handle alignment */
{
FLOAT_T align_x;
if (params->type.text.align.x < FROM_INT(0))
{
if (evas_object_text_direction_get(ep->object) ==
EVAS_BIDI_DIRECTION_RTL)
{ {
align_x = FROM_INT(1); FLOAT_T align_x;
if (params->type.text.align.x < FROM_INT(0))
{
if (evas_object_text_direction_get(ep->object) ==
EVAS_BIDI_DIRECTION_RTL)
{
align_x = FROM_INT(1);
}
else
{
align_x = FROM_INT(0);
}
}
else
{
align_x = params->type.text.align.x;
}
ep->typedata.text->offset.x = TO_INT(SCALE(align_x, (sw - tw)));
ep->typedata.text->offset.y = TO_INT(SCALE(params->type.text.align.y, (sh - th)));
} }
else
if (!calc_only)
{ {
align_x = FROM_INT(0); eo_do(ep->object,
efl_gfx_position_set(ed->x + TO_INT(params->eval.x) + ep->typedata.text->offset.x,
ed->y + TO_INT(params->eval.y) + ep->typedata.text->offset.y);
efl_gfx_visible_set(params->visible));
} }
}
else
{
align_x = params->type.text.align.x;
}
ep->typedata.text->offset.x = TO_INT(SCALE(align_x, (sw - tw)));
ep->typedata.text->offset.y = TO_INT(SCALE(params->type.text.align.y, (sh - th)));
}
if (!calc_only) {
{ Evas_Text_Style_Type style;
eo_do(ep->object, Edje_Text_Effect effect;
efl_gfx_position_set(ed->x + TO_INT(params->eval.x) + ep->typedata.text->offset.x,
ed->y + TO_INT(params->eval.y) + ep->typedata.text->offset.y);
efl_gfx_visible_set(params->visible)); style = EVAS_TEXT_STYLE_PLAIN;
}
evas_object_color_set(ep->object,
(params->color.r * params->color.a) / 255,
(params->color.g * params->color.a) / 255,
(params->color.b * params->color.a) / 255,
params->color.a);
effect = ep->part->effect;
switch (effect & EDJE_TEXT_EFFECT_MASK_BASIC)
{
case EDJE_TEXT_EFFECT_NONE:
case EDJE_TEXT_EFFECT_PLAIN:
style = EVAS_TEXT_STYLE_PLAIN;
break;
{ case EDJE_TEXT_EFFECT_OUTLINE:
Evas_Text_Style_Type style; style = EVAS_TEXT_STYLE_OUTLINE;
Edje_Text_Effect effect; evas_object_text_outline_color_set(ep->object,
(params->type.text.color2.r * params->type.text.color2.a) / 255,
(params->type.text.color2.g * params->type.text.color2.a) / 255,
(params->type.text.color2.b * params->type.text.color2.a) / 255,
params->type.text.color2.a);
break;
style = EVAS_TEXT_STYLE_PLAIN; case EDJE_TEXT_EFFECT_SOFT_OUTLINE:
style = EVAS_TEXT_STYLE_SOFT_OUTLINE;
evas_object_text_outline_color_set(ep->object,
(params->type.text.color2.r * params->type.text.color2.a) / 255,
(params->type.text.color2.g * params->type.text.color2.a) / 255,
(params->type.text.color2.b * params->type.text.color2.a) / 255,
params->type.text.color2.a);
break;
evas_object_color_set(ep->object, case EDJE_TEXT_EFFECT_SHADOW:
(params->color.r * params->color.a) / 255, style = EVAS_TEXT_STYLE_SHADOW;
(params->color.g * params->color.a) / 255, evas_object_text_shadow_color_set(ep->object,
(params->color.b * params->color.a) / 255, (params->type.text.color3.r * params->type.text.color3.a) / 255,
params->color.a); (params->type.text.color3.g * params->type.text.color3.a) / 255,
effect = ep->part->effect; (params->type.text.color3.b * params->type.text.color3.a) / 255,
switch (effect & EDJE_TEXT_EFFECT_MASK_BASIC) params->type.text.color3.a);
{ break;
case EDJE_TEXT_EFFECT_NONE:
case EDJE_TEXT_EFFECT_PLAIN:
style = EVAS_TEXT_STYLE_PLAIN;
break;
case EDJE_TEXT_EFFECT_OUTLINE:
style = EVAS_TEXT_STYLE_OUTLINE;
evas_object_text_outline_color_set(ep->object,
(params->type.text.color2.r * params->type.text.color2.a) / 255,
(params->type.text.color2.g * params->type.text.color2.a) / 255,
(params->type.text.color2.b * params->type.text.color2.a) / 255,
params->type.text.color2.a);
break;
case EDJE_TEXT_EFFECT_SOFT_OUTLINE:
style = EVAS_TEXT_STYLE_SOFT_OUTLINE;
evas_object_text_outline_color_set(ep->object,
(params->type.text.color2.r * params->type.text.color2.a) / 255,
(params->type.text.color2.g * params->type.text.color2.a) / 255,
(params->type.text.color2.b * params->type.text.color2.a) / 255,
params->type.text.color2.a);
break;
case EDJE_TEXT_EFFECT_SHADOW:
style = EVAS_TEXT_STYLE_SHADOW;
evas_object_text_shadow_color_set(ep->object,
(params->type.text.color3.r * params->type.text.color3.a) / 255,
(params->type.text.color3.g * params->type.text.color3.a) / 255,
(params->type.text.color3.b * params->type.text.color3.a) / 255,
params->type.text.color3.a);
break;
case EDJE_TEXT_EFFECT_SOFT_SHADOW:
style = EVAS_TEXT_STYLE_SOFT_SHADOW;
evas_object_text_shadow_color_set(ep->object,
(params->type.text.color3.r * params->type.text.color3.a) / 255,
(params->type.text.color3.g * params->type.text.color3.a) / 255,
(params->type.text.color3.b * params->type.text.color3.a) / 255,
params->type.text.color3.a);
break;
case EDJE_TEXT_EFFECT_OUTLINE_SHADOW:
style = EVAS_TEXT_STYLE_OUTLINE_SHADOW;
eo_do(ep->object,
evas_obj_text_outline_color_set((params->type.text.color2.r * params->type.text.color2.a) / 255,
(params->type.text.color2.g * params->type.text.color2.a) / 255,
(params->type.text.color2.b * params->type.text.color2.a) / 255,
params->type.text.color2.a),
evas_obj_text_shadow_color_set((params->type.text.color3.r * params->type.text.color3.a) / 255,
(params->type.text.color3.g * params->type.text.color3.a) / 255,
(params->type.text.color3.b * params->type.text.color3.a) / 255,
params->type.text.color3.a));
break;
case EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW:
style = EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW;
eo_do(ep->object,
evas_obj_text_outline_color_set((params->type.text.color2.r * params->type.text.color2.a) / 255,
(params->type.text.color2.g * params->type.text.color2.a) / 255,
(params->type.text.color2.b * params->type.text.color2.a) / 255,
params->type.text.color2.a),
evas_obj_text_shadow_color_set((params->type.text.color3.r * params->type.text.color3.a) / 255,
(params->type.text.color3.g * params->type.text.color3.a) / 255,
(params->type.text.color3.b * params->type.text.color3.a) / 255,
params->type.text.color3.a));
break;
case EDJE_TEXT_EFFECT_FAR_SHADOW:
style = EVAS_TEXT_STYLE_FAR_SHADOW;
evas_object_text_shadow_color_set(ep->object,
(params->type.text.color3.r * params->type.text.color3.a) / 255,
(params->type.text.color3.g * params->type.text.color3.a) / 255,
(params->type.text.color3.b * params->type.text.color3.a) / 255,
params->type.text.color3.a);
break;
case EDJE_TEXT_EFFECT_FAR_SOFT_SHADOW:
style = EVAS_TEXT_STYLE_FAR_SOFT_SHADOW;
evas_object_text_shadow_color_set(ep->object,
(params->type.text.color3.r * params->type.text.color3.a) / 255,
(params->type.text.color3.g * params->type.text.color3.a) / 255,
(params->type.text.color3.b * params->type.text.color3.a) / 255,
params->type.text.color3.a);
break;
case EDJE_TEXT_EFFECT_GLOW:
style = EVAS_TEXT_STYLE_GLOW;
eo_do(ep->object,
evas_obj_text_glow_color_set((params->type.text.color2.r * params->type.text.color2.a) / 255,
(params->type.text.color2.g * params->type.text.color2.a) / 255,
(params->type.text.color2.b * params->type.text.color2.a) / 255,
params->type.text.color2.a),
evas_obj_text_glow2_color_set((params->type.text.color3.r * params->type.text.color3.a) / 255,
(params->type.text.color3.g * params->type.text.color3.a) / 255,
(params->type.text.color3.b * params->type.text.color3.a) / 255,
params->type.text.color3.a));
break;
default:
style = EVAS_TEXT_STYLE_PLAIN;
break;
}
switch (effect & EDJE_TEXT_EFFECT_MASK_SHADOW_DIRECTION) case EDJE_TEXT_EFFECT_SOFT_SHADOW:
{ style = EVAS_TEXT_STYLE_SOFT_SHADOW;
case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM_RIGHT: evas_object_text_shadow_color_set(ep->object,
EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET (params->type.text.color3.r * params->type.text.color3.a) / 255,
(style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_BOTTOM_RIGHT); (params->type.text.color3.g * params->type.text.color3.a) / 255,
break; (params->type.text.color3.b * params->type.text.color3.a) / 255,
case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM: params->type.text.color3.a);
EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET break;
(style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_BOTTOM);
break;
case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM_LEFT:
EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET
(style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_BOTTOM_LEFT);
break;
case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_LEFT:
EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET
(style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_LEFT);
break;
case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP_LEFT:
EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET
(style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_TOP_LEFT);
break;
case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP:
EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET
(style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_TOP);
break;
case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP_RIGHT:
EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET
(style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_TOP_RIGHT);
break;
case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_RIGHT:
EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET
(style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_RIGHT);
break;
default:
break;
}
evas_object_text_style_set(ep->object, style);
}
if (free_text) free((char *)text); case EDJE_TEXT_EFFECT_OUTLINE_SHADOW:
if (font2) free(font2); style = EVAS_TEXT_STYLE_OUTLINE_SHADOW;
if (sfont) free(sfont); eo_do(ep->object,
} evas_obj_text_outline_color_set((params->type.text.color2.r * params->type.text.color2.a) / 255,
(params->type.text.color2.g * params->type.text.color2.a) / 255,
(params->type.text.color2.b * params->type.text.color2.a) / 255,
params->type.text.color2.a),
evas_obj_text_shadow_color_set((params->type.text.color3.r * params->type.text.color3.a) / 255,
(params->type.text.color3.g * params->type.text.color3.a) / 255,
(params->type.text.color3.b * params->type.text.color3.a) / 255,
params->type.text.color3.a));
break;
Evas_Font_Size case EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW:
_edje_text_size_calc(Evas_Font_Size size, Edje_Text_Class *tc) style = EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW;
{ eo_do(ep->object,
int val; evas_obj_text_outline_color_set((params->type.text.color2.r * params->type.text.color2.a) / 255,
(params->type.text.color2.g * params->type.text.color2.a) / 255,
(params->type.text.color2.b * params->type.text.color2.a) / 255,
params->type.text.color2.a),
evas_obj_text_shadow_color_set((params->type.text.color3.r * params->type.text.color3.a) / 255,
(params->type.text.color3.g * params->type.text.color3.a) / 255,
(params->type.text.color3.b * params->type.text.color3.a) / 255,
params->type.text.color3.a));
break;
if (tc->size == 0) case EDJE_TEXT_EFFECT_FAR_SHADOW:
{ style = EVAS_TEXT_STYLE_FAR_SHADOW;
val = size; evas_object_text_shadow_color_set(ep->object,
} (params->type.text.color3.r * params->type.text.color3.a) / 255,
else if (tc->size > 0.0) (params->type.text.color3.g * params->type.text.color3.a) / 255,
{ (params->type.text.color3.b * params->type.text.color3.a) / 255,
val = tc->size; params->type.text.color3.a);
} break;
else
{ case EDJE_TEXT_EFFECT_FAR_SOFT_SHADOW:
val = (size * -tc->size) / 100; style = EVAS_TEXT_STYLE_FAR_SOFT_SHADOW;
} evas_object_text_shadow_color_set(ep->object,
return val; (params->type.text.color3.r * params->type.text.color3.a) / 255,
} (params->type.text.color3.g * params->type.text.color3.a) / 255,
(params->type.text.color3.b * params->type.text.color3.a) / 255,
params->type.text.color3.a);
break;
case EDJE_TEXT_EFFECT_GLOW:
style = EVAS_TEXT_STYLE_GLOW;
eo_do(ep->object,
evas_obj_text_glow_color_set((params->type.text.color2.r * params->type.text.color2.a) / 255,
(params->type.text.color2.g * params->type.text.color2.a) / 255,
(params->type.text.color2.b * params->type.text.color2.a) / 255,
params->type.text.color2.a),
evas_obj_text_glow2_color_set((params->type.text.color3.r * params->type.text.color3.a) / 255,
(params->type.text.color3.g * params->type.text.color3.a) / 255,
(params->type.text.color3.b * params->type.text.color3.a) / 255,
params->type.text.color3.a));
break;
default:
style = EVAS_TEXT_STYLE_PLAIN;
break;
}
switch (effect & EDJE_TEXT_EFFECT_MASK_SHADOW_DIRECTION)
{
case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM_RIGHT:
EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET
(style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_BOTTOM_RIGHT);
break;
case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM:
EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET
(style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_BOTTOM);
break;
case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM_LEFT:
EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET
(style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_BOTTOM_LEFT);
break;
case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_LEFT:
EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET
(style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_LEFT);
break;
case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP_LEFT:
EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET
(style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_TOP_LEFT);
break;
case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP:
EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET
(style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_TOP);
break;
case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP_RIGHT:
EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET
(style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_TOP_RIGHT);
break;
case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_RIGHT:
EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET
(style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_RIGHT);
break;
default:
break;
}
evas_object_text_style_set(ep->object, style);
}
if (free_text) free((char *)text);
if (font2) free(font2);
if (sfont) free(sfont);
}
Evas_Font_Size
_edje_text_size_calc(Evas_Font_Size size, Edje_Text_Class * tc)
{
int val;
if (tc->size == 0)
{
val = size;
}
else if (tc->size > 0.0)
{
val = tc->size;
}
else
{
val = (size * -tc->size) / 100;
}
return val;
}

View File

@ -34,7 +34,7 @@ _edje_format_parse(const char **s)
p = *s; p = *s;
if ((!p) || (*p == 0)) return NULL; if ((!p) || (*p == 0)) return NULL;
for (;;) for (;; )
{ {
if (!s1) if (!s1)
{ {
@ -87,44 +87,44 @@ _edje_format_reparse(Edje_File *edf, const char *str, Edje_Style_Tag **tag_ret)
s = str; s = str;
while ((item = _edje_format_parse(&s))) while ((item = _edje_format_parse(&s)))
{ {
if (_edje_format_is_param(item)) if (_edje_format_is_param(item))
{ {
char *key = NULL, *val = NULL; char *key = NULL, *val = NULL;
_edje_format_param_parse(item, &key, &val); _edje_format_param_parse(item, &key, &val);
if (!strcmp(key, "font_source")) if (!strcmp(key, "font_source"))
{ {
/* dont allow font sources */ /* dont allow font sources */
} }
else if (!strcmp(key, "text_class")) else if (!strcmp(key, "text_class"))
{ {
if (tag_ret) if (tag_ret)
(*tag_ret)->text_class = eina_stringshare_add(val); (*tag_ret)->text_class = eina_stringshare_add(val);
} }
else if (!strcmp(key, "font_size")) else if (!strcmp(key, "font_size"))
{ {
if (tag_ret) if (tag_ret)
(*tag_ret)->font_size = atof(val); (*tag_ret)->font_size = atof(val);
} }
else if (!strcmp(key, "font")) /* Fix fonts */ else if (!strcmp(key, "font")) /* Fix fonts */
{ {
if (tag_ret) if (tag_ret)
{ {
if (_edje_font_is_embedded(edf, val)) if (_edje_font_is_embedded(edf, val))
{ {
if (!tmp) if (!tmp)
tmp = eina_strbuf_new(); tmp = eina_strbuf_new();
eina_strbuf_append(tmp, "edje/fonts/"); eina_strbuf_append(tmp, "edje/fonts/");
eina_strbuf_append(tmp, val); eina_strbuf_append(tmp, val);
(*tag_ret)->font = eina_stringshare_add(eina_strbuf_string_get(tmp)); (*tag_ret)->font = eina_stringshare_add(eina_strbuf_string_get(tmp));
eina_strbuf_reset(tmp); eina_strbuf_reset(tmp);
} }
else else
{ {
(*tag_ret)->font = eina_stringshare_add(val); (*tag_ret)->font = eina_stringshare_add(val);
} }
} }
} }
s2 = eina_str_escape(item); s2 = eina_str_escape(item);
if (s2) if (s2)
{ {
@ -132,14 +132,14 @@ _edje_format_reparse(Edje_File *edf, const char *str, Edje_Style_Tag **tag_ret)
eina_strbuf_append(txt, s2); eina_strbuf_append(txt, s2);
free(s2); free(s2);
} }
free(key); free(key);
free(val); free(val);
} }
else else
{ {
if (eina_strbuf_length_get(txt)) eina_strbuf_append(txt, " "); if (eina_strbuf_length_get(txt)) eina_strbuf_append(txt, " ");
eina_strbuf_append(txt, item); eina_strbuf_append(txt, item);
} }
free(item); free(item);
} }
if (tmp) if (tmp)
@ -173,7 +173,7 @@ _edje_textblock_style_all_update(Edje *ed)
if (!stl->style) break; if (!stl->style) break;
/* No need to compute it again and again and again */ /* No need to compute it again and again and again */
if (stl->cache) continue; if (stl->cache) continue;
/* Make sure the style contains a text_class */ /* Make sure the style contains a text_class */
EINA_LIST_FOREACH(stl->tags, ll, tag) EINA_LIST_FOREACH(stl->tags, ll, tag)
@ -227,7 +227,7 @@ _edje_textblock_style_all_update(Edje *ed)
if (tc && tc->size) if (tc && tc->size)
snprintf(font_size, sizeof(font_size), "%f", snprintf(font_size, sizeof(font_size), "%f",
(double) _edje_text_size_calc(tag->font_size, tc)); (double)_edje_text_size_calc(tag->font_size, tc));
else else
snprintf(font_size, sizeof(font_size), "%f", snprintf(font_size, sizeof(font_size), "%f",
tag->font_size); tag->font_size);
@ -291,7 +291,7 @@ _edje_textblock_style_member_add(Edje *ed, Edje_Style *stl)
Edje_Style_Tag *tag; Edje_Style_Tag *tag;
Eina_List *l; Eina_List *l;
if (!stl) return ; if (!stl) return;
EINA_LIST_FOREACH(stl->tags, l, tag) EINA_LIST_FOREACH(stl->tags, l, tag)
{ {
@ -434,78 +434,78 @@ _edje_textblock_style_parse_and_fix(Edje_File *edf)
EINA_LIST_FOREACH(edf->styles, l, stl) EINA_LIST_FOREACH(edf->styles, l, stl)
{ {
Edje_Style_Tag *tag; Edje_Style_Tag *tag;
char *fontset = NULL, *fontsource = NULL, *ts; char *fontset = NULL, *fontsource = NULL, *ts;
if (stl->style) break; if (stl->style) break;
if (!txt) if (!txt)
txt = eina_strbuf_new(); txt = eina_strbuf_new();
stl->style = evas_textblock_style_new(); stl->style = evas_textblock_style_new();
evas_textblock_style_set(stl->style, NULL); evas_textblock_style_set(stl->style, NULL);
if (_edje_fontset_append) if (_edje_fontset_append)
fontset = eina_str_escape(_edje_fontset_append); fontset = eina_str_escape(_edje_fontset_append);
fontsource = eina_str_escape(edf->path); fontsource = eina_str_escape(edf->path);
/* Build the style from each tag */ /* Build the style from each tag */
EINA_LIST_FOREACH(stl->tags, ll, tag) EINA_LIST_FOREACH(stl->tags, ll, tag)
{ {
if (!tag->key) continue; if (!tag->key) continue;
/* Add Tag Key */ /* Add Tag Key */
eina_strbuf_append(txt, tag->key); eina_strbuf_append(txt, tag->key);
eina_strbuf_append(txt, "='"); eina_strbuf_append(txt, "='");
ts = _edje_format_reparse(edf, tag->value, &(tag)); ts = _edje_format_reparse(edf, tag->value, &(tag));
/* Add and Handle tag parsed data */ /* Add and Handle tag parsed data */
if (ts) if (ts)
{ {
if (eet_dictionary_string_check(eet_dictionary_get(edf->ef), tag->value) == 0) if (eet_dictionary_string_check(eet_dictionary_get(edf->ef), tag->value) == 0)
eina_stringshare_del(tag->value); eina_stringshare_del(tag->value);
tag->value = eina_stringshare_add(ts); tag->value = eina_stringshare_add(ts);
eina_strbuf_append(txt, tag->value); eina_strbuf_append(txt, tag->value);
free(ts); free(ts);
} }
if (!strcmp(tag->key, "DEFAULT")) if (!strcmp(tag->key, "DEFAULT"))
{ {
if (fontset) if (fontset)
{ {
eina_strbuf_append(txt, " "); eina_strbuf_append(txt, " ");
eina_strbuf_append(txt, "font_fallbacks="); eina_strbuf_append(txt, "font_fallbacks=");
eina_strbuf_append(txt, fontset); eina_strbuf_append(txt, fontset);
} }
eina_strbuf_append(txt, " "); eina_strbuf_append(txt, " ");
eina_strbuf_append(txt, "font_source="); eina_strbuf_append(txt, "font_source=");
eina_strbuf_append(txt, fontsource); eina_strbuf_append(txt, fontsource);
} }
if (tag->font_size > 0) if (tag->font_size > 0)
{ {
char font_size[32]; char font_size[32];
snprintf(font_size, sizeof(font_size), "%f", tag->font_size); snprintf(font_size, sizeof(font_size), "%f", tag->font_size);
eina_strbuf_append(txt, " "); eina_strbuf_append(txt, " ");
eina_strbuf_append(txt, "font_size="); eina_strbuf_append(txt, "font_size=");
eina_strbuf_append(txt, font_size); eina_strbuf_append(txt, font_size);
} }
/* Add font name last to save evas from multiple loads */ /* Add font name last to save evas from multiple loads */
if (tag->font) if (tag->font)
{ {
eina_strbuf_append(txt, " "); eina_strbuf_append(txt, " ");
eina_strbuf_append(txt, "font="); eina_strbuf_append(txt, "font=");
eina_strbuf_append_escaped(txt, tag->font); eina_strbuf_append_escaped(txt, tag->font);
} }
eina_strbuf_append(txt, "'"); eina_strbuf_append(txt, "'");
} }
if (fontset) free(fontset); if (fontset) free(fontset);
if (fontsource) free(fontsource); if (fontsource) free(fontsource);
/* Configure the style */ /* Configure the style */
evas_textblock_style_set(stl->style, eina_strbuf_string_get(txt)); evas_textblock_style_set(stl->style, eina_strbuf_string_get(txt));
eina_strbuf_reset(txt); eina_strbuf_reset(txt);
} }
if (txt) if (txt)
eina_strbuf_free(txt); eina_strbuf_free(txt);
@ -521,8 +521,8 @@ _edje_textblock_style_cleanup(Edje_File *edf)
Edje_Style_Tag *tag; Edje_Style_Tag *tag;
EINA_LIST_FREE(stl->tags, tag) EINA_LIST_FREE(stl->tags, tag)
{ {
if (tag->value && eet_dictionary_string_check(eet_dictionary_get(edf->ef), tag->value) == 0) if (tag->value && eet_dictionary_string_check(eet_dictionary_get(edf->ef), tag->value) == 0)
eina_stringshare_del(tag->value); eina_stringshare_del(tag->value);
if (edf->free_strings) if (edf->free_strings)
{ {
@ -532,9 +532,10 @@ _edje_textblock_style_cleanup(Edje_File *edf)
if (tag->font) eina_stringshare_del(tag->font); if (tag->font) eina_stringshare_del(tag->font);
} }
free(tag); free(tag);
} }
if (edf->free_strings && stl->name) eina_stringshare_del(stl->name); if (edf->free_strings && stl->name) eina_stringshare_del(stl->name);
if (stl->style) evas_textblock_style_free(stl->style); if (stl->style) evas_textblock_style_free(stl->style);
free(stl); free(stl);
} }
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff