From a46c992b02a9acf43c65051b2a7af0ecdc314c35 Mon Sep 17 00:00:00 2001 From: tasn Date: Fri, 29 Apr 2011 19:26:56 +0000 Subject: [PATCH] Evas text: Move the shadow calculations out of the loop. git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/evas@59047 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/lib/canvas/evas_object_text.c | 144 ++++++++++++++++++++------------------ 1 file changed, 74 insertions(+), 70 deletions(-) diff --git a/src/lib/canvas/evas_object_text.c b/src/lib/canvas/evas_object_text.c index e7d6d12..15e410e 100644 --- a/src/lib/canvas/evas_object_text.c +++ b/src/lib/canvas/evas_object_text.c @@ -1592,6 +1592,7 @@ evas_object_text_render(Evas_Object *obj, void *output, void *context, void *sur {0, 1, 2, 1, 0} }; int sl = 0, st = 0; + int shad_dst, shad_sz, dx, dy, haveshad; /* render object to surface with context, and offxet by x,y */ o = (Evas_Object_Text *)(obj->object_data); @@ -1666,80 +1667,83 @@ evas_object_text_render(Evas_Object *obj, void *output, void *context, void *sur obj->cur.geometry.w, \ obj->cur.geometry.h, \ it->text, &it->text_props); - EINA_INLIST_FOREACH(EINA_INLIST_GET(o->items), it) - { - int shad_dst, shad_sz, dx, dy, haveshad; - /* shadows */ - shad_dst = shad_sz = dx = dy = haveshad = 0; - switch (o->cur.style & EVAS_TEXT_STYLE_MASK_BASIC) + /* shadows */ + shad_dst = shad_sz = dx = dy = haveshad = 0; + switch (o->cur.style & EVAS_TEXT_STYLE_MASK_BASIC) + { + case EVAS_TEXT_STYLE_SHADOW: + case EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW: + shad_dst = 1; + haveshad = 1; + break; + case EVAS_TEXT_STYLE_OUTLINE_SHADOW: + case EVAS_TEXT_STYLE_FAR_SHADOW: + shad_dst = 2; + haveshad = 1; + break; + case EVAS_TEXT_STYLE_FAR_SOFT_SHADOW: + shad_dst = 2; + shad_sz = 2; + haveshad = 1; + break; + case EVAS_TEXT_STYLE_SOFT_SHADOW: + shad_dst = 1; + shad_sz = 2; + haveshad = 1; + break; + default: + break; + } + if (haveshad) + { + if (shad_dst > 0) { - case EVAS_TEXT_STYLE_SHADOW: - case EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW: - shad_dst = 1; - haveshad = 1; - break; - case EVAS_TEXT_STYLE_OUTLINE_SHADOW: - case EVAS_TEXT_STYLE_FAR_SHADOW: - shad_dst = 2; - haveshad = 1; - break; - case EVAS_TEXT_STYLE_FAR_SOFT_SHADOW: - shad_dst = 2; - shad_sz = 2; - haveshad = 1; - break; - case EVAS_TEXT_STYLE_SOFT_SHADOW: - shad_dst = 1; - shad_sz = 2; - haveshad = 1; - break; - default: - break; + switch (o->cur.style & EVAS_TEXT_STYLE_MASK_SHADOW_DIRECTION) + { + case EVAS_TEXT_STYLE_SHADOW_DIRECTION_BOTTOM_RIGHT: + dx = 1; + dy = 1; + break; + case EVAS_TEXT_STYLE_SHADOW_DIRECTION_BOTTOM: + dx = 0; + dy = 1; + break; + case EVAS_TEXT_STYLE_SHADOW_DIRECTION_BOTTOM_LEFT: + dx = -1; + dy = 1; + break; + case EVAS_TEXT_STYLE_SHADOW_DIRECTION_LEFT: + dx = -1; + dy = 0; + break; + case EVAS_TEXT_STYLE_SHADOW_DIRECTION_TOP_LEFT: + dx = -1; + dy = -1; + break; + case EVAS_TEXT_STYLE_SHADOW_DIRECTION_TOP: + dx = 0; + dy = -1; + break; + case EVAS_TEXT_STYLE_SHADOW_DIRECTION_TOP_RIGHT: + dx = 1; + dy = -1; + break; + case EVAS_TEXT_STYLE_SHADOW_DIRECTION_RIGHT: + dx = 1; + dy = 0; + default: + break; + } + dx *= shad_dst; + dy *= shad_dst; } + } + EINA_INLIST_FOREACH(EINA_INLIST_GET(o->items), it) + { + /* Shadows */ if (haveshad) { - if (shad_dst > 0) - { - switch (o->cur.style & EVAS_TEXT_STYLE_MASK_SHADOW_DIRECTION) - { - case EVAS_TEXT_STYLE_SHADOW_DIRECTION_BOTTOM_RIGHT: - dx = 1; - dy = 1; - break; - case EVAS_TEXT_STYLE_SHADOW_DIRECTION_BOTTOM: - dx = 0; - dy = 1; - break; - case EVAS_TEXT_STYLE_SHADOW_DIRECTION_BOTTOM_LEFT: - dx = -1; - dy = 1; - break; - case EVAS_TEXT_STYLE_SHADOW_DIRECTION_LEFT: - dx = -1; - dy = 0; - break; - case EVAS_TEXT_STYLE_SHADOW_DIRECTION_TOP_LEFT: - dx = -1; - dy = -1; - break; - case EVAS_TEXT_STYLE_SHADOW_DIRECTION_TOP: - dx = 0; - dy = -1; - break; - case EVAS_TEXT_STYLE_SHADOW_DIRECTION_TOP_RIGHT: - dx = 1; - dy = -1; - break; - case EVAS_TEXT_STYLE_SHADOW_DIRECTION_RIGHT: - dx = 1; - dy = 0; - default: - break; - } - dx *= shad_dst; - dy *= shad_dst; - } switch (shad_sz) { case 0: @@ -1763,7 +1767,7 @@ evas_object_text_render(Evas_Object *obj, void *output, void *context, void *sur break; } } - + /* glows */ if (o->cur.style == EVAS_TEXT_STYLE_GLOW) { -- 2.7.4