edje: factorize call to eo_do to reduce eo_do_start cost.
This commit is contained in:
parent
142a0ceb48
commit
b95165201c
|
@ -18,7 +18,7 @@ static inline void
|
|||
part_get_geometry(Edje_Real_Part *rp, Evas_Coord *w, Evas_Coord *h)
|
||||
{
|
||||
if (!rp->part->use_alternate_font_metrics)
|
||||
evas_object_geometry_get(rp->object, NULL, NULL, w, h);
|
||||
eo_do(rp->object, evas_obj_size_get(w, h));
|
||||
else
|
||||
{
|
||||
if (w) *w = evas_object_text_horiz_advance_get(rp->object);
|
||||
|
@ -286,24 +286,31 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
|
|||
ep->typedata.text->cache.in_size = size;
|
||||
if (chosen_desc->text.fit_x && (ep->typedata.text->cache.in_str && eina_stringshare_strlen(ep->typedata.text->cache.in_str) > 0))
|
||||
{
|
||||
if (inlined_font) evas_object_text_font_source_set(ep->object, ed->path);
|
||||
else evas_object_text_font_source_set(ep->object, NULL);
|
||||
|
||||
if (ep->part->scale) evas_object_scale_set(ep->object, TO_DOUBLE(sc));
|
||||
eo_do(ep->object,
|
||||
evas_obj_text_font_set(font, size),
|
||||
|
||||
if (inlined_font) evas_obj_text_font_source_set(ed->path);
|
||||
else evas_obj_text_font_source_set(NULL);
|
||||
|
||||
if (ep->part->scale) evas_obj_scale_set(TO_DOUBLE(sc));
|
||||
|
||||
evas_obj_text_font_set(font, size);
|
||||
evas_obj_text_set(text));
|
||||
|
||||
part_get_geometry(ep, &tw, &th);
|
||||
/* Find the wanted font size */
|
||||
if ((tw != sw) && (size > 0) && (tw != 0))
|
||||
{
|
||||
size = (size * sw) / tw;
|
||||
|
||||
if (inlined_font) evas_object_text_font_source_set(ep->object, ed->path);
|
||||
else evas_object_text_font_source_set(ep->object, NULL);
|
||||
eo_do(ep->object,
|
||||
|
||||
if (inlined_font) evas_obj_text_font_source_set(ed->path);
|
||||
else evas_obj_text_font_source_set(NULL);
|
||||
|
||||
if (ep->part->scale) evas_obj_scale_set(TO_DOUBLE(sc));
|
||||
|
||||
evas_obj_text_font_set(font, size));
|
||||
|
||||
if (ep->part->scale) evas_object_scale_set(ep->object, TO_DOUBLE(sc));
|
||||
evas_object_text_font_set(ep->object, font, size);
|
||||
part_get_geometry(ep, &tw, &th);
|
||||
}
|
||||
|
||||
|
@ -319,12 +326,14 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
|
|||
*/
|
||||
if (!chosen_desc->text.fit_x) size = sh;
|
||||
|
||||
if (inlined_font) evas_object_text_font_source_set(ep->object, ed->path);
|
||||
else evas_object_text_font_source_set(ep->object, NULL);
|
||||
|
||||
if (ep->part->scale) evas_object_scale_set(ep->object, TO_DOUBLE(sc));
|
||||
eo_do(ep->object,
|
||||
evas_obj_text_font_set(font, size),
|
||||
|
||||
if (inlined_font) evas_obj_text_font_source_set(ed->path);
|
||||
else evas_obj_text_font_source_set(NULL);
|
||||
|
||||
if (ep->part->scale) evas_obj_scale_set(TO_DOUBLE(sc));
|
||||
|
||||
evas_obj_text_font_set(font, size);
|
||||
evas_obj_text_set(text));
|
||||
part_get_geometry(ep, &tw, &th);
|
||||
|
||||
|
@ -341,11 +350,15 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
|
|||
{
|
||||
size += dif;
|
||||
if (size <= 0) break;
|
||||
if (inlined_font) evas_object_text_font_source_set(ep->object, ed->path);
|
||||
else evas_object_text_font_source_set(ep->object, NULL);
|
||||
|
||||
if (ep->part->scale) evas_object_scale_set(ep->object, TO_DOUBLE(sc));
|
||||
evas_object_text_font_set(ep->object, font, size);
|
||||
eo_do(ep->object,
|
||||
|
||||
if (inlined_font) evas_obj_text_font_source_set(ed->path);
|
||||
else evas_obj_text_font_source_set(NULL);
|
||||
|
||||
if (ep->part->scale) evas_obj_scale_set(TO_DOUBLE(sc));
|
||||
evas_obj_text_font_set(font, size));
|
||||
|
||||
part_get_geometry(ep, &tw, &th);
|
||||
if ((size > 0) && (th == 0)) break;
|
||||
}
|
||||
|
@ -355,8 +368,10 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
|
|||
{
|
||||
int current;
|
||||
|
||||
if (ep->part->scale) evas_object_scale_set(ep->object, TO_DOUBLE(sc));
|
||||
evas_object_text_font_set(ep->object, font, 10);
|
||||
eo_do(ep->object,
|
||||
if (ep->part->scale) evas_obj_scale_set(TO_DOUBLE(sc));
|
||||
evas_obj_text_font_set(font, 10));
|
||||
|
||||
part_get_geometry(ep, &tw, &th);
|
||||
|
||||
if (th == sh)
|
||||
|
@ -375,8 +390,10 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
|
|||
{
|
||||
current = (top + bottom) / 2;
|
||||
|
||||
if (ep->part->scale) evas_object_scale_set(ep->object, TO_DOUBLE(sc));
|
||||
evas_object_text_font_set(ep->object, font, current);
|
||||
eo_do(ep->object,
|
||||
if (ep->part->scale) evas_obj_scale_set(TO_DOUBLE(sc));
|
||||
evas_obj_text_font_set(font, current));
|
||||
|
||||
part_get_geometry(ep, &tw, &th);
|
||||
|
||||
if (th < sh) bottom = current + 1;
|
||||
|
@ -389,8 +406,10 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
|
|||
{
|
||||
current++;
|
||||
|
||||
if (ep->part->scale) evas_object_scale_set(ep->object, TO_DOUBLE(sc));
|
||||
evas_object_text_font_set(ep->object, font, current);
|
||||
eo_do(ep->object,
|
||||
if (ep->part->scale) evas_obj_scale_set(TO_DOUBLE(sc));
|
||||
evas_obj_text_font_set(font, current));
|
||||
|
||||
part_get_geometry(ep, &tw, &th);
|
||||
} while (th <= sh);
|
||||
size = current - 1;
|
||||
|
@ -409,8 +428,9 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
|
|||
/* Handle ellipsis */
|
||||
if (!chosen_desc->text.min_x)
|
||||
{
|
||||
if (inlined_font) evas_object_text_font_source_set(ep->object, ed->path);
|
||||
else evas_object_text_font_source_set(ep->object, NULL);
|
||||
eo_do(ep->object,
|
||||
if (inlined_font) evas_obj_text_font_source_set(ed->path);
|
||||
else evas_obj_text_font_source_set(NULL));
|
||||
|
||||
text = _edje_text_fit_x(ed, ep, params,
|
||||
text, font, size,
|
||||
|
@ -451,24 +471,27 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
|
|||
ep->typedata.text->cache.fit_y = chosen_desc->text.fit_y;
|
||||
arrange_text:
|
||||
|
||||
if (inlined_font) evas_object_text_font_source_set(ep->object, ed->path);
|
||||
else evas_object_text_font_source_set(ep->object, NULL);
|
||||
|
||||
if (ep->part->scale) evas_object_scale_set(ep->object, TO_DOUBLE(sc));
|
||||
eo_do(ep->object,
|
||||
if (inlined_font) evas_obj_text_font_source_set(ed->path);
|
||||
else evas_obj_text_font_source_set(NULL);
|
||||
|
||||
if (ep->part->scale) evas_obj_scale_set(TO_DOUBLE(sc));
|
||||
|
||||
evas_obj_text_font_set(font, size),
|
||||
evas_obj_text_set(text));
|
||||
part_get_geometry(ep, &tw, &th);
|
||||
|
||||
/* filters */
|
||||
EINA_LIST_FOREACH(prev_sources, li, source_name)
|
||||
eo_do(ep->object, evas_obj_text_filter_source_set(source_name, NULL));
|
||||
EINA_LIST_FOREACH(filter_sources, li, source_name)
|
||||
{
|
||||
Edje_Real_Part *rp = _edje_real_part_get(ed, source_name);
|
||||
eo_do(ep->object, evas_obj_text_filter_source_set(source_name, rp ? rp->object : NULL));
|
||||
}
|
||||
eo_do(ep->object, evas_obj_text_filter_program_set(filter));
|
||||
eo_do(ep->object,
|
||||
EINA_LIST_FOREACH(prev_sources, li, source_name)
|
||||
evas_obj_text_filter_source_set(source_name, NULL);
|
||||
|
||||
EINA_LIST_FOREACH(filter_sources, li, 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_program_set(filter));
|
||||
|
||||
/* Handle alignment */
|
||||
{
|
||||
|
@ -495,12 +518,11 @@ arrange_text:
|
|||
|
||||
if (!calc_only)
|
||||
{
|
||||
evas_object_move(ep->object,
|
||||
ed->x + TO_INT(params->eval.x) + ep->typedata.text->offset.x,
|
||||
ed->y + TO_INT(params->eval.y) + ep->typedata.text->offset.y);
|
||||
eo_do(ep->object,
|
||||
evas_obj_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);
|
||||
|
||||
if (params->visible) evas_object_show(ep->object);
|
||||
else evas_object_hide(ep->object);
|
||||
evas_obj_visibility_set(params->visible));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -4653,7 +4653,7 @@ _edje_real_part_recursive_get_helper(Edje **ed, char **path)
|
|||
}
|
||||
}
|
||||
|
||||
/* Private Routines */
|
||||
/* Private Routines - do not call eo_do inside this one */
|
||||
Edje_Real_Part *
|
||||
_edje_real_part_get(const Edje *ed, const char *part)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue