typedef enum _Edje_Text_Effect
{
+#define EDJE_TEXT_EFFECT_MASK_BASIC 0xf
+#define EDJE_TEXT_EFFECT_BASIC_SET(x, s) \
+ do { x = ((x) & ~EDJE_TEXT_EFFECT_MASK_BASIC) | (s); } while (0)
EDJE_TEXT_EFFECT_NONE = 0,
EDJE_TEXT_EFFECT_PLAIN = 1,
EDJE_TEXT_EFFECT_OUTLINE = 2,
EDJE_TEXT_EFFECT_FAR_SHADOW = 8,
EDJE_TEXT_EFFECT_FAR_SOFT_SHADOW = 9,
EDJE_TEXT_EFFECT_GLOW = 10,
- EDJE_TEXT_EFFECT_LAST = 11
+
+ EDJE_TEXT_EFFECT_LAST = 11,
+
+#define EDJE_TEXT_EFFECT_MASK_SHADOW_DIRECTION (0x7 << 4)
+#define EDJE_TEXT_EFFECT_SHADOW_DIRECTION_SET(x, s) \
+ do { x = ((x) & ~EDJE_TEXT_EFFECT_MASK_SHADOW_DIRECTION) | (s); } while (0)
+ EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM_RIGHT = (0x0 << 4),
+ EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM = (0x1 << 4),
+ EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM_LEFT = (0x2 << 4),
+ EDJE_TEXT_EFFECT_SHADOW_DIRECTION_LEFT = (0x3 << 4),
+ EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP_LEFT = (0x4 << 4),
+ EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP = (0x5 << 4),
+ EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP_RIGHT = (0x6 << 4),
+ EDJE_TEXT_EFFECT_SHADOW_DIRECTION_RIGHT = (0x7 << 4)
} Edje_Text_Effect;
typedef enum _Edje_Action_Type
(chosen_desc->text.max_x) || (chosen_desc->text.max_y))
{
int mw, mh;
- Evas_Text_Style_Type style;
+ Evas_Text_Style_Type
+ style = EVAS_TEXT_STYLE_PLAIN,
+ shadow = EVAS_TEXT_STYLE_SHADOW_DIRECTION_BOTTOM_RIGHT;
const Evas_Text_Style_Type styles[] = {
EVAS_TEXT_STYLE_PLAIN,
EVAS_TEXT_STYLE_PLAIN,
EVAS_TEXT_STYLE_FAR_SOFT_SHADOW,
EVAS_TEXT_STYLE_GLOW
};
-
- if (ep->part->effect < EDJE_TEXT_EFFECT_LAST)
+ const Evas_Text_Style_Type shadows[] = {
+ EVAS_TEXT_STYLE_SHADOW_DIRECTION_BOTTOM_RIGHT,
+ EVAS_TEXT_STYLE_SHADOW_DIRECTION_BOTTOM,
+ EVAS_TEXT_STYLE_SHADOW_DIRECTION_BOTTOM_LEFT,
+ EVAS_TEXT_STYLE_SHADOW_DIRECTION_LEFT,
+ EVAS_TEXT_STYLE_SHADOW_DIRECTION_TOP_LEFT,
+ EVAS_TEXT_STYLE_SHADOW_DIRECTION_TOP,
+ EVAS_TEXT_STYLE_SHADOW_DIRECTION_TOP_RIGHT,
+ EVAS_TEXT_STYLE_SHADOW_DIRECTION_RIGHT
+ };
+
+ if ((ep->part->effect & EVAS_TEXT_STYLE_MASK_BASIC)
+ < EDJE_TEXT_EFFECT_LAST)
style = styles[ep->part->effect];
- else
- style = EVAS_TEXT_STYLE_PLAIN;
-
+ shadow = shadows
+ [(ep->part->effect & EDJE_TEXT_EFFECT_MASK_SHADOW_DIRECTION) >> 4];
+ EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET(style, shadow);
+
evas_object_text_style_set(ep->object, style);
evas_object_text_text_set(ep->object, text);
evas_object_geometry_get(ep->object, NULL, NULL, &tw, &th);
else evas_object_hide(ep->object);
{
Evas_Text_Style_Type style;
+ Edje_Text_Effect effect;
style = EVAS_TEXT_STYLE_PLAIN;
(params->color.g * params->color.a) / 255,
(params->color.b * params->color.a) / 255,
params->color.a);
-
- if ((ep->part->effect == EDJE_TEXT_EFFECT_NONE) ||
- (ep->part->effect == EDJE_TEXT_EFFECT_PLAIN))
- {
+ effect = ep->part->effect;
+ switch (effect & EDJE_TEXT_EFFECT_MASK_BASIC)
+ {
+ case EDJE_TEXT_EFFECT_NONE:
+ case EDJE_TEXT_EFFECT_PLAIN:
style = EVAS_TEXT_STYLE_PLAIN;
- }
- else if (ep->part->effect == EDJE_TEXT_EFFECT_OUTLINE)
- {
+ break;
+ case EDJE_TEXT_EFFECT_OUTLINE:
style = EVAS_TEXT_STYLE_OUTLINE;
evas_object_text_outline_color_set(ep->object,
(params->type.text.color2.r * params->type.text.color2.a) / 255,
(params->type.text.color2.g * params->type.text.color2.a) / 255,
(params->type.text.color2.b * params->type.text.color2.a) / 255,
params->type.text.color2.a);
- }
- else if (ep->part->effect == EDJE_TEXT_EFFECT_SOFT_OUTLINE)
- {
+ break;
+ case EDJE_TEXT_EFFECT_SOFT_OUTLINE:
style = EVAS_TEXT_STYLE_SOFT_OUTLINE;
evas_object_text_outline_color_set(ep->object,
(params->type.text.color2.r * params->type.text.color2.a) / 255,
(params->type.text.color2.g * params->type.text.color2.a) / 255,
(params->type.text.color2.b * params->type.text.color2.a) / 255,
params->type.text.color2.a);
- }
- else if (ep->part->effect == EDJE_TEXT_EFFECT_SHADOW)
- {
+ break;
+ case EDJE_TEXT_EFFECT_SHADOW:
style = EVAS_TEXT_STYLE_SHADOW;
evas_object_text_shadow_color_set(ep->object,
(params->type.text.color3.r * params->type.text.color3.a) / 255,
(params->type.text.color3.g * params->type.text.color3.a) / 255,
(params->type.text.color3.b * params->type.text.color3.a) / 255,
params->type.text.color3.a);
- }
- else if (ep->part->effect == EDJE_TEXT_EFFECT_SOFT_SHADOW)
- {
+ break;
+ case EDJE_TEXT_EFFECT_SOFT_SHADOW:
style = EVAS_TEXT_STYLE_SOFT_SHADOW;
evas_object_text_shadow_color_set(ep->object,
(params->type.text.color3.r * params->type.text.color3.a) / 255,
(params->type.text.color3.g * params->type.text.color3.a) / 255,
(params->type.text.color3.b * params->type.text.color3.a) / 255,
params->type.text.color3.a);
- }
- else if (ep->part->effect == EDJE_TEXT_EFFECT_OUTLINE_SHADOW)
- {
+ break;
+ case EDJE_TEXT_EFFECT_OUTLINE_SHADOW:
style = EVAS_TEXT_STYLE_OUTLINE_SHADOW;
evas_object_text_outline_color_set(ep->object,
(params->type.text.color2.r * params->type.text.color2.a) / 255,
(params->type.text.color3.g * params->type.text.color3.a) / 255,
(params->type.text.color3.b * params->type.text.color3.a) / 255,
params->type.text.color3.a);
- }
- else if (ep->part->effect == EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW)
- {
+ break;
+ case EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW:
style = EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW;
evas_object_text_outline_color_set(ep->object,
(params->type.text.color2.r * params->type.text.color2.a) / 255,
(params->type.text.color3.g * params->type.text.color3.a) / 255,
(params->type.text.color3.b * params->type.text.color3.a) / 255,
params->type.text.color3.a);
- }
- else if (ep->part->effect == EDJE_TEXT_EFFECT_FAR_SHADOW)
- {
+ break;
+ case EDJE_TEXT_EFFECT_FAR_SHADOW:
style = EVAS_TEXT_STYLE_FAR_SHADOW;
evas_object_text_shadow_color_set(ep->object,
(params->type.text.color3.r * params->type.text.color3.a) / 255,
(params->type.text.color3.g * params->type.text.color3.a) / 255,
(params->type.text.color3.b * params->type.text.color3.a) / 255,
params->type.text.color3.a);
- }
- else if (ep->part->effect == EDJE_TEXT_EFFECT_FAR_SOFT_SHADOW)
- {
+ break;
+ case EDJE_TEXT_EFFECT_FAR_SOFT_SHADOW:
style = EVAS_TEXT_STYLE_FAR_SOFT_SHADOW;
evas_object_text_shadow_color_set(ep->object,
(params->type.text.color3.r * params->type.text.color3.a) / 255,
(params->type.text.color3.g * params->type.text.color3.a) / 255,
(params->type.text.color3.b * params->type.text.color3.a) / 255,
params->type.text.color3.a);
- }
- else if (ep->part->effect == EDJE_TEXT_EFFECT_GLOW)
- {
+ break;
+ case EDJE_TEXT_EFFECT_GLOW:
style = EVAS_TEXT_STYLE_GLOW;
evas_object_text_glow_color_set(ep->object,
- (params->type.text.color2.r * params->type.text.color2.a) / 255,
- (params->type.text.color2.g * params->type.text.color2.a) / 255,
- (params->type.text.color2.b * params->type.text.color2.a) / 255,
- params->type.text.color2.a);
+ (params->type.text.color2.r * params->type.text.color2.a) / 255,
+ (params->type.text.color2.g * params->type.text.color2.a) / 255,
+ (params->type.text.color2.b * params->type.text.color2.a) / 255,
+ params->type.text.color2.a);
evas_object_text_glow2_color_set(ep->object,
- (params->type.text.color3.r * params->type.text.color3.a) / 255,
- (params->type.text.color3.g * params->type.text.color3.a) / 255,
- (params->type.text.color3.b * params->type.text.color3.a) / 255,
- params->type.text.color3.a);
- }
+ (params->type.text.color3.r * params->type.text.color3.a) / 255,
+ (params->type.text.color3.g * params->type.text.color3.a) / 255,
+ (params->type.text.color3.b * params->type.text.color3.a) / 255,
+ params->type.text.color3.a);
+ break;
+ default:
+ style = EVAS_TEXT_STYLE_PLAIN;
+ break;
+ }
+
+ switch (effect & EDJE_TEXT_EFFECT_MASK_SHADOW_DIRECTION)
+ {
+ case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM_RIGHT:
+ EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET
+ (style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_BOTTOM_RIGHT);
+ break;
+ case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM:
+ EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET
+ (style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_BOTTOM);
+ break;
+ case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM_LEFT:
+ EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET
+ (style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_BOTTOM_LEFT);
+ break;
+ case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_LEFT:
+ EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET
+ (style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_LEFT);
+ break;
+ case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP_LEFT:
+ EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET
+ (style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_TOP_LEFT);
+ break;
+ case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP:
+ EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET
+ (style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_TOP);
+ break;
+ case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP_RIGHT:
+ EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET
+ (style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_TOP_RIGHT);
+ break;
+ case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_RIGHT:
+ EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET
+ (style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_RIGHT);
+ break;
+ default:
+ break;
+ }
evas_object_text_style_set(ep->object, style);
}
-
- if (free_text)
- free((char *)text);
- if (font2)
- free(font2);
- if (sfont)
- free(sfont);
+
+ if (free_text) free((char *)text);
+ if (font2) free(font2);
+ if (sfont) free(sfont);
}
Evas_Font_Size