diff --git a/legacy/edje/src/lib/edje_calc.c b/legacy/edje/src/lib/edje_calc.c index 0305d3f01d..fbeaeb848d 100644 --- a/legacy/edje/src/lib/edje_calc.c +++ b/legacy/edje/src/lib/edje_calc.c @@ -637,16 +637,16 @@ _edje_part_recalc_single(Edje *ed, evas_object_geometry_get(ep->object, NULL, NULL, &tw, &th); if (chosen_desc->text.min_x) { - mw = tw + - _edje_text_styles[ep->part->effect].pad.l + - _edje_text_styles[ep->part->effect].pad.r; + int l, r; + evas_object_text_style_pad_get(ep->object, &l, &r, NULL, NULL); + mw = tw + l + r; if (mw > minw) minw = mw; } if (chosen_desc->text.min_y) { - mh = th + - _edje_text_styles[ep->part->effect].pad.t + - _edje_text_styles[ep->part->effect].pad.b; + int t, b; + evas_object_text_style_pad_get(ep->object, NULL, NULL, &t, &b); + mh = th + t + b; if (mh > minh) minh = mh; } } diff --git a/legacy/edje/src/lib/edje_private.h b/legacy/edje/src/lib/edje_private.h index 685344518a..03157eb5cc 100644 --- a/legacy/edje/src/lib/edje_private.h +++ b/legacy/edje/src/lib/edje_private.h @@ -776,7 +776,6 @@ extern Eet_Data_Descriptor *_edje_edd_edje_part_image_id; extern int _edje_anim_count; extern Ecore_Animator *_edje_timer; extern Evas_List *_edje_animators; -extern Edje_Text_Style _edje_text_styles[EDJE_TEXT_EFFECT_LAST]; extern Evas_List *_edje_edjes; extern char *_edje_fontset_append; diff --git a/legacy/edje/src/lib/edje_text.c b/legacy/edje/src/lib/edje_text.c index 227aaa9e68..eaabdcbcec 100644 --- a/legacy/edje/src/lib/edje_text.c +++ b/legacy/edje/src/lib/edje_text.c @@ -10,174 +10,9 @@ #endif #include -Edje_Text_Style _edje_text_styles[EDJE_TEXT_EFFECT_LAST]; - void _edje_text_init(void) { - int i, j, n = 0; - const char vals[5][5] = - { - {0, 1, 2, 1, 0}, - {1, 3, 4, 3, 1}, - {2, 4, 5, 4, 2}, - {1, 3, 4, 3, 1}, - {0, 1, 2, 1, 0} - }; - - memset(_edje_text_styles, 0, sizeof(_edje_text_styles)); - - _edje_text_styles[EDJE_TEXT_EFFECT_NONE].num = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_NONE].members[0].alpha = 255; - - _edje_text_styles[EDJE_TEXT_EFFECT_PLAIN].num = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_PLAIN].members[0].alpha = 255; - - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE].offset.x = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE].offset.y = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE].pad.l = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE].pad.r = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE].pad.t = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE].pad.b = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE].num = 5; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE].members[0].alpha = 255; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE].members[1].color = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE].members[1].x = 0; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE].members[1].y = -1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE].members[1].alpha = 255; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE].members[2].color = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE].members[2].x = 0; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE].members[2].y = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE].members[2].alpha = 255; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE].members[3].color = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE].members[3].x = -1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE].members[3].y = 0; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE].members[3].alpha = 255; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE].members[4].color = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE].members[4].x = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE].members[4].y = 0; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE].members[4].alpha = 255; - - _edje_text_styles[EDJE_TEXT_EFFECT_SOFT_OUTLINE].offset.x = 2; - _edje_text_styles[EDJE_TEXT_EFFECT_SOFT_OUTLINE].offset.y = 2; - _edje_text_styles[EDJE_TEXT_EFFECT_SOFT_OUTLINE].pad.l = 2; - _edje_text_styles[EDJE_TEXT_EFFECT_SOFT_OUTLINE].pad.r = 2; - _edje_text_styles[EDJE_TEXT_EFFECT_SOFT_OUTLINE].pad.t = 2; - _edje_text_styles[EDJE_TEXT_EFFECT_SOFT_OUTLINE].pad.b = 2; - _edje_text_styles[EDJE_TEXT_EFFECT_SOFT_OUTLINE].num = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_SOFT_OUTLINE].members[0].alpha = 255; - for (j = 0; j < 5; j++) - { - for (i = 0; i < 5; i++) - { - if (((i == 2) && (j == 2)) || (vals[i][j] == 0)) continue; - n = _edje_text_styles[EDJE_TEXT_EFFECT_SOFT_OUTLINE].num; - _edje_text_styles[EDJE_TEXT_EFFECT_SOFT_OUTLINE].members[n].color = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_SOFT_OUTLINE].members[n].x = i - 2; - _edje_text_styles[EDJE_TEXT_EFFECT_SOFT_OUTLINE].members[n].y = j - 2; - _edje_text_styles[EDJE_TEXT_EFFECT_SOFT_OUTLINE].members[n].alpha = vals[i][j] * 50; - _edje_text_styles[EDJE_TEXT_EFFECT_SOFT_OUTLINE].num = n + 1; - } - } - - _edje_text_styles[EDJE_TEXT_EFFECT_SHADOW].pad.r = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_SHADOW].pad.b = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_SHADOW].num = 2; - _edje_text_styles[EDJE_TEXT_EFFECT_SHADOW].members[0].alpha = 255; - _edje_text_styles[EDJE_TEXT_EFFECT_SHADOW].members[1].color = 2; - _edje_text_styles[EDJE_TEXT_EFFECT_SHADOW].members[1].x = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_SHADOW].members[1].y = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_SHADOW].members[1].alpha = 255; - - _edje_text_styles[EDJE_TEXT_EFFECT_SOFT_SHADOW].offset.x = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_SOFT_SHADOW].offset.y = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_SOFT_SHADOW].pad.l = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_SOFT_SHADOW].pad.r = 3; - _edje_text_styles[EDJE_TEXT_EFFECT_SOFT_SHADOW].pad.t = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_SOFT_SHADOW].pad.b = 3; - _edje_text_styles[EDJE_TEXT_EFFECT_SOFT_SHADOW].num = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_SOFT_SHADOW].members[0].alpha = 255; - for (j = 0; j < 5; j++) - { - for (i = 0; i < 5; i++) - { - if (vals[i][j] == 0) continue; - n = _edje_text_styles[EDJE_TEXT_EFFECT_SOFT_SHADOW].num; - _edje_text_styles[EDJE_TEXT_EFFECT_SOFT_SHADOW].members[n].color = 2; - _edje_text_styles[EDJE_TEXT_EFFECT_SOFT_SHADOW].members[n].x = i - 1; - _edje_text_styles[EDJE_TEXT_EFFECT_SOFT_SHADOW].members[n].y = j - 1; - _edje_text_styles[EDJE_TEXT_EFFECT_SOFT_SHADOW].members[n].alpha = vals[i][j] * 50; - _edje_text_styles[EDJE_TEXT_EFFECT_SOFT_SHADOW].num = n + 1; - } - } - - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SHADOW].offset.x = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SHADOW].offset.y = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SHADOW].pad.l = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SHADOW].pad.r = 2; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SHADOW].pad.t = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SHADOW].pad.b = 2; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SHADOW].num = 6; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SHADOW].members[0].alpha = 255; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SHADOW].members[1].color = 2; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SHADOW].members[1].x = 2; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SHADOW].members[1].y = 2; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SHADOW].members[1].alpha = 255; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SHADOW].members[2].color = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SHADOW].members[2].x = 0; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SHADOW].members[2].y = -1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SHADOW].members[2].alpha = 255; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SHADOW].members[3].color = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SHADOW].members[3].x = 0; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SHADOW].members[3].y = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SHADOW].members[3].alpha = 255; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SHADOW].members[4].color = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SHADOW].members[4].x = -1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SHADOW].members[4].y = 0; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SHADOW].members[4].alpha = 255; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SHADOW].members[5].color = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SHADOW].members[5].x = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SHADOW].members[5].y = 0; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SHADOW].members[5].alpha = 255; - - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW].offset.x = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW].offset.y = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW].pad.l = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW].pad.r = 3; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW].pad.t = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW].pad.b = 3; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW].num = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW].members[0].alpha = 255; - for (j = 0; j < 5; j++) - { - for (i = 0; i < 5; i++) - { - if (vals[i][j] == 0) continue; - n = _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW].num; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW].members[n].color = 2; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW].members[n].x = i - 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW].members[n].y = j - 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW].members[n].alpha = vals[i][j] * 50; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW].num = n + 1; - } - } - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW].members[n + 1].color = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW].members[n + 1].x = 0; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW].members[n + 1].y = -1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW].members[n + 1].alpha = 255; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW].members[n + 2].color = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW].members[n + 2].x = 0; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW].members[n + 2].y = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW].members[n + 2].alpha = 255; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW].members[n + 3].color = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW].members[n + 3].x = -1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW].members[n + 3].y = 0; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW].members[n + 3].alpha = 255; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW].members[n + 4].color = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW].members[n + 4].x = 1; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW].members[n + 4].y = 0; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW].members[n + 4].alpha = 255; - _edje_text_styles[EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW].num += 4; } void @@ -188,20 +23,6 @@ _edje_text_part_on_add(Edje *ed, Edje_Real_Part *ep) Edje_Part *pt = ep->part; if (ep->part->type != EDJE_PART_TYPE_TEXT) return; - if (ep->part->effect >= EDJE_TEXT_EFFECT_LAST) return; - for (i = 1; i < _edje_text_styles[ep->part->effect].num; i++) - { - Evas_Object *o; - - o = evas_object_text_add(ed->evas); -// evas_object_text_font_source_set(o, ed->path); - evas_object_smart_member_add(o, ed->obj); - evas_object_pass_events_set(o, 1); - evas_object_clip_set(o, ed->clipper); - evas_object_show(o); - ep->extra_objects = evas_list_append(ep->extra_objects, o); - - } if ((pt->default_desc) && (pt->default_desc->text.text_class)) _edje_text_class_member_add(ed, pt->default_desc->text.text_class); @@ -447,53 +268,6 @@ static void _edje_text_finalize(Edje *ed, Edje_Real_Part *ep, Edje_Calc_Params *params, Evas_Object *o, int i) { - unsigned char r = 0, g = 0, b = 0, a = 0; - int got_color = 1; - - evas_object_move(o, - ed->x + params->x + ep->offset.x + _edje_text_styles[ep->part->effect].members[i].x, - ed->y + params->y + ep->offset.y + _edje_text_styles[ep->part->effect].members[i].y); - - switch (_edje_text_styles[ep->part->effect].members[i].color) - { - case 0: - r = params->color.r; - g = params->color.g; - b = params->color.b; - a = params->color.a; - break; - case 1: - r = params->color2.r; - g = params->color2.g; - b = params->color2.b; - a = params->color2.a; - break; - case 2: - r = params->color3.r; - g = params->color3.g; - b = params->color3.b; - a = params->color3.a; - break; - default: - got_color = 0; - break; - } - - /* if this fails, we probably need to extend - * the switch statement :) - */ - assert (got_color); - - if (got_color) - { - a = (a * (_edje_text_styles[ep->part->effect].members[i].alpha + 1)) / 256; - evas_object_color_set(o, r, g, b, a); - } - - if (params->visible) - evas_object_show(o); - else - evas_object_hide(o); } void @@ -566,11 +340,14 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep, font = font2; } } - - ox = _edje_text_styles[ep->part->effect].offset.x; - oy = _edje_text_styles[ep->part->effect].offset.y; - sw = params->w - (_edje_text_styles[ep->part->effect].pad.l + _edje_text_styles[ep->part->effect].pad.r); - sh = params->h - (_edje_text_styles[ep->part->effect].pad.t + _edje_text_styles[ep->part->effect].pad.b); + { + int l, r, t, b; + evas_object_text_style_pad_get(ep->object, &l, &r, &t, &b); + ox = l; + oy = t; + sw = params->w - (l + r); + sh = params->h - (t + b); + } if ((ep->text.cache.in_size == size) && (ep->text.cache.in_w == sw) && (ep->text.cache.in_h == sh) && @@ -725,31 +502,88 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep, evas_object_move(ep->object, ed->x + params->x + ep->offset.x, ed->y + params->y + ep->offset.y); - evas_object_color_set(ep->object, - params->color.r, - params->color.g, - params->color.b, - (params->color.a * (_edje_text_styles[ep->part->effect].members[0].alpha + 1)) / 256); + if (params->visible) evas_object_show(ep->object); else evas_object_hide(ep->object); - { - Evas_List *l; - int i; - - for (i = 1, l = ep->extra_objects; l; l = l->next, i++) - { - Evas_Object *o; - - o = l->data; - if (inlined_font) evas_object_text_font_source_set(o, ed->path); - else evas_object_text_font_source_set(o, NULL); - - evas_object_text_font_set(o, font, size); - evas_object_text_text_set(o, text); + Evas_Text_Style_Type style; - _edje_text_finalize(ed, ep, params, o, i); + evas_object_color_set(ep->object, + params->color.r, + params->color.g, + params->color.b, + params->color.a); + + if ((ep->part->effect == EDJE_TEXT_EFFECT_NONE) || + (ep->part->effect == EDJE_TEXT_EFFECT_PLAIN)) + { + style = EVAS_TEXT_STYLE_PLAIN; } + else if (ep->part->effect == EDJE_TEXT_EFFECT_OUTLINE) + { + style = EVAS_TEXT_STYLE_OUTLINE; + evas_object_text_outline_color_set(ep->object, + params->color2.r, + params->color2.g, + params->color2.b, + params->color2.a); + } + else if (ep->part->effect == EDJE_TEXT_EFFECT_SOFT_OUTLINE) + { + style = EVAS_TEXT_STYLE_SOFT_OUTLINE; + evas_object_text_outline_color_set(ep->object, + params->color2.r, + params->color2.g, + params->color2.b, + params->color2.a); + } + else if (ep->part->effect == EDJE_TEXT_EFFECT_SHADOW) + { + style = EVAS_TEXT_STYLE_SHADOW; + evas_object_text_shadow_color_set(ep->object, + params->color3.r, + params->color3.g, + params->color3.b, + params->color3.a); + } + else if (ep->part->effect == EDJE_TEXT_EFFECT_SOFT_SHADOW) + { + style = EVAS_TEXT_STYLE_SOFT_SHADOW; + evas_object_text_shadow_color_set(ep->object, + params->color3.r, + params->color3.g, + params->color3.b, + params->color3.a); + } + else if (ep->part->effect == EDJE_TEXT_EFFECT_OUTLINE_SHADOW) + { + style = EVAS_TEXT_STYLE_OUTLINE_SHADOW; + evas_object_text_outline_color_set(ep->object, + params->color2.r, + params->color2.g, + params->color2.b, + params->color2.a); + evas_object_text_shadow_color_set(ep->object, + params->color3.r, + params->color3.g, + params->color3.b, + params->color3.a); + } + else if (ep->part->effect == EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW) + { + style = EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW; + evas_object_text_outline_color_set(ep->object, + params->color2.r, + params->color2.g, + params->color2.b, + params->color2.a); + evas_object_text_shadow_color_set(ep->object, + params->color3.r, + params->color3.g, + params->color3.b, + params->color3.a); + } + evas_object_text_style_set(ep->object, style); } if (free_text)