forked from enlightenment/efl
* edje_calc: Major cleanup.
- Edje_Real_Part use less memory. - Edje_Real_Part and Edje_Real_Part_State now use a mempool. - When both param1 and param2 are the same, only recalc param1. - Don't compute Edje_Real_Part more than one time per edje_recalc_do. SVN revision: 41771
This commit is contained in:
parent
3d6840cd1a
commit
7df190d264
|
@ -65,7 +65,7 @@ _edje_part_description_find(Edje *ed, Edje_Real_Part *rp, const char *name,
|
|||
return ep->default_desc;
|
||||
|
||||
if (!strcmp(name, "custom"))
|
||||
return rp->custom.description;
|
||||
return rp->custom ? rp->custom->description : NULL;
|
||||
|
||||
if (!strcmp(name, "default"))
|
||||
{
|
||||
|
@ -93,14 +93,32 @@ _edje_part_description_find(Edje *ed, Edje_Real_Part *rp, const char *name,
|
|||
void
|
||||
_edje_part_description_apply(Edje *ed, Edje_Real_Part *ep, const char *d1, double v1, const char *d2, double v2)
|
||||
{
|
||||
Edje_Part_Description *epd1;
|
||||
Edje_Part_Description *epd2;
|
||||
|
||||
if (!d1) d1 = "default";
|
||||
if (!d2) d2 = "default";
|
||||
|
||||
ep->param1.description = _edje_part_description_find(ed, ep, d1, v1);
|
||||
if (!ep->param1.description)
|
||||
ep->param1.description = ep->part->default_desc; /* never NULL */
|
||||
epd1 = _edje_part_description_find(ed, ep, d1, v1);
|
||||
if (!epd1)
|
||||
epd1 = ep->part->default_desc; /* never NULL */
|
||||
|
||||
ep->param2.description = _edje_part_description_find(ed, ep, d2, v2);
|
||||
epd2 = _edje_part_description_find(ed, ep, d2, v2);
|
||||
|
||||
if (epd2 != NULL && epd1 != epd2)
|
||||
{
|
||||
if (!ep->param2)
|
||||
ep->param2 = eina_mempool_malloc(_edje_real_part_state_mp, sizeof (Edje_Real_Part_State));
|
||||
}
|
||||
else
|
||||
if (ep->param2)
|
||||
{
|
||||
eina_mempool_free(_edje_real_part_state_mp, ep->param2);
|
||||
ep->param2 = NULL;
|
||||
}
|
||||
|
||||
ep->param1.description = epd1;
|
||||
ep->chosen_description = epd1;
|
||||
|
||||
ep->param1.rel1_to_x = ep->param1.rel1_to_y = NULL;
|
||||
ep->param1.rel2_to_x = ep->param1.rel2_to_y = NULL;
|
||||
|
@ -114,25 +132,28 @@ _edje_part_description_apply(Edje *ed, Edje_Real_Part *ep, const char *d1, doubl
|
|||
if (ep->param1.description->rel2.id_y >= 0)
|
||||
ep->param1.rel2_to_y = ed->table_parts[ep->param1.description->rel2.id_y % ed->table_parts_size];
|
||||
|
||||
ep->param2.rel1_to_x = ep->param2.rel1_to_y = NULL;
|
||||
ep->param2.rel2_to_x = ep->param2.rel2_to_y = NULL;
|
||||
|
||||
if (ep->param2.description)
|
||||
if (ep->param2)
|
||||
{
|
||||
if (ep->param2.description->rel1.id_x >= 0)
|
||||
ep->param2.rel1_to_x = ed->table_parts[ep->param2.description->rel1.id_x % ed->table_parts_size];
|
||||
if (ep->param2.description->rel1.id_y >= 0)
|
||||
ep->param2.rel1_to_y = ed->table_parts[ep->param2.description->rel1.id_y % ed->table_parts_size];
|
||||
if (ep->param2.description->rel2.id_x >= 0)
|
||||
ep->param2.rel2_to_x = ed->table_parts[ep->param2.description->rel2.id_x % ed->table_parts_size];
|
||||
if (ep->param2.description->rel2.id_y >= 0)
|
||||
ep->param2.rel2_to_y = ed->table_parts[ep->param2.description->rel2.id_y % ed->table_parts_size];
|
||||
}
|
||||
ep->param2->description = epd2;
|
||||
|
||||
if (ep->description_pos == 0.0)
|
||||
ep->chosen_description = ep->param1.description;
|
||||
else
|
||||
ep->chosen_description = ep->param2.description;
|
||||
ep->param2->rel1_to_x = ep->param2->rel1_to_y = NULL;
|
||||
ep->param2->rel2_to_x = ep->param2->rel2_to_y = NULL;
|
||||
|
||||
if (ep->param2->description)
|
||||
{
|
||||
if (ep->param2->description->rel1.id_x >= 0)
|
||||
ep->param2->rel1_to_x = ed->table_parts[ep->param2->description->rel1.id_x % ed->table_parts_size];
|
||||
if (ep->param2->description->rel1.id_y >= 0)
|
||||
ep->param2->rel1_to_y = ed->table_parts[ep->param2->description->rel1.id_y % ed->table_parts_size];
|
||||
if (ep->param2->description->rel2.id_x >= 0)
|
||||
ep->param2->rel2_to_x = ed->table_parts[ep->param2->description->rel2.id_x % ed->table_parts_size];
|
||||
if (ep->param2->description->rel2.id_y >= 0)
|
||||
ep->param2->rel2_to_y = ed->table_parts[ep->param2->description->rel2.id_y % ed->table_parts_size];
|
||||
}
|
||||
|
||||
if (ep->description_pos != 0.0)
|
||||
ep->chosen_description = epd2;
|
||||
}
|
||||
|
||||
ed->dirty = 1;
|
||||
#ifdef EDJE_CALC_CACHE
|
||||
|
@ -1444,23 +1465,27 @@ _edje_image_recalc_apply(Edje *ed, Edje_Real_Part *ep, Edje_Calc_Params *p3, Edj
|
|||
else
|
||||
{
|
||||
image_count = 2;
|
||||
if (ep->param2.description)
|
||||
image_count += eina_list_count(ep->param2.description->image.tween_list);
|
||||
if (ep->param2)
|
||||
image_count += eina_list_count(ep->param2->description->image.tween_list);
|
||||
image_num = (pos * ((double)image_count - 0.5));
|
||||
if (image_num > (image_count - 1))
|
||||
image_num = image_count - 1;
|
||||
if (image_num == 0)
|
||||
image_id = ep->param1.description->image.id;
|
||||
else if (image_num == (image_count - 1))
|
||||
image_id = ep->param2.description->image.id;
|
||||
else
|
||||
{
|
||||
Edje_Part_Image_Id *imid;
|
||||
if (ep->param2)
|
||||
{
|
||||
if (image_num == (image_count - 1))
|
||||
image_id = ep->param2->description->image.id;
|
||||
else
|
||||
{
|
||||
Edje_Part_Image_Id *imid;
|
||||
|
||||
imid = eina_list_nth(ep->param2.description->image.tween_list,
|
||||
image_num - 1);
|
||||
if (imid) image_id = imid->id;
|
||||
}
|
||||
imid = eina_list_nth(ep->param2->description->image.tween_list,
|
||||
image_num - 1);
|
||||
if (imid) image_id = imid->id;
|
||||
}
|
||||
}
|
||||
if (image_id < 0)
|
||||
{
|
||||
printf("EDJE ERROR: part \"%s\" has description, "
|
||||
|
@ -1525,6 +1550,7 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags)
|
|||
Edje_Part_Description *chosen_desc;
|
||||
Edje_Real_Part *confine_to = NULL;
|
||||
double pos = 0.0;
|
||||
Edje_Calc_Params lp3;
|
||||
|
||||
if ((ep->calculated & FLAG_XY) == FLAG_XY)
|
||||
{
|
||||
|
@ -1559,6 +1585,11 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags)
|
|||
#endif
|
||||
return;
|
||||
}
|
||||
#ifdef EDJE_CALC_CACHE
|
||||
if (ep->state == ed->state)
|
||||
return ;
|
||||
#endif
|
||||
|
||||
if (flags & FLAG_X)
|
||||
{
|
||||
ep->calculating |= flags & FLAG_X;
|
||||
|
@ -1577,20 +1608,23 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags)
|
|||
state1 = ep->param1.rel2_to_x->state;
|
||||
#endif
|
||||
}
|
||||
if (ep->param2.rel1_to_x)
|
||||
if (ep->param2)
|
||||
{
|
||||
_edje_part_recalc(ed, ep->param2.rel1_to_x, FLAG_X);
|
||||
if (ep->param2->rel1_to_x)
|
||||
{
|
||||
_edje_part_recalc(ed, ep->param2->rel1_to_x, FLAG_X);
|
||||
#ifdef EDJE_CALC_CACHE
|
||||
state2 = ep->param2.rel1_to_x->state;
|
||||
state2 = ep->param2->rel1_to_x->state;
|
||||
#endif
|
||||
}
|
||||
if (ep->param2.rel2_to_x)
|
||||
{
|
||||
_edje_part_recalc(ed, ep->param2.rel2_to_x, FLAG_X);
|
||||
}
|
||||
if (ep->param2->rel2_to_x)
|
||||
{
|
||||
_edje_part_recalc(ed, ep->param2->rel2_to_x, FLAG_X);
|
||||
#ifdef EDJE_CALC_CACHE
|
||||
if (state2 < ep->param2.rel2_to_x->state)
|
||||
state2 = ep->param2.rel2_to_x->state;
|
||||
if (state2 < ep->param2->rel2_to_x->state)
|
||||
state2 = ep->param2->rel2_to_x->state;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
if (flags & FLAG_Y)
|
||||
|
@ -1612,21 +1646,24 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags)
|
|||
state1 = ep->param1.rel2_to_y->state;
|
||||
#endif
|
||||
}
|
||||
if (ep->param2.rel1_to_y)
|
||||
if (ep->param2)
|
||||
{
|
||||
_edje_part_recalc(ed, ep->param2.rel1_to_y, FLAG_Y);
|
||||
if (ep->param2->rel1_to_y)
|
||||
{
|
||||
_edje_part_recalc(ed, ep->param2->rel1_to_y, FLAG_Y);
|
||||
#ifdef EDJE_CALC_CACHE
|
||||
if (state2 < ep->param2.rel1_to_y->state)
|
||||
state2 = ep->param2.rel1_to_y->state;
|
||||
if (state2 < ep->param2->rel1_to_y->state)
|
||||
state2 = ep->param2->rel1_to_y->state;
|
||||
#endif
|
||||
}
|
||||
if (ep->param2.rel2_to_y)
|
||||
{
|
||||
_edje_part_recalc(ed, ep->param2.rel2_to_y, FLAG_Y);
|
||||
}
|
||||
if (ep->param2->rel2_to_y)
|
||||
{
|
||||
_edje_part_recalc(ed, ep->param2->rel2_to_y, FLAG_Y);
|
||||
#ifdef EDJE_CALC_CACHE
|
||||
if (state2 < ep->param2.rel2_to_y->state)
|
||||
state2 = ep->param2.rel2_to_y->state;
|
||||
if (state2 < ep->param2->rel2_to_y->state)
|
||||
state2 = ep->param2->rel2_to_y->state;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
if (ep->drag && ep->drag->confine_to)
|
||||
|
@ -1652,7 +1689,7 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags)
|
|||
#ifndef EDJE_CALC_CACHE
|
||||
p1 = &lp1;
|
||||
#else
|
||||
p1 = ep->param2.description ? &ep->param1.p : &ep->p;
|
||||
p1 = &ep->param1.p;
|
||||
#endif
|
||||
|
||||
if (ep->param1.description)
|
||||
|
@ -1675,33 +1712,32 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags)
|
|||
#endif
|
||||
}
|
||||
}
|
||||
if (ep->param2.description)
|
||||
if (ep->param2 && ep->description_pos != 0.0)
|
||||
{
|
||||
int beginning_pos, part_type;
|
||||
Edje_Calc_Params *p2, *p3;
|
||||
#ifndef EDJE_CALC_CACHE
|
||||
Edje_Calc_Params lp3;
|
||||
|
||||
p2 = &lp2;
|
||||
p3 = &lp3;
|
||||
|
||||
#ifndef EDJE_CALC_CACHE
|
||||
p2 = &lp2;
|
||||
#else
|
||||
p2 = &ep->param2.p;
|
||||
p3 = &ep->p;
|
||||
p2 = &ep->param2->p;
|
||||
|
||||
if (ed->all_part_change ||
|
||||
ep->invalidate ||
|
||||
state2 >= ep->param2.state ||
|
||||
statec >= ep->param2.state ||
|
||||
state2 >= ep->param2->state ||
|
||||
statec >= ep->param2->state ||
|
||||
((ep->part->type == EDJE_PART_TYPE_TEXT || ep->part->type == EDJE_PART_TYPE_TEXTBLOCK) && ed->text_part_change))
|
||||
#endif
|
||||
{
|
||||
_edje_part_recalc_single(ed, ep, ep->param2.description, chosen_desc,
|
||||
ep->param2.rel1_to_x, ep->param2.rel1_to_y, ep->param2.rel2_to_x, ep->param2.rel2_to_y,
|
||||
_edje_part_recalc_single(ed, ep, ep->param2->description, chosen_desc,
|
||||
ep->param2->rel1_to_x, ep->param2->rel1_to_y, ep->param2->rel2_to_x, ep->param2->rel2_to_y,
|
||||
confine_to,
|
||||
p2,
|
||||
flags);
|
||||
#ifdef EDJE_CALC_CACHE
|
||||
ep->param2.state = ed->state;
|
||||
ep->param2->state = ed->state;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -1789,21 +1825,12 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags)
|
|||
}
|
||||
|
||||
pf = p3;
|
||||
#ifdef EDJE_CALC_CACHE
|
||||
ep->state = ed->state;
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
pf = p1;
|
||||
#ifdef EDJE_CALC_CACHE
|
||||
ep->state = ep->param1.state;
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef EDJE_CALC_CACHE
|
||||
ep->invalidate = 0;
|
||||
#endif
|
||||
ep->req = pf->req;
|
||||
|
||||
if (ep->drag && ep->drag->need_reset)
|
||||
|
@ -1912,4 +1939,13 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags)
|
|||
|
||||
ep->calculated |= flags;
|
||||
ep->calculating = FLAG_NONE;
|
||||
|
||||
#ifdef EDJE_CALC_CACHE
|
||||
if (ep->calculated == FLAG_XY)
|
||||
{
|
||||
ep->state = ed->state;
|
||||
ep->invalidate = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
|
|
|
@ -205,11 +205,15 @@ _edje_real_part_free(Edje_Real_Part *rp)
|
|||
if (rp->text.cache.in_str) eina_stringshare_del(rp->text.cache.in_str);
|
||||
if (rp->text.cache.out_str) eina_stringshare_del(rp->text.cache.out_str);
|
||||
|
||||
if (rp->custom.description)
|
||||
_edje_collection_free_part_description_free(rp->custom.description, 0);
|
||||
if (rp->custom)
|
||||
_edje_collection_free_part_description_free(rp->custom->description, 0);
|
||||
|
||||
free(rp->drag);
|
||||
eina_mempool_free(_edje_real_part_state_mp, rp->param2);
|
||||
eina_mempool_free(_edje_real_part_state_mp, rp->custom);
|
||||
|
||||
_edje_unref(rp->edje);
|
||||
free(rp);
|
||||
eina_mempool_free(_edje_real_part_mp, rp);
|
||||
}
|
||||
|
||||
static unsigned char
|
||||
|
@ -1603,22 +1607,29 @@ edje_edit_part_del(Evas_Object *obj, const char* part)
|
|||
if (real->param1.rel2_to_x == rp) real->param1.rel2_to_x = NULL;
|
||||
if (real->param1.rel2_to_y == rp) real->param1.rel2_to_y = NULL;
|
||||
|
||||
if (real->param2.rel1_to_x == rp) real->param2.rel1_to_x = NULL;
|
||||
if (real->param2.rel1_to_y == rp) real->param2.rel1_to_y = NULL;
|
||||
if (real->param2.rel2_to_x == rp) real->param2.rel2_to_x = NULL;
|
||||
if (real->param2.rel2_to_y == rp) real->param2.rel2_to_y = NULL;
|
||||
if (real->param2)
|
||||
{
|
||||
if (real->param2->rel1_to_x == rp) real->param2->rel1_to_x = NULL;
|
||||
if (real->param2->rel1_to_y == rp) real->param2->rel1_to_y = NULL;
|
||||
if (real->param2->rel2_to_x == rp) real->param2->rel2_to_x = NULL;
|
||||
if (real->param2->rel2_to_y == rp) real->param2->rel2_to_y = NULL;
|
||||
}
|
||||
|
||||
if (real->custom.rel1_to_x == rp) real->custom.rel1_to_x = NULL;
|
||||
if (real->custom.rel1_to_y == rp) real->custom.rel1_to_y = NULL;
|
||||
if (real->custom.rel2_to_x == rp) real->custom.rel2_to_x = NULL;
|
||||
if (real->custom.rel2_to_y == rp) real->custom.rel2_to_y = NULL;
|
||||
if (real->custom)
|
||||
{
|
||||
if (real->custom->rel1_to_x == rp) real->custom->rel1_to_x = NULL;
|
||||
if (real->custom->rel1_to_y == rp) real->custom->rel1_to_y = NULL;
|
||||
if (real->custom->rel2_to_x == rp) real->custom->rel2_to_x = NULL;
|
||||
if (real->custom->rel2_to_y == rp) real->custom->rel2_to_y = NULL;
|
||||
}
|
||||
|
||||
if (real->clip_to == rp)
|
||||
{
|
||||
evas_object_clip_set(real->object, ed->clipper);
|
||||
real->clip_to = NULL;
|
||||
}
|
||||
//TODO confine ??
|
||||
if (real->drag && real->drag->confine_to == rp)
|
||||
real->drag->confine_to = NULL;
|
||||
}
|
||||
|
||||
/* Unlink all the parts and descriptions that refer to id */
|
||||
|
|
|
@ -1548,7 +1548,7 @@ _edje_embryo_fn_custom_state(Embryo_Program *ep, Embryo_Cell *params)
|
|||
return 0;
|
||||
|
||||
/* check whether this part already has a "custom" state */
|
||||
if (rp->custom.description)
|
||||
if (rp->custom)
|
||||
return 0;
|
||||
|
||||
GETSTR(name, params[2]);
|
||||
|
@ -1564,6 +1564,13 @@ _edje_embryo_fn_custom_state(Embryo_Program *ep, Embryo_Cell *params)
|
|||
if (!(d = calloc(1, sizeof(Edje_Part_Description))))
|
||||
return 0;
|
||||
|
||||
rp->custom = eina_mempool_malloc(_edje_real_part_state_mp, sizeof (Edje_Real_Part_State));
|
||||
if (!rp->custom)
|
||||
{
|
||||
free(d);
|
||||
return 0;
|
||||
}
|
||||
|
||||
*d = *parent;
|
||||
|
||||
d->state.name = (char *)eina_stringshare_add("custom");
|
||||
|
@ -1579,6 +1586,8 @@ _edje_embryo_fn_custom_state(Embryo_Program *ep, Embryo_Cell *params)
|
|||
Edje_Part_Image_Id *iid_new;
|
||||
|
||||
iid_new = calloc(1, sizeof(Edje_Part_Image_Id));
|
||||
if (!iid_new) continue;
|
||||
|
||||
iid_new->id = iid->id;
|
||||
|
||||
d->image.tween_list = eina_list_append(d->image.tween_list, iid_new);
|
||||
|
@ -1592,7 +1601,7 @@ _edje_embryo_fn_custom_state(Embryo_Program *ep, Embryo_Cell *params)
|
|||
d->text.style = DUP(d->text.style);
|
||||
#undef DUP
|
||||
|
||||
rp->custom.description = d;
|
||||
rp->custom->description = d;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1616,7 +1625,7 @@ _edje_embryo_fn_set_state_val(Embryo_Program *ep, Embryo_Cell *params)
|
|||
return 0;
|
||||
|
||||
/* check whether this part has a "custom" state */
|
||||
if (!rp->custom.description)
|
||||
if (!rp->custom)
|
||||
return 0;
|
||||
|
||||
switch (params[2])
|
||||
|
@ -1624,90 +1633,90 @@ _edje_embryo_fn_set_state_val(Embryo_Program *ep, Embryo_Cell *params)
|
|||
case EDJE_STATE_PARAM_ALIGNMENT:
|
||||
CHKPARAM(4);
|
||||
|
||||
GETFLOAT(rp->custom.description->align.x, params[3]);
|
||||
GETFLOAT(rp->custom.description->align.y, params[4]);
|
||||
GETFLOAT(rp->custom->description->align.x, params[3]);
|
||||
GETFLOAT(rp->custom->description->align.y, params[4]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_MIN:
|
||||
CHKPARAM(4);
|
||||
|
||||
GETINT(rp->custom.description->min.w, params[3]);
|
||||
GETINT(rp->custom.description->min.h, params[4]);
|
||||
GETINT(rp->custom->description->min.w, params[3]);
|
||||
GETINT(rp->custom->description->min.h, params[4]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_MAX:
|
||||
CHKPARAM(4);
|
||||
|
||||
GETINT(rp->custom.description->max.w, params[3]);
|
||||
GETINT(rp->custom.description->max.h, params[4]);
|
||||
GETINT(rp->custom->description->max.w, params[3]);
|
||||
GETINT(rp->custom->description->max.h, params[4]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_STEP:
|
||||
CHKPARAM(4);
|
||||
|
||||
GETINT(rp->custom.description->step.x, params[3]);
|
||||
GETINT(rp->custom.description->step.y, params[4]);
|
||||
GETINT(rp->custom->description->step.x, params[3]);
|
||||
GETINT(rp->custom->description->step.y, params[4]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_ASPECT:
|
||||
CHKPARAM(4);
|
||||
|
||||
GETFLOAT(rp->custom.description->aspect.min, params[3]);
|
||||
GETFLOAT(rp->custom.description->aspect.max, params[4]);
|
||||
GETFLOAT(rp->custom->description->aspect.min, params[3]);
|
||||
GETFLOAT(rp->custom->description->aspect.max, params[4]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_ASPECT_PREF:
|
||||
CHKPARAM(3);
|
||||
|
||||
GETINT(rp->custom.description->aspect.prefer, params[3]);
|
||||
GETINT(rp->custom->description->aspect.prefer, params[3]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_COLOR:
|
||||
CHKPARAM(6);
|
||||
|
||||
GETINT(rp->custom.description->color.r, params[3]);
|
||||
GETINT(rp->custom.description->color.g, params[4]);
|
||||
GETINT(rp->custom.description->color.b, params[5]);
|
||||
GETINT(rp->custom.description->color.a, params[6]);
|
||||
GETINT(rp->custom->description->color.r, params[3]);
|
||||
GETINT(rp->custom->description->color.g, params[4]);
|
||||
GETINT(rp->custom->description->color.b, params[5]);
|
||||
GETINT(rp->custom->description->color.a, params[6]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_COLOR2:
|
||||
CHKPARAM(6);
|
||||
|
||||
GETINT(rp->custom.description->color2.r, params[3]);
|
||||
GETINT(rp->custom.description->color2.g, params[4]);
|
||||
GETINT(rp->custom.description->color2.b, params[5]);
|
||||
GETINT(rp->custom.description->color2.a, params[6]);
|
||||
GETINT(rp->custom->description->color2.r, params[3]);
|
||||
GETINT(rp->custom->description->color2.g, params[4]);
|
||||
GETINT(rp->custom->description->color2.b, params[5]);
|
||||
GETINT(rp->custom->description->color2.a, params[6]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_COLOR3:
|
||||
CHKPARAM(6);
|
||||
|
||||
GETINT(rp->custom.description->color3.r, params[3]);
|
||||
GETINT(rp->custom.description->color3.g, params[4]);
|
||||
GETINT(rp->custom.description->color3.b, params[5]);
|
||||
GETINT(rp->custom.description->color3.a, params[6]);
|
||||
GETINT(rp->custom->description->color3.r, params[3]);
|
||||
GETINT(rp->custom->description->color3.g, params[4]);
|
||||
GETINT(rp->custom->description->color3.b, params[5]);
|
||||
GETINT(rp->custom->description->color3.a, params[6]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_COLOR_CLASS:
|
||||
CHKPARAM(3);
|
||||
|
||||
GETSTR(s, params[3]);
|
||||
GETSTREVAS(s, rp->custom.description->color_class);
|
||||
GETSTREVAS(s, rp->custom->description->color_class);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_REL1:
|
||||
CHKPARAM(4);
|
||||
|
||||
GETFLOAT(rp->custom.description->rel1.relative_x, params[3]);
|
||||
GETFLOAT(rp->custom.description->rel1.relative_y, params[4]);
|
||||
GETFLOAT(rp->custom->description->rel1.relative_x, params[3]);
|
||||
GETFLOAT(rp->custom->description->rel1.relative_y, params[4]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_REL1_TO:
|
||||
CHKPARAM(4);
|
||||
|
||||
GETINT(rp->custom.description->rel1.id_x, params[3]);
|
||||
GETINT(rp->custom.description->rel1.id_y, params[4]);
|
||||
GETINT(rp->custom->description->rel1.id_x, params[3]);
|
||||
GETINT(rp->custom->description->rel1.id_y, params[4]);
|
||||
|
||||
if (rp->param1.description->rel1.id_x >= 0)
|
||||
rp->param1.rel1_to_x = ed->table_parts[rp->param1.description->rel1.id_x % ed->table_parts_size];
|
||||
|
@ -1718,22 +1727,22 @@ _edje_embryo_fn_set_state_val(Embryo_Program *ep, Embryo_Cell *params)
|
|||
case EDJE_STATE_PARAM_REL1_OFFSET:
|
||||
CHKPARAM(4);
|
||||
|
||||
GETINT(rp->custom.description->rel1.offset_x, params[3]);
|
||||
GETINT(rp->custom.description->rel1.offset_y, params[4]);
|
||||
GETINT(rp->custom->description->rel1.offset_x, params[3]);
|
||||
GETINT(rp->custom->description->rel1.offset_y, params[4]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_REL2:
|
||||
CHKPARAM(4);
|
||||
|
||||
GETFLOAT(rp->custom.description->rel2.relative_x, params[3]);
|
||||
GETFLOAT(rp->custom.description->rel2.relative_y, params[4]);
|
||||
GETFLOAT(rp->custom->description->rel2.relative_x, params[3]);
|
||||
GETFLOAT(rp->custom->description->rel2.relative_y, params[4]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_REL2_TO:
|
||||
CHKPARAM(4);
|
||||
|
||||
GETINT(rp->custom.description->rel2.id_x, params[3]);
|
||||
GETINT(rp->custom.description->rel2.id_y, params[4]);
|
||||
GETINT(rp->custom->description->rel2.id_x, params[3]);
|
||||
GETINT(rp->custom->description->rel2.id_y, params[4]);
|
||||
|
||||
if (rp->param1.description->rel2.id_x >= 0)
|
||||
rp->param1.rel2_to_x = ed->table_parts[rp->param1.description->rel2.id_x % ed->table_parts_size];
|
||||
|
@ -1744,52 +1753,52 @@ _edje_embryo_fn_set_state_val(Embryo_Program *ep, Embryo_Cell *params)
|
|||
case EDJE_STATE_PARAM_REL2_OFFSET:
|
||||
CHKPARAM(4);
|
||||
|
||||
GETINT(rp->custom.description->rel2.offset_x, params[3]);
|
||||
GETINT(rp->custom.description->rel2.offset_y, params[4]);
|
||||
GETINT(rp->custom->description->rel2.offset_x, params[3]);
|
||||
GETINT(rp->custom->description->rel2.offset_y, params[4]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_IMAGE:
|
||||
if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0;
|
||||
CHKPARAM(3);
|
||||
|
||||
GETINT(rp->custom.description->image.id, params[3]);
|
||||
GETINT(rp->custom->description->image.id, params[3]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_BORDER:
|
||||
if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0;
|
||||
CHKPARAM(6);
|
||||
|
||||
GETINT(rp->custom.description->border.l, params[3]);
|
||||
GETINT(rp->custom.description->border.r, params[4]);
|
||||
GETINT(rp->custom.description->border.t, params[5]);
|
||||
GETINT(rp->custom.description->border.b, params[6]);
|
||||
GETINT(rp->custom->description->border.l, params[3]);
|
||||
GETINT(rp->custom->description->border.r, params[4]);
|
||||
GETINT(rp->custom->description->border.t, params[5]);
|
||||
GETINT(rp->custom->description->border.b, params[6]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_FILL_SMOOTH:
|
||||
if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0;
|
||||
CHKPARAM(3);
|
||||
|
||||
GETINT(rp->custom.description->fill.smooth, params[3]);
|
||||
GETINT(rp->custom->description->fill.smooth, params[3]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_FILL_POS:
|
||||
if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0;
|
||||
CHKPARAM(6);
|
||||
|
||||
GETFLOAT(rp->custom.description->fill.pos_rel_x, params[3]);
|
||||
GETFLOAT(rp->custom.description->fill.pos_rel_y, params[4]);
|
||||
GETINT(rp->custom.description->fill.pos_abs_x, params[5]);
|
||||
GETINT(rp->custom.description->fill.pos_abs_y, params[6]);
|
||||
GETFLOAT(rp->custom->description->fill.pos_rel_x, params[3]);
|
||||
GETFLOAT(rp->custom->description->fill.pos_rel_y, params[4]);
|
||||
GETINT(rp->custom->description->fill.pos_abs_x, params[5]);
|
||||
GETINT(rp->custom->description->fill.pos_abs_y, params[6]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_FILL_SIZE:
|
||||
if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0;
|
||||
CHKPARAM(6);
|
||||
|
||||
GETFLOAT(rp->custom.description->fill.rel_x, params[3]);
|
||||
GETFLOAT(rp->custom.description->fill.rel_y, params[4]);
|
||||
GETINT(rp->custom.description->fill.abs_x, params[5]);
|
||||
GETINT(rp->custom.description->fill.abs_y, params[6]);
|
||||
GETFLOAT(rp->custom->description->fill.rel_x, params[3]);
|
||||
GETFLOAT(rp->custom->description->fill.rel_y, params[4]);
|
||||
GETINT(rp->custom->description->fill.abs_x, params[5]);
|
||||
GETINT(rp->custom->description->fill.abs_y, params[6]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_TEXT:
|
||||
|
@ -1799,7 +1808,7 @@ _edje_embryo_fn_set_state_val(Embryo_Program *ep, Embryo_Cell *params)
|
|||
CHKPARAM(3);
|
||||
|
||||
GETSTR(s, params[3]);
|
||||
GETSTREVAS(s, rp->custom.description->text.text);
|
||||
GETSTREVAS(s, rp->custom->description->text.text);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_TEXT_CLASS:
|
||||
|
@ -1809,7 +1818,7 @@ _edje_embryo_fn_set_state_val(Embryo_Program *ep, Embryo_Cell *params)
|
|||
CHKPARAM(3);
|
||||
|
||||
GETSTR(s, params[3]);
|
||||
GETSTREVAS(s, rp->custom.description->text.text_class);
|
||||
GETSTREVAS(s, rp->custom->description->text.text_class);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_TEXT_FONT:
|
||||
|
@ -1817,7 +1826,7 @@ _edje_embryo_fn_set_state_val(Embryo_Program *ep, Embryo_Cell *params)
|
|||
CHKPARAM(3);
|
||||
|
||||
GETSTR(s, params[3]);
|
||||
GETSTREVAS(s, rp->custom.description->text.font);
|
||||
GETSTREVAS(s, rp->custom->description->text.font);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_TEXT_STYLE:
|
||||
|
@ -1825,22 +1834,22 @@ _edje_embryo_fn_set_state_val(Embryo_Program *ep, Embryo_Cell *params)
|
|||
CHKPARAM(3);
|
||||
|
||||
GETSTR(s, params[3]);
|
||||
GETSTREVAS(s, rp->custom.description->text.style);
|
||||
GETSTREVAS(s, rp->custom->description->text.style);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_TEXT_SIZE:
|
||||
if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0;
|
||||
CHKPARAM(3);
|
||||
|
||||
GETINT(rp->custom.description->text.size, params[3]);
|
||||
GETINT(rp->custom->description->text.size, params[3]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_TEXT_FIT:
|
||||
if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0;
|
||||
CHKPARAM(4);
|
||||
|
||||
GETINT(rp->custom.description->text.fit_x, params[3]);
|
||||
GETINT(rp->custom.description->text.fit_y, params[4]);
|
||||
GETINT(rp->custom->description->text.fit_x, params[3]);
|
||||
GETINT(rp->custom->description->text.fit_y, params[4]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_TEXT_MIN:
|
||||
|
@ -1849,8 +1858,8 @@ _edje_embryo_fn_set_state_val(Embryo_Program *ep, Embryo_Cell *params)
|
|||
return 0;
|
||||
CHKPARAM(4);
|
||||
|
||||
GETINT(rp->custom.description->text.min_x, params[3]);
|
||||
GETINT(rp->custom.description->text.min_y, params[4]);
|
||||
GETINT(rp->custom->description->text.min_x, params[3]);
|
||||
GETINT(rp->custom->description->text.min_y, params[4]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_TEXT_MAX:
|
||||
|
@ -1859,22 +1868,22 @@ _edje_embryo_fn_set_state_val(Embryo_Program *ep, Embryo_Cell *params)
|
|||
return 0;
|
||||
CHKPARAM(4);
|
||||
|
||||
GETINT(rp->custom.description->text.max_x, params[3]);
|
||||
GETINT(rp->custom.description->text.max_y, params[4]);
|
||||
GETINT(rp->custom->description->text.max_x, params[3]);
|
||||
GETINT(rp->custom->description->text.max_y, params[4]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_TEXT_ALIGN:
|
||||
if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0;
|
||||
CHKPARAM(4);
|
||||
|
||||
GETFLOAT(rp->custom.description->text.align.x, params[3]);
|
||||
GETFLOAT(rp->custom.description->text.align.y, params[4]);
|
||||
GETFLOAT(rp->custom->description->text.align.x, params[3]);
|
||||
GETFLOAT(rp->custom->description->text.align.y, params[4]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_VISIBLE:
|
||||
CHKPARAM(3);
|
||||
|
||||
GETINT(rp->custom.description->visible, params[3]);
|
||||
GETINT(rp->custom->description->visible, params[3]);
|
||||
|
||||
break;
|
||||
default:
|
||||
|
@ -1907,7 +1916,7 @@ _edje_embryo_fn_get_state_val(Embryo_Program *ep, Embryo_Cell *params)
|
|||
return 0;
|
||||
|
||||
/* check whether this part has a "custom" state */
|
||||
if (!rp->custom.description)
|
||||
if (!rp->custom)
|
||||
return 0;
|
||||
|
||||
switch (params[2])
|
||||
|
@ -1915,162 +1924,162 @@ _edje_embryo_fn_get_state_val(Embryo_Program *ep, Embryo_Cell *params)
|
|||
case EDJE_STATE_PARAM_ALIGNMENT:
|
||||
CHKPARAM(4);
|
||||
|
||||
SETFLOAT(rp->custom.description->align.x, params[3]);
|
||||
SETFLOAT(rp->custom.description->align.y, params[4]);
|
||||
SETFLOAT(rp->custom->description->align.x, params[3]);
|
||||
SETFLOAT(rp->custom->description->align.y, params[4]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_MIN:
|
||||
CHKPARAM(4);
|
||||
|
||||
SETINT(rp->custom.description->min.w, params[3]);
|
||||
SETINT(rp->custom.description->min.h, params[4]);
|
||||
SETINT(rp->custom->description->min.w, params[3]);
|
||||
SETINT(rp->custom->description->min.h, params[4]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_MAX:
|
||||
CHKPARAM(4);
|
||||
|
||||
SETINT(rp->custom.description->max.w, params[3]);
|
||||
SETINT(rp->custom.description->max.h, params[4]);
|
||||
SETINT(rp->custom->description->max.w, params[3]);
|
||||
SETINT(rp->custom->description->max.h, params[4]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_STEP:
|
||||
CHKPARAM(4);
|
||||
|
||||
SETINT(rp->custom.description->step.x, params[3]);
|
||||
SETINT(rp->custom.description->step.y, params[4]);
|
||||
SETINT(rp->custom->description->step.x, params[3]);
|
||||
SETINT(rp->custom->description->step.y, params[4]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_ASPECT:
|
||||
CHKPARAM(4);
|
||||
|
||||
SETFLOAT(rp->custom.description->aspect.min, params[3]);
|
||||
SETFLOAT(rp->custom.description->aspect.max, params[4]);
|
||||
SETFLOAT(rp->custom->description->aspect.min, params[3]);
|
||||
SETFLOAT(rp->custom->description->aspect.max, params[4]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_ASPECT_PREF:
|
||||
CHKPARAM(3);
|
||||
|
||||
SETINT(rp->custom.description->aspect.prefer, params[3]);
|
||||
SETINT(rp->custom->description->aspect.prefer, params[3]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_COLOR:
|
||||
CHKPARAM(6);
|
||||
|
||||
SETINT(rp->custom.description->color.r, params[3]);
|
||||
SETINT(rp->custom.description->color.g, params[4]);
|
||||
SETINT(rp->custom.description->color.b, params[5]);
|
||||
SETINT(rp->custom.description->color.a, params[6]);
|
||||
SETINT(rp->custom->description->color.r, params[3]);
|
||||
SETINT(rp->custom->description->color.g, params[4]);
|
||||
SETINT(rp->custom->description->color.b, params[5]);
|
||||
SETINT(rp->custom->description->color.a, params[6]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_COLOR2:
|
||||
CHKPARAM(6);
|
||||
|
||||
SETINT(rp->custom.description->color2.r, params[3]);
|
||||
SETINT(rp->custom.description->color2.g, params[4]);
|
||||
SETINT(rp->custom.description->color2.b, params[5]);
|
||||
SETINT(rp->custom.description->color2.a, params[6]);
|
||||
SETINT(rp->custom->description->color2.r, params[3]);
|
||||
SETINT(rp->custom->description->color2.g, params[4]);
|
||||
SETINT(rp->custom->description->color2.b, params[5]);
|
||||
SETINT(rp->custom->description->color2.a, params[6]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_COLOR3:
|
||||
CHKPARAM(6);
|
||||
|
||||
SETINT(rp->custom.description->color3.r, params[3]);
|
||||
SETINT(rp->custom.description->color3.g, params[4]);
|
||||
SETINT(rp->custom.description->color3.b, params[5]);
|
||||
SETINT(rp->custom.description->color3.a, params[6]);
|
||||
SETINT(rp->custom->description->color3.r, params[3]);
|
||||
SETINT(rp->custom->description->color3.g, params[4]);
|
||||
SETINT(rp->custom->description->color3.b, params[5]);
|
||||
SETINT(rp->custom->description->color3.a, params[6]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_COLOR_CLASS:
|
||||
CHKPARAM(4);
|
||||
|
||||
s = rp->custom.description->color_class;
|
||||
s = rp->custom->description->color_class;
|
||||
SETSTRALLOCATE(s);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_REL1:
|
||||
CHKPARAM(4);
|
||||
|
||||
SETFLOAT(rp->custom.description->rel1.relative_x, params[3]);
|
||||
SETFLOAT(rp->custom.description->rel1.relative_y, params[4]);
|
||||
SETFLOAT(rp->custom->description->rel1.relative_x, params[3]);
|
||||
SETFLOAT(rp->custom->description->rel1.relative_y, params[4]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_REL1_TO:
|
||||
CHKPARAM(4);
|
||||
|
||||
SETINT(rp->custom.description->rel1.id_x, params[3]);
|
||||
SETINT(rp->custom.description->rel1.id_y, params[4]);
|
||||
SETINT(rp->custom->description->rel1.id_x, params[3]);
|
||||
SETINT(rp->custom->description->rel1.id_y, params[4]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_REL1_OFFSET:
|
||||
CHKPARAM(4);
|
||||
|
||||
SETINT(rp->custom.description->rel1.offset_x, params[3]);
|
||||
SETINT(rp->custom.description->rel1.offset_y, params[4]);
|
||||
SETINT(rp->custom->description->rel1.offset_x, params[3]);
|
||||
SETINT(rp->custom->description->rel1.offset_y, params[4]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_REL2:
|
||||
CHKPARAM(4);
|
||||
|
||||
SETFLOAT(rp->custom.description->rel2.relative_x, params[3]);
|
||||
SETFLOAT(rp->custom.description->rel2.relative_y, params[4]);
|
||||
SETFLOAT(rp->custom->description->rel2.relative_x, params[3]);
|
||||
SETFLOAT(rp->custom->description->rel2.relative_y, params[4]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_REL2_TO:
|
||||
CHKPARAM(4);
|
||||
|
||||
SETINT(rp->custom.description->rel2.id_x, params[3]);
|
||||
SETINT(rp->custom.description->rel2.id_y, params[4]);
|
||||
SETINT(rp->custom->description->rel2.id_x, params[3]);
|
||||
SETINT(rp->custom->description->rel2.id_y, params[4]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_REL2_OFFSET:
|
||||
CHKPARAM(4);
|
||||
|
||||
SETINT(rp->custom.description->rel2.offset_x, params[3]);
|
||||
SETINT(rp->custom.description->rel2.offset_y, params[4]);
|
||||
SETINT(rp->custom->description->rel2.offset_x, params[3]);
|
||||
SETINT(rp->custom->description->rel2.offset_y, params[4]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_IMAGE:
|
||||
if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0;
|
||||
CHKPARAM(3);
|
||||
|
||||
SETINT(rp->custom.description->image.id, params[3]);
|
||||
SETINT(rp->custom->description->image.id, params[3]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_BORDER:
|
||||
if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0;
|
||||
CHKPARAM(6);
|
||||
|
||||
SETINT(rp->custom.description->border.l, params[3]);
|
||||
SETINT(rp->custom.description->border.r, params[4]);
|
||||
SETINT(rp->custom.description->border.t, params[5]);
|
||||
SETINT(rp->custom.description->border.b, params[6]);
|
||||
SETINT(rp->custom->description->border.l, params[3]);
|
||||
SETINT(rp->custom->description->border.r, params[4]);
|
||||
SETINT(rp->custom->description->border.t, params[5]);
|
||||
SETINT(rp->custom->description->border.b, params[6]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_FILL_SMOOTH:
|
||||
if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0;
|
||||
CHKPARAM(3);
|
||||
|
||||
SETINT(rp->custom.description->fill.smooth, params[3]);
|
||||
SETINT(rp->custom->description->fill.smooth, params[3]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_FILL_POS:
|
||||
if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0;
|
||||
CHKPARAM(6);
|
||||
|
||||
SETFLOAT(rp->custom.description->fill.pos_rel_x, params[3]);
|
||||
SETFLOAT(rp->custom.description->fill.pos_rel_y, params[4]);
|
||||
SETINT(rp->custom.description->fill.pos_abs_x, params[5]);
|
||||
SETINT(rp->custom.description->fill.pos_abs_y, params[6]);
|
||||
SETFLOAT(rp->custom->description->fill.pos_rel_x, params[3]);
|
||||
SETFLOAT(rp->custom->description->fill.pos_rel_y, params[4]);
|
||||
SETINT(rp->custom->description->fill.pos_abs_x, params[5]);
|
||||
SETINT(rp->custom->description->fill.pos_abs_y, params[6]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_FILL_SIZE:
|
||||
if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0;
|
||||
CHKPARAM(6);
|
||||
|
||||
SETFLOAT(rp->custom.description->fill.rel_x, params[3]);
|
||||
SETFLOAT(rp->custom.description->fill.rel_y, params[4]);
|
||||
SETINT(rp->custom.description->fill.abs_x, params[5]);
|
||||
SETINT(rp->custom.description->fill.abs_y, params[6]);
|
||||
SETFLOAT(rp->custom->description->fill.rel_x, params[3]);
|
||||
SETFLOAT(rp->custom->description->fill.rel_y, params[4]);
|
||||
SETINT(rp->custom->description->fill.abs_x, params[5]);
|
||||
SETINT(rp->custom->description->fill.abs_y, params[6]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_TEXT:
|
||||
|
@ -2079,7 +2088,7 @@ _edje_embryo_fn_get_state_val(Embryo_Program *ep, Embryo_Cell *params)
|
|||
return 0;
|
||||
CHKPARAM(4);
|
||||
|
||||
s = rp->custom.description->text.text;
|
||||
s = rp->custom->description->text.text;
|
||||
SETSTRALLOCATE(s);
|
||||
|
||||
break;
|
||||
|
@ -2089,7 +2098,7 @@ _edje_embryo_fn_get_state_val(Embryo_Program *ep, Embryo_Cell *params)
|
|||
return 0;
|
||||
CHKPARAM(4);
|
||||
|
||||
s = rp->custom.description->text.text_class;
|
||||
s = rp->custom->description->text.text_class;
|
||||
SETSTRALLOCATE(s);
|
||||
|
||||
break;
|
||||
|
@ -2097,7 +2106,7 @@ _edje_embryo_fn_get_state_val(Embryo_Program *ep, Embryo_Cell *params)
|
|||
if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0;
|
||||
CHKPARAM(4);
|
||||
|
||||
s = rp->custom.description->text.font;
|
||||
s = rp->custom->description->text.font;
|
||||
SETSTRALLOCATE(s);
|
||||
|
||||
break;
|
||||
|
@ -2105,7 +2114,7 @@ _edje_embryo_fn_get_state_val(Embryo_Program *ep, Embryo_Cell *params)
|
|||
if ((rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) return 0;
|
||||
CHKPARAM(4);
|
||||
|
||||
s = rp->custom.description->text.style;
|
||||
s = rp->custom->description->text.style;
|
||||
SETSTRALLOCATE(s);
|
||||
|
||||
break;
|
||||
|
@ -2113,15 +2122,15 @@ _edje_embryo_fn_get_state_val(Embryo_Program *ep, Embryo_Cell *params)
|
|||
if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0;
|
||||
CHKPARAM(3);
|
||||
|
||||
SETINT(rp->custom.description->text.size, params[3]);
|
||||
SETINT(rp->custom->description->text.size, params[3]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_TEXT_FIT:
|
||||
if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0;
|
||||
CHKPARAM(4);
|
||||
|
||||
SETINT(rp->custom.description->text.fit_x, params[3]);
|
||||
SETINT(rp->custom.description->text.fit_y, params[4]);
|
||||
SETINT(rp->custom->description->text.fit_x, params[3]);
|
||||
SETINT(rp->custom->description->text.fit_y, params[4]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_TEXT_MIN:
|
||||
|
@ -2130,8 +2139,8 @@ _edje_embryo_fn_get_state_val(Embryo_Program *ep, Embryo_Cell *params)
|
|||
return 0;
|
||||
CHKPARAM(4);
|
||||
|
||||
SETINT(rp->custom.description->text.min_x, params[3]);
|
||||
SETINT(rp->custom.description->text.min_y, params[4]);
|
||||
SETINT(rp->custom->description->text.min_x, params[3]);
|
||||
SETINT(rp->custom->description->text.min_y, params[4]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_TEXT_MAX:
|
||||
|
@ -2140,22 +2149,22 @@ _edje_embryo_fn_get_state_val(Embryo_Program *ep, Embryo_Cell *params)
|
|||
return 0;
|
||||
CHKPARAM(4);
|
||||
|
||||
SETINT(rp->custom.description->text.max_x, params[3]);
|
||||
SETINT(rp->custom.description->text.max_y, params[4]);
|
||||
SETINT(rp->custom->description->text.max_x, params[3]);
|
||||
SETINT(rp->custom->description->text.max_y, params[4]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_TEXT_ALIGN:
|
||||
if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0;
|
||||
CHKPARAM(4);
|
||||
|
||||
SETFLOAT(rp->custom.description->text.align.x, params[3]);
|
||||
SETFLOAT(rp->custom.description->text.align.y, params[4]);
|
||||
SETFLOAT(rp->custom->description->text.align.x, params[3]);
|
||||
SETFLOAT(rp->custom->description->text.align.y, params[4]);
|
||||
|
||||
break;
|
||||
case EDJE_STATE_PARAM_VISIBLE:
|
||||
CHKPARAM(3);
|
||||
|
||||
SETINT(rp->custom.description->visible, params[3]);
|
||||
SETINT(rp->custom->description->visible, params[3]);
|
||||
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -346,13 +346,15 @@ _edje_object_file_set_internal(Evas_Object *obj, const char *file, const char *g
|
|||
Edje_Real_Part *rp;
|
||||
|
||||
ep = eina_list_data_get(l);
|
||||
rp = calloc(1, sizeof(Edje_Real_Part));
|
||||
rp = eina_mempool_malloc(_edje_real_part_mp, sizeof(Edje_Real_Part));
|
||||
if (!rp)
|
||||
{
|
||||
ed->load_error = EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED;
|
||||
return 0;
|
||||
}
|
||||
|
||||
memset(rp, 0, sizeof (Edje_Real_Part));
|
||||
|
||||
if ((ep->dragable.x != 0) || (ep->dragable.y != 0))
|
||||
{
|
||||
rp->drag = calloc(1, sizeof (Edje_Real_Part_Drag));
|
||||
|
@ -846,13 +848,17 @@ _edje_file_del(Edje *ed)
|
|||
if (rp->text.cache.in_str) eina_stringshare_del(rp->text.cache.in_str);
|
||||
if (rp->text.cache.out_str) eina_stringshare_del(rp->text.cache.out_str);
|
||||
|
||||
if (rp->custom.description)
|
||||
_edje_collection_free_part_description_free(rp->custom.description, ed->file->free_strings);
|
||||
if (rp->custom)
|
||||
_edje_collection_free_part_description_free(rp->custom->description, ed->file->free_strings);
|
||||
|
||||
/* Cleanup optional part. */
|
||||
free(rp->drag);
|
||||
|
||||
eina_mempool_free(_edje_real_part_state_mp, rp->param2);
|
||||
eina_mempool_free(_edje_real_part_state_mp, rp->custom);
|
||||
|
||||
_edje_unref(rp->edje);
|
||||
free(rp);
|
||||
eina_mempool_free(_edje_real_part_mp, rp);
|
||||
}
|
||||
}
|
||||
if ((ed->file) && (ed->collection))
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
#include "edje_private.h"
|
||||
|
||||
static int initted = 0;
|
||||
Eina_Mempool *_edje_real_part_mp = NULL;
|
||||
Eina_Mempool *_edje_real_part_state_mp = NULL;
|
||||
|
||||
/************************** API Routines **************************/
|
||||
|
||||
|
@ -20,6 +22,8 @@ edje_init(void)
|
|||
initted++;
|
||||
if (initted == 1)
|
||||
{
|
||||
const char *choice;
|
||||
|
||||
eina_init();
|
||||
ecore_job_init();
|
||||
srand(time(NULL));
|
||||
|
@ -28,9 +32,34 @@ edje_init(void)
|
|||
_edje_box_init();
|
||||
embryo_init();
|
||||
eet_init();
|
||||
|
||||
_edje_real_part_mp = eina_mempool_add("chained_mempool",
|
||||
"Edje_Real_Part", NULL,
|
||||
sizeof (Edje_Real_Part), 128);
|
||||
if (!_edje_real_part_mp)
|
||||
{
|
||||
EINA_ERROR_PERR("ERROR: Mempool for Edje_Real_Part cannot be allocated.\n");
|
||||
goto on_error;
|
||||
}
|
||||
|
||||
_edje_real_part_state_mp = eina_mempool_add("chained_mempool",
|
||||
"Edje_Real_Part_State", NULL,
|
||||
sizeof (Edje_Real_Part_State), 256);
|
||||
if (!_edje_real_part_state_mp)
|
||||
{
|
||||
EINA_ERROR_PERR("ERROR: Mempool for Edje_Real_Part_State cannot be allocated.\n");
|
||||
goto on_error;
|
||||
}
|
||||
}
|
||||
_edje_message_init();
|
||||
return initted;
|
||||
|
||||
on_error:
|
||||
eina_mempool_del(_edje_real_part_state_mp);
|
||||
eina_mempool_del(_edje_real_part_mp);
|
||||
_edje_real_part_state_mp = NULL;
|
||||
_edje_real_part_mp = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/** Shutdown the EDJE library.
|
||||
|
@ -55,6 +84,12 @@ edje_shutdown(void)
|
|||
_edje_text_class_members_free();
|
||||
_edje_text_class_hash_free();
|
||||
_edje_box_shutdown();
|
||||
|
||||
eina_mempool_del(_edje_real_part_state_mp);
|
||||
eina_mempool_del(_edje_real_part_mp);
|
||||
_edje_real_part_state_mp = NULL;
|
||||
_edje_real_part_mp = NULL;
|
||||
|
||||
embryo_shutdown();
|
||||
ecore_job_shutdown();
|
||||
eet_shutdown();
|
||||
|
|
|
@ -840,11 +840,11 @@ struct _Edje_Real_Part
|
|||
|
||||
double description_pos; // 8
|
||||
Edje_Part_Description *chosen_description; // 4
|
||||
Edje_Real_Part_State param1, param2, custom; // 60 // FIXME: custom should be alloced on demand - 20--
|
||||
// WITH EDJE_CALC_CACHE: 420
|
||||
Edje_Real_Part_State param1; // 20
|
||||
// WITH EDJE_CALC_CACHE: 140
|
||||
Edje_Real_Part_State *param2, *custom; // 8
|
||||
|
||||
#ifdef EDJE_CALC_CACHE
|
||||
Edje_Calc_Params p; // 116
|
||||
int state; // 4
|
||||
#endif
|
||||
|
||||
|
@ -862,8 +862,8 @@ struct _Edje_Real_Part
|
|||
#ifdef EDJE_CALC_CACHE
|
||||
unsigned char invalidate : 1;
|
||||
#endif
|
||||
}; // 298
|
||||
// WITH EDJE_CALC_CACHE: 778
|
||||
}; // 260
|
||||
// WITH EDJE_CALC_CACHE: 400
|
||||
|
||||
struct _Edje_Running_Program
|
||||
{
|
||||
|
@ -1101,6 +1101,9 @@ extern double _edje_scale;
|
|||
extern int _edje_freeze_val;
|
||||
extern int _edje_freeze_calc_count;
|
||||
|
||||
extern Eina_Mempool *_edje_real_part_mp;
|
||||
extern Eina_Mempool *_edje_real_part_state_mp;
|
||||
|
||||
void _edje_part_pos_set(Edje *ed, Edje_Real_Part *ep, int mode, double pos);
|
||||
Edje_Part_Description *_edje_part_description_find(Edje *ed, Edje_Real_Part *rp, const char *name, double val);
|
||||
void _edje_part_description_apply(Edje *ed, Edje_Real_Part *ep, const char *d1, double v1, const char *d2, double v2);
|
||||
|
|
Loading…
Reference in New Issue