forked from enlightenment/efl
Evas text: clean up evas_text_style_pad_get a bit further.
SVN revision: 59284
This commit is contained in:
parent
7cd241ae62
commit
e607c581f0
|
@ -1399,124 +1399,124 @@ evas_string_char_len_get(const char *str)
|
||||||
void
|
void
|
||||||
evas_text_style_pad_get(Evas_Text_Style_Type style, int *l, int *r, int *t, int *b)
|
evas_text_style_pad_get(Evas_Text_Style_Type style, int *l, int *r, int *t, int *b)
|
||||||
{
|
{
|
||||||
int shad_sz = 0, shad_dst = 0, out_sz = 0;
|
|
||||||
int dx = 0, minx = 0, maxx = 0;
|
|
||||||
int dy = 0, miny = 0, maxy = 0;
|
|
||||||
int sl = 0, sr = 0, st = 0, sb = 0;
|
int sl = 0, sr = 0, st = 0, sb = 0;
|
||||||
Eina_Bool have_shadow = EINA_FALSE;
|
|
||||||
|
|
||||||
/* Don't calc anything if there's no style. */
|
/* Don't calc anything if there's no style. */
|
||||||
if (style == EVAS_TEXT_STYLE_PLAIN)
|
if (style != EVAS_TEXT_STYLE_PLAIN)
|
||||||
goto end;
|
|
||||||
|
|
||||||
switch (style & EVAS_TEXT_STYLE_MASK_BASIC)
|
|
||||||
{
|
{
|
||||||
case EVAS_TEXT_STYLE_SHADOW:
|
int shad_sz = 0, shad_dst = 0, out_sz = 0;
|
||||||
shad_dst = 1;
|
int dx = 0, minx = 0, maxx = 0;
|
||||||
have_shadow = EINA_TRUE;
|
int dy = 0, miny = 0, maxy = 0;
|
||||||
break;
|
Eina_Bool have_shadow = EINA_FALSE;
|
||||||
case EVAS_TEXT_STYLE_OUTLINE_SHADOW:
|
|
||||||
case EVAS_TEXT_STYLE_FAR_SHADOW:
|
|
||||||
shad_dst = 2;
|
|
||||||
out_sz = 1;
|
|
||||||
have_shadow = EINA_TRUE;
|
|
||||||
break;
|
|
||||||
case EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW:
|
|
||||||
shad_dst = 1;
|
|
||||||
shad_sz = 2;
|
|
||||||
out_sz = 1;
|
|
||||||
have_shadow = EINA_TRUE;
|
|
||||||
break;
|
|
||||||
case EVAS_TEXT_STYLE_FAR_SOFT_SHADOW:
|
|
||||||
shad_dst = 2;
|
|
||||||
shad_sz = 2;
|
|
||||||
have_shadow = EINA_TRUE;
|
|
||||||
break;
|
|
||||||
case EVAS_TEXT_STYLE_SOFT_SHADOW:
|
|
||||||
shad_dst = 1;
|
|
||||||
shad_sz = 2;
|
|
||||||
have_shadow = EINA_TRUE;
|
|
||||||
break;
|
|
||||||
case EVAS_TEXT_STYLE_GLOW:
|
|
||||||
case EVAS_TEXT_STYLE_SOFT_OUTLINE:
|
|
||||||
out_sz = 2;
|
|
||||||
break;
|
|
||||||
case EVAS_TEXT_STYLE_OUTLINE:
|
|
||||||
out_sz = 1;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
minx = -out_sz;
|
switch (style & EVAS_TEXT_STYLE_MASK_BASIC)
|
||||||
maxx = out_sz;
|
|
||||||
miny = -out_sz;
|
|
||||||
maxy = out_sz;
|
|
||||||
if (have_shadow)
|
|
||||||
{
|
|
||||||
int shx1, shx2, shy1, shy2;
|
|
||||||
switch (style & EVAS_TEXT_STYLE_MASK_SHADOW_DIRECTION)
|
|
||||||
{
|
{
|
||||||
case EVAS_TEXT_STYLE_SHADOW_DIRECTION_BOTTOM_RIGHT:
|
case EVAS_TEXT_STYLE_SHADOW:
|
||||||
dx = 1;
|
shad_dst = 1;
|
||||||
dy = 1;
|
have_shadow = EINA_TRUE;
|
||||||
break;
|
break;
|
||||||
case EVAS_TEXT_STYLE_SHADOW_DIRECTION_BOTTOM:
|
case EVAS_TEXT_STYLE_OUTLINE_SHADOW:
|
||||||
dx = 0;
|
case EVAS_TEXT_STYLE_FAR_SHADOW:
|
||||||
dy = 1;
|
shad_dst = 2;
|
||||||
|
out_sz = 1;
|
||||||
|
have_shadow = EINA_TRUE;
|
||||||
break;
|
break;
|
||||||
case EVAS_TEXT_STYLE_SHADOW_DIRECTION_BOTTOM_LEFT:
|
case EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW:
|
||||||
dx = -1;
|
shad_dst = 1;
|
||||||
dy = 1;
|
shad_sz = 2;
|
||||||
|
out_sz = 1;
|
||||||
|
have_shadow = EINA_TRUE;
|
||||||
break;
|
break;
|
||||||
case EVAS_TEXT_STYLE_SHADOW_DIRECTION_LEFT:
|
case EVAS_TEXT_STYLE_FAR_SOFT_SHADOW:
|
||||||
dx = -1;
|
shad_dst = 2;
|
||||||
dy = 0;
|
shad_sz = 2;
|
||||||
|
have_shadow = EINA_TRUE;
|
||||||
break;
|
break;
|
||||||
case EVAS_TEXT_STYLE_SHADOW_DIRECTION_TOP_LEFT:
|
case EVAS_TEXT_STYLE_SOFT_SHADOW:
|
||||||
dx = -1;
|
shad_dst = 1;
|
||||||
dy = -1;
|
shad_sz = 2;
|
||||||
|
have_shadow = EINA_TRUE;
|
||||||
break;
|
break;
|
||||||
case EVAS_TEXT_STYLE_SHADOW_DIRECTION_TOP:
|
case EVAS_TEXT_STYLE_GLOW:
|
||||||
dx = 0;
|
case EVAS_TEXT_STYLE_SOFT_OUTLINE:
|
||||||
dy = -1;
|
out_sz = 2;
|
||||||
break;
|
break;
|
||||||
case EVAS_TEXT_STYLE_SHADOW_DIRECTION_TOP_RIGHT:
|
case EVAS_TEXT_STYLE_OUTLINE:
|
||||||
dx = 1;
|
out_sz = 1;
|
||||||
dy = -1;
|
|
||||||
break;
|
break;
|
||||||
case EVAS_TEXT_STYLE_SHADOW_DIRECTION_RIGHT:
|
|
||||||
dx = 1;
|
|
||||||
dy = 0;
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
shx1 = dx * shad_dst;
|
|
||||||
shx1 -= shad_sz;
|
|
||||||
shx2 = dx * shad_dst;
|
|
||||||
shx2 += shad_sz;
|
|
||||||
if (shx1 < minx) minx = shx1;
|
|
||||||
if (shx2 > maxx) maxx = shx2;
|
|
||||||
|
|
||||||
shy1 = dy * shad_dst;
|
minx = -out_sz;
|
||||||
shy1 -= shad_sz;
|
maxx = out_sz;
|
||||||
shy2 = dy * shad_dst;
|
miny = -out_sz;
|
||||||
shy2 += shad_sz;
|
maxy = out_sz;
|
||||||
if (shy1 < miny) miny = shy1;
|
if (have_shadow)
|
||||||
if (shy2 > maxy) maxy = shy2;
|
{
|
||||||
|
int shx1, shx2, shy1, shy2;
|
||||||
|
switch (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;
|
||||||
|
}
|
||||||
|
shx1 = dx * shad_dst;
|
||||||
|
shx1 -= shad_sz;
|
||||||
|
shx2 = dx * shad_dst;
|
||||||
|
shx2 += shad_sz;
|
||||||
|
if (shx1 < minx) minx = shx1;
|
||||||
|
if (shx2 > maxx) maxx = shx2;
|
||||||
|
|
||||||
|
shy1 = dy * shad_dst;
|
||||||
|
shy1 -= shad_sz;
|
||||||
|
shy2 = dy * shad_dst;
|
||||||
|
shy2 += shad_sz;
|
||||||
|
if (shy1 < miny) miny = shy1;
|
||||||
|
if (shy2 > maxy) maxy = shy2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (l) sl = *l;
|
||||||
|
if (r) sr = *r;
|
||||||
|
if (t) st = *t;
|
||||||
|
if (b) sb = *b;
|
||||||
|
|
||||||
|
if (sr < maxx) sr = maxx;
|
||||||
|
if (sl < -minx) sl = -minx;
|
||||||
|
if (sb < maxy) sb = maxy;
|
||||||
|
if (st < -miny) st = -miny;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (l) sl = *l;
|
|
||||||
if (r) sr = *r;
|
|
||||||
if (t) st = *t;
|
|
||||||
if (b) sb = *b;
|
|
||||||
|
|
||||||
if (sr < maxx) sr = maxx;
|
|
||||||
if (sl < -minx) sl = -minx;
|
|
||||||
if (sb < maxy) sb = maxy;
|
|
||||||
if (st < -miny) st = -miny;
|
|
||||||
|
|
||||||
end:
|
|
||||||
if (l) *l = sl;
|
if (l) *l = sl;
|
||||||
if (r) *r = sr;
|
if (r) *r = sr;
|
||||||
if (t) *t = st;
|
if (t) *t = st;
|
||||||
|
|
Loading…
Reference in New Issue