2003-07-07 00:55:18 -07:00
|
|
|
#include "edje_private.h"
|
2011-02-03 00:55:40 -08:00
|
|
|
#define _ELLIP_STR "\xE2\x80\xA6"
|
2004-10-30 08:51:55 -07:00
|
|
|
|
2007-03-30 16:39:41 -07:00
|
|
|
/* returns with and height for this part.
|
|
|
|
*
|
|
|
|
* depending on the value of the use_alternate_font_metrics flag, it will
|
|
|
|
* either use evas_object_geometry_get() or the _advance_get() functions.
|
|
|
|
*
|
|
|
|
* The latter is useful if you want to make sure that width and height
|
|
|
|
* are the same value for the same number of characters in the text.
|
|
|
|
* This usually only makes sense for monospaced fonts.
|
|
|
|
*
|
|
|
|
* In future changes to this file, you probably should use this wrapper
|
|
|
|
* function everywhere instead of calling evas_object_geometry_get()
|
|
|
|
* directly.
|
|
|
|
*/
|
|
|
|
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);
|
|
|
|
else
|
|
|
|
{
|
2013-07-01 21:27:51 -07:00
|
|
|
if (w) *w = evas_object_text_horiz_advance_get(rp->object);
|
|
|
|
if (h) *h = evas_object_text_vert_advance_get(rp->object);
|
2007-03-30 16:39:41 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2003-07-07 00:55:18 -07:00
|
|
|
void
|
|
|
|
_edje_text_init(void)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
_edje_text_part_on_add(Edje *ed, Edje_Real_Part *ep)
|
|
|
|
{
|
2003-11-03 22:15:19 -08:00
|
|
|
Edje_Part *pt = ep->part;
|
2010-07-29 05:02:36 -07:00
|
|
|
Edje_Part_Description_Text *desc;
|
|
|
|
unsigned int i;
|
2003-07-07 00:55:18 -07:00
|
|
|
|
|
|
|
if (ep->part->type != EDJE_PART_TYPE_TEXT) return;
|
2003-11-03 22:15:19 -08:00
|
|
|
|
2006-03-18 20:22:35 -08:00
|
|
|
/* if text class exists for this part, add the edje to the tc member list */
|
2010-07-29 05:02:36 -07:00
|
|
|
desc = (Edje_Part_Description_Text *) pt->default_desc;
|
|
|
|
if ((pt->default_desc) && (desc->text.text_class))
|
|
|
|
_edje_text_class_member_add(ed, desc->text.text_class);
|
2007-09-08 11:31:56 -07:00
|
|
|
|
2006-03-27 23:45:54 -08:00
|
|
|
/* If any other classes exist add them */
|
2010-08-09 10:34:03 -07:00
|
|
|
for (i = 0; i < pt->other.desc_count; ++i)
|
2010-07-29 05:02:36 -07:00
|
|
|
{
|
2013-07-01 21:27:51 -07:00
|
|
|
desc = (Edje_Part_Description_Text *) pt->other.desc[i];
|
|
|
|
if ((desc) && (desc->text.text_class))
|
|
|
|
_edje_text_class_member_add(ed, desc->text.text_class);
|
2010-07-29 05:02:36 -07:00
|
|
|
}
|
2003-07-07 00:55:18 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
2003-11-24 23:22:19 -08:00
|
|
|
_edje_text_part_on_del(Edje *ed, Edje_Part *pt)
|
2003-07-07 00:55:18 -07:00
|
|
|
{
|
2010-07-29 05:02:36 -07:00
|
|
|
Edje_Part_Description_Text *desc;
|
|
|
|
unsigned int i;
|
|
|
|
|
2011-04-08 22:48:47 -07:00
|
|
|
if (!pt) return;
|
2010-07-29 05:02:36 -07:00
|
|
|
if (pt->type != EDJE_PART_TYPE_TEXT
|
|
|
|
&& pt->type != EDJE_PART_TYPE_TEXTBLOCK)
|
2013-06-20 04:28:18 -07:00
|
|
|
return;
|
2003-11-03 22:15:19 -08:00
|
|
|
|
2010-07-29 05:02:36 -07:00
|
|
|
desc = (Edje_Part_Description_Text *) pt->default_desc;
|
|
|
|
if ((pt->default_desc) && (desc->text.text_class))
|
|
|
|
_edje_text_class_member_del(ed, desc->text.text_class);
|
2007-09-08 11:31:56 -07:00
|
|
|
|
2010-08-09 10:34:03 -07:00
|
|
|
for (i = 0; i < pt->other.desc_count; ++i)
|
2010-07-29 05:02:36 -07:00
|
|
|
{
|
2013-07-01 21:27:51 -07:00
|
|
|
desc = (Edje_Part_Description_Text *) pt->other.desc[i];
|
|
|
|
if (desc->text.text_class)
|
|
|
|
_edje_text_class_member_del(ed, desc->text.text_class);
|
2010-07-29 05:02:36 -07:00
|
|
|
}
|
2003-11-24 23:22:19 -08:00
|
|
|
}
|
|
|
|
|
2006-03-18 20:22:35 -08:00
|
|
|
static const char *
|
2004-10-30 08:51:55 -07:00
|
|
|
_edje_text_fit_x(Edje *ed, Edje_Real_Part *ep,
|
|
|
|
Edje_Calc_Params *params,
|
2006-03-18 20:22:35 -08:00
|
|
|
const char *text, const char *font, int size,
|
2012-12-12 06:07:28 -08:00
|
|
|
Evas_Coord sw, Evas_Coord sh, int *free_text)
|
2004-10-30 08:51:55 -07:00
|
|
|
{
|
2009-12-09 07:44:54 -08:00
|
|
|
FLOAT_T sc;
|
2004-10-30 08:51:55 -07:00
|
|
|
|
2009-02-02 21:07:58 -08:00
|
|
|
sc = ed->scale;
|
2009-12-09 07:44:54 -08:00
|
|
|
if (sc == ZERO) sc = _edje_scale;
|
2010-06-24 09:16:50 -07:00
|
|
|
|
2004-10-30 09:54:58 -07:00
|
|
|
*free_text = 0;
|
2008-10-01 21:01:54 -07:00
|
|
|
if (sw <= 1) return "";
|
2004-10-30 09:54:58 -07:00
|
|
|
|
2014-05-13 13:20:41 -07:00
|
|
|
if (params->type.text.ellipsis < 0)
|
2013-06-03 08:02:16 -07:00
|
|
|
return text;
|
|
|
|
|
2009-12-09 07:44:54 -08:00
|
|
|
if (ep->part->scale) evas_object_scale_set(ep->object, TO_DOUBLE(sc));
|
2004-10-30 08:51:55 -07:00
|
|
|
|
2012-12-11 02:50:51 -08:00
|
|
|
eo_do(ep->object,
|
2014-05-13 13:20:41 -07:00
|
|
|
evas_obj_text_ellipsis_set(params->type.text.ellipsis),
|
2012-12-12 06:07:28 -08:00
|
|
|
evas_obj_text_font_set(font, size),
|
2014-06-20 08:53:51 -07:00
|
|
|
evas_obj_text_set(text),
|
2012-12-12 06:07:28 -08:00
|
|
|
evas_obj_size_set(sw, sh));
|
2004-10-30 09:54:58 -07:00
|
|
|
|
2012-12-12 06:07:28 -08:00
|
|
|
return text;
|
2004-10-30 08:51:55 -07:00
|
|
|
}
|
|
|
|
|
2013-05-22 02:04:34 -07:00
|
|
|
const char *
|
2008-02-29 13:43:55 -08:00
|
|
|
_edje_text_font_get(const char *base, const char *new, char **free_later)
|
|
|
|
{
|
|
|
|
const char *base_style, *new_style, *aux;
|
2010-12-13 22:19:30 -08:00
|
|
|
size_t font_len, style_len;
|
2008-02-29 13:43:55 -08:00
|
|
|
|
|
|
|
if (base && (!new))
|
|
|
|
return base;
|
2009-10-07 03:55:48 -07:00
|
|
|
else if (!base)
|
2008-02-29 13:43:55 -08:00
|
|
|
return new;
|
|
|
|
base_style = strstr(base, ":style=");
|
|
|
|
if (!base_style)
|
|
|
|
return new;
|
|
|
|
|
|
|
|
new_style = strstr(new, ":style=");
|
|
|
|
if (new_style)
|
|
|
|
return new;
|
|
|
|
|
|
|
|
font_len = strlen(new);
|
|
|
|
aux = strchr(base_style, ',');
|
2011-01-15 19:31:05 -08:00
|
|
|
style_len = (aux) ? (size_t)(aux - base_style) : strlen(base_style);
|
2008-02-29 13:43:55 -08:00
|
|
|
|
|
|
|
*free_later = malloc(font_len + style_len + 1);
|
|
|
|
memcpy(*free_later, new, font_len);
|
|
|
|
memcpy(*free_later + font_len, base_style, style_len);
|
|
|
|
(*free_later)[font_len + style_len] = '\0';
|
|
|
|
|
|
|
|
return *free_later;
|
|
|
|
}
|
|
|
|
|
|
|
|
const char *
|
2010-07-29 05:02:36 -07:00
|
|
|
_edje_text_class_font_get(Edje *ed, Edje_Part_Description_Text *chosen_desc, int *size, char **free_later)
|
2008-02-29 13:43:55 -08:00
|
|
|
{
|
|
|
|
Edje_Text_Class *tc;
|
|
|
|
const char *text_class_name, *font;
|
|
|
|
|
2010-08-12 05:58:54 -07:00
|
|
|
font = edje_string_get(&chosen_desc->text.font);
|
2008-02-29 13:43:55 -08:00
|
|
|
*size = chosen_desc->text.size;
|
|
|
|
|
|
|
|
text_class_name = chosen_desc->text.text_class;
|
|
|
|
if ((!text_class_name) || (!text_class_name[0]))
|
|
|
|
return font;
|
|
|
|
|
|
|
|
tc = _edje_text_class_find(ed, text_class_name);
|
|
|
|
if (!tc)
|
|
|
|
return font;
|
|
|
|
|
2010-08-12 05:58:54 -07:00
|
|
|
font = _edje_text_font_get(edje_string_get(&chosen_desc->text.font), tc->font, free_later);
|
2008-02-29 13:43:55 -08:00
|
|
|
*size = _edje_text_size_calc(*size, tc);
|
|
|
|
|
|
|
|
return font;
|
|
|
|
}
|
|
|
|
|
2003-07-07 00:55:18 -07:00
|
|
|
void
|
|
|
|
_edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
|
2013-07-01 21:27:51 -07:00
|
|
|
Edje_Calc_Params *params,
|
2013-08-05 01:41:09 -07:00
|
|
|
Edje_Part_Description_Text *chosen_desc,
|
|
|
|
Eina_Bool calc_only)
|
2003-07-07 00:55:18 -07:00
|
|
|
{
|
2011-02-02 08:03:22 -08:00
|
|
|
const char *text = NULL;
|
2006-03-18 20:22:35 -08:00
|
|
|
const char *font;
|
|
|
|
char *font2 = NULL;
|
2007-09-16 22:07:35 -07:00
|
|
|
char *sfont = NULL;
|
2006-03-18 20:22:35 -08:00
|
|
|
int size;
|
2014-02-05 02:40:24 -08:00
|
|
|
const char *filter, *source_name;
|
|
|
|
Eina_List *filter_sources = NULL, *prev_sources = NULL, *li;
|
2006-03-18 20:22:35 -08:00
|
|
|
Evas_Coord tw, th;
|
|
|
|
Evas_Coord sw, sh;
|
|
|
|
int inlined_font = 0, free_text = 0;
|
2011-08-30 08:21:44 -07:00
|
|
|
Eina_Bool same_text = EINA_FALSE;
|
2009-12-09 07:44:54 -08:00
|
|
|
FLOAT_T sc;
|
2013-07-01 21:27:51 -07:00
|
|
|
|
2012-09-11 06:14:51 -07:00
|
|
|
if ((ep->type != EDJE_RP_TYPE_TEXT) ||
|
|
|
|
(!ep->typedata.text)) return;
|
2009-02-02 21:07:58 -08:00
|
|
|
sc = ed->scale;
|
|
|
|
if (sc == 0.0) sc = _edje_scale;
|
2010-08-12 05:58:54 -07:00
|
|
|
text = edje_string_get(&chosen_desc->text.text);
|
2008-02-29 13:43:55 -08:00
|
|
|
font = _edje_text_class_font_get(ed, chosen_desc, &size, &sfont);
|
2014-02-04 22:36:05 -08:00
|
|
|
filter = chosen_desc->text.filter.str;
|
2007-09-08 11:31:56 -07:00
|
|
|
|
2012-09-11 06:14:51 -07:00
|
|
|
if (ep->typedata.text->text) text = ep->typedata.text->text;
|
|
|
|
if (ep->typedata.text->font) font = ep->typedata.text->font;
|
|
|
|
if (ep->typedata.text->size > 0) size = ep->typedata.text->size;
|
2014-02-04 22:36:05 -08:00
|
|
|
if (ep->typedata.text->filter) filter = ep->typedata.text->filter;
|
2014-02-05 02:40:24 -08:00
|
|
|
if (ep->typedata.text->filter_sources != chosen_desc->text.filter_sources)
|
|
|
|
{
|
|
|
|
prev_sources = ep->typedata.text->filter_sources;
|
|
|
|
filter_sources = chosen_desc->text.filter_sources;
|
|
|
|
ep->typedata.text->filter_sources = chosen_desc->text.filter_sources;
|
|
|
|
}
|
2005-03-20 08:49:10 -08:00
|
|
|
|
2012-09-11 06:14:51 -07:00
|
|
|
if (ep->typedata.text->text_source)
|
2007-10-14 16:54:27 -07:00
|
|
|
{
|
2014-04-22 10:19:09 -07:00
|
|
|
Edje_Part_Description_Text *et;
|
|
|
|
Edje_Real_Part *rp2;
|
|
|
|
|
|
|
|
et = _edje_real_part_text_text_source_description_get(ep, &rp2);
|
|
|
|
text = edje_string_get(&(et->text.text));
|
|
|
|
if (rp2->typedata.text->text) text = rp2->typedata.text->text;
|
2007-10-14 16:54:27 -07:00
|
|
|
}
|
2012-09-11 06:14:51 -07:00
|
|
|
if (ep->typedata.text->source)
|
2007-10-14 16:54:27 -07:00
|
|
|
{
|
2014-04-22 10:19:09 -07:00
|
|
|
Edje_Part_Description_Text *et;
|
|
|
|
Edje_Real_Part *rp2;
|
|
|
|
|
|
|
|
et = _edje_real_part_text_source_description_get(ep, &rp2);
|
|
|
|
font = edje_string_get(&(et->text.font));
|
|
|
|
size = et->text.size;
|
|
|
|
if (rp2->typedata.text->font) font = rp2->typedata.text->font;
|
|
|
|
if (rp2->typedata.text->size > 0) size = rp2->typedata.text->size;
|
2007-10-14 16:54:27 -07:00
|
|
|
}
|
2008-03-24 01:22:01 -07:00
|
|
|
|
2005-11-24 00:10:22 -08:00
|
|
|
if (!text) text = "";
|
|
|
|
if (!font) font = "";
|
2007-09-08 11:31:56 -07:00
|
|
|
|
2004-08-30 01:07:00 -07:00
|
|
|
/* check if the font is embedded in the .eet */
|
2010-06-28 06:56:30 -07:00
|
|
|
if (ed->file->fonts)
|
2004-08-30 01:07:00 -07:00
|
|
|
{
|
2013-07-01 21:27:51 -07:00
|
|
|
Edje_Font_Directory_Entry *fnt = eina_hash_find(ed->file->fonts, font);
|
2007-04-04 06:25:55 -07:00
|
|
|
|
2013-07-01 21:27:51 -07:00
|
|
|
if (fnt)
|
|
|
|
{
|
2010-12-13 22:19:30 -08:00
|
|
|
size_t len = strlen(font) + sizeof("edje/fonts/") + 1;
|
2010-10-11 00:24:46 -07:00
|
|
|
font2 = alloca(len);
|
2010-10-11 00:31:12 -07:00
|
|
|
sprintf(font2, "edje/fonts/%s", font);
|
2010-10-11 00:24:46 -07:00
|
|
|
font = font2;
|
2013-07-01 21:27:51 -07:00
|
|
|
inlined_font = 1;
|
2011-08-18 03:59:34 -07:00
|
|
|
font2 = NULL;
|
2013-07-01 21:27:51 -07:00
|
|
|
}
|
2004-08-30 01:07:00 -07:00
|
|
|
}
|
2005-03-20 08:49:10 -08:00
|
|
|
|
|
|
|
if ((_edje_fontset_append) && (font))
|
|
|
|
{
|
2013-07-01 21:27:51 -07:00
|
|
|
font2 = malloc(strlen(font) + 1 + strlen(_edje_fontset_append) + 1);
|
|
|
|
if (font2)
|
|
|
|
{
|
|
|
|
strcpy(font2, font);
|
|
|
|
strcat(font2, ",");
|
|
|
|
strcat(font2, _edje_fontset_append);
|
|
|
|
font = font2;
|
|
|
|
}
|
2005-03-20 08:49:10 -08:00
|
|
|
}
|
2007-09-08 11:31:56 -07:00
|
|
|
|
2014-05-12 19:24:43 -07:00
|
|
|
sw = TO_INT(params->eval.w);
|
|
|
|
sh = TO_INT(params->eval.h);
|
2009-02-05 10:15:34 -08:00
|
|
|
|
2014-04-22 12:21:50 -07:00
|
|
|
if (params->type.text.size)
|
|
|
|
size = params->type.text.size;
|
2011-08-30 08:21:44 -07:00
|
|
|
if (!text) text = "";
|
|
|
|
|
2012-09-11 06:14:51 -07:00
|
|
|
if ((text == ep->typedata.text->cache.in_str)
|
|
|
|
|| (text && ep->typedata.text->cache.in_str && !strcmp(ep->typedata.text->cache.in_str, text)))
|
2011-08-30 08:21:44 -07:00
|
|
|
{
|
2012-09-11 06:14:51 -07:00
|
|
|
text = ep->typedata.text->cache.in_str;
|
2011-08-30 08:21:44 -07:00
|
|
|
same_text = EINA_TRUE;
|
|
|
|
}
|
2009-02-05 10:15:34 -08:00
|
|
|
|
2012-09-11 06:14:51 -07:00
|
|
|
if ((ep->typedata.text->cache.in_size == size) &&
|
|
|
|
(ep->typedata.text->cache.in_w == sw) &&
|
|
|
|
(ep->typedata.text->cache.in_h == sh) &&
|
|
|
|
(ep->typedata.text->cache.in_str) &&
|
2011-08-30 08:21:44 -07:00
|
|
|
same_text &&
|
2012-09-11 06:14:51 -07:00
|
|
|
(ep->typedata.text->cache.align_x == params->type.text.align.x) &&
|
|
|
|
(ep->typedata.text->cache.align_y == params->type.text.align.y) &&
|
2014-05-13 13:20:41 -07:00
|
|
|
(ep->typedata.text->cache.ellipsis == params->type.text.ellipsis) &&
|
2012-09-11 06:14:51 -07:00
|
|
|
(ep->typedata.text->cache.fit_x == chosen_desc->text.fit_x) &&
|
2014-03-17 03:10:22 -07:00
|
|
|
(ep->typedata.text->cache.fit_y == chosen_desc->text.fit_y) &&
|
|
|
|
(ep->typedata.text->cache.in_font == font))
|
2003-07-07 00:55:18 -07:00
|
|
|
{
|
2013-07-01 21:27:51 -07:00
|
|
|
text = ep->typedata.text->cache.out_str;
|
|
|
|
size = ep->typedata.text->cache.out_size;
|
2007-09-08 11:31:56 -07:00
|
|
|
|
2013-07-01 21:27:51 -07:00
|
|
|
goto arrange_text;
|
2003-07-07 00:55:18 -07:00
|
|
|
}
|
2011-08-30 08:21:44 -07:00
|
|
|
if (!same_text)
|
|
|
|
{
|
2012-09-11 06:14:51 -07:00
|
|
|
eina_stringshare_replace(&ep->typedata.text->cache.in_str, text);
|
2011-08-30 08:21:44 -07:00
|
|
|
}
|
2012-09-11 06:14:51 -07:00
|
|
|
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))
|
2003-07-07 00:55:18 -07:00
|
|
|
{
|
2004-08-30 01:07:00 -07:00
|
|
|
if (inlined_font) evas_object_text_font_source_set(ep->object, ed->path);
|
2013-07-01 21:27:51 -07:00
|
|
|
else evas_object_text_font_source_set(ep->object, NULL);
|
2006-03-18 20:22:35 -08:00
|
|
|
|
2013-07-01 21:27:51 -07:00
|
|
|
if (ep->part->scale) evas_object_scale_set(ep->object, TO_DOUBLE(sc));
|
2012-12-11 02:50:51 -08:00
|
|
|
eo_do(ep->object,
|
|
|
|
evas_obj_text_font_set(font, size),
|
2014-06-20 08:53:51 -07:00
|
|
|
evas_obj_text_set(text));
|
2013-07-01 21:27:51 -07:00
|
|
|
part_get_geometry(ep, &tw, &th);
|
2011-02-27 10:09:00 -08:00
|
|
|
/* Find the wanted font size */
|
2013-07-01 21:27:51 -07:00
|
|
|
if ((tw != sw) && (size > 0) && (tw != 0))
|
2011-02-27 10:09:00 -08:00
|
|
|
{
|
|
|
|
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);
|
|
|
|
|
|
|
|
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);
|
2013-07-01 21:27:51 -07:00
|
|
|
}
|
2011-02-27 10:09:00 -08:00
|
|
|
|
|
|
|
/* FIXME: This should possibly be replaced by more proper handling,
|
|
|
|
* but it's still way better than what was here before. */
|
|
|
|
if (tw > sw) size--;
|
2003-07-07 00:55:18 -07:00
|
|
|
}
|
2012-09-11 06:14:51 -07:00
|
|
|
if (chosen_desc->text.fit_y && (ep->typedata.text->cache.in_str && eina_stringshare_strlen(ep->typedata.text->cache.in_str) > 0))
|
2003-07-07 00:55:18 -07:00
|
|
|
{
|
2013-07-01 21:27:51 -07:00
|
|
|
/* if we fit in the x axis, too, size already has a somewhat
|
|
|
|
* meaningful value, so don't overwrite it with the starting
|
|
|
|
* value in that case
|
|
|
|
*/
|
|
|
|
if (!chosen_desc->text.fit_x) size = sh;
|
2005-03-20 14:16:24 -08:00
|
|
|
|
2004-08-30 01:07:00 -07:00
|
|
|
if (inlined_font) evas_object_text_font_source_set(ep->object, ed->path);
|
2013-07-01 21:27:51 -07:00
|
|
|
else evas_object_text_font_source_set(ep->object, NULL);
|
2007-09-08 11:31:56 -07:00
|
|
|
|
2013-07-01 21:27:51 -07:00
|
|
|
if (ep->part->scale) evas_object_scale_set(ep->object, TO_DOUBLE(sc));
|
2012-12-11 02:50:51 -08:00
|
|
|
eo_do(ep->object,
|
|
|
|
evas_obj_text_font_set(font, size),
|
2014-06-20 08:53:51 -07:00
|
|
|
evas_obj_text_set(text));
|
2013-07-01 21:27:51 -07:00
|
|
|
part_get_geometry(ep, &tw, &th);
|
|
|
|
|
|
|
|
/* only grow the font size if we didn't already reach the max size
|
|
|
|
* for the x axis
|
|
|
|
*/
|
|
|
|
if (!chosen_desc->text.fit_x && th < sh)
|
|
|
|
{
|
|
|
|
int dif;
|
|
|
|
|
|
|
|
dif = (th - sh) / 4;
|
|
|
|
if (dif < 1) dif = 1;
|
|
|
|
while ((th < sh) && (sw > 0))
|
|
|
|
{
|
|
|
|
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);
|
|
|
|
part_get_geometry(ep, &tw, &th);
|
|
|
|
if ((size > 0) && (th == 0)) break;
|
|
|
|
}
|
|
|
|
size -= dif;
|
|
|
|
}
|
|
|
|
else if (th > sh)
|
|
|
|
{
|
|
|
|
int current;
|
|
|
|
|
|
|
|
if (ep->part->scale) evas_object_scale_set(ep->object, TO_DOUBLE(sc));
|
|
|
|
evas_object_text_font_set(ep->object, font, 10);
|
|
|
|
part_get_geometry(ep, &tw, &th);
|
|
|
|
|
|
|
|
if (th == sh)
|
|
|
|
current = 10;
|
|
|
|
else
|
|
|
|
{
|
|
|
|
int bottom, top;
|
|
|
|
|
|
|
|
if (th < sh) bottom = 10;
|
|
|
|
else if (th > sh) bottom = 1;
|
|
|
|
else bottom = 0; /* XXX shut up GCC, th == sh is handled before! */
|
|
|
|
|
|
|
|
top = size;
|
|
|
|
/* search one that fits (binary search) */
|
|
|
|
do
|
|
|
|
{
|
|
|
|
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);
|
|
|
|
part_get_geometry(ep, &tw, &th);
|
|
|
|
|
|
|
|
if (th < sh) bottom = current + 1;
|
|
|
|
else if (th > sh) top = current - 1;
|
|
|
|
} while ((bottom < top) && (th != sh));
|
|
|
|
}
|
|
|
|
|
|
|
|
/* search the larger one that fits (linear search) */
|
|
|
|
do
|
|
|
|
{
|
|
|
|
current++;
|
|
|
|
|
|
|
|
if (ep->part->scale) evas_object_scale_set(ep->object, TO_DOUBLE(sc));
|
|
|
|
evas_object_text_font_set(ep->object, font, current);
|
|
|
|
part_get_geometry(ep, &tw, &th);
|
|
|
|
} while (th <= sh);
|
|
|
|
size = current - 1;
|
|
|
|
}
|
2003-07-07 00:55:18 -07:00
|
|
|
}
|
2004-10-30 08:51:55 -07:00
|
|
|
|
2011-02-27 10:09:03 -08:00
|
|
|
/* Make sure the size is in range */
|
|
|
|
if (size < 1)
|
2013-07-01 21:27:51 -07:00
|
|
|
size = 1;
|
2011-02-27 10:09:03 -08:00
|
|
|
else if ((size > chosen_desc->text.size_range_max) &&
|
|
|
|
(chosen_desc->text.size_range_max > 0))
|
2013-07-01 21:27:51 -07:00
|
|
|
size = chosen_desc->text.size_range_max;
|
2011-02-27 10:09:03 -08:00
|
|
|
else if (size < chosen_desc->text.size_range_min)
|
2013-07-01 21:27:51 -07:00
|
|
|
size = chosen_desc->text.size_range_min;
|
2011-02-27 10:09:03 -08:00
|
|
|
|
|
|
|
/* Handle ellipsis */
|
2011-08-20 16:47:46 -07:00
|
|
|
if (!chosen_desc->text.min_x)
|
2003-07-07 00:55:18 -07:00
|
|
|
{
|
2013-07-01 21:27:51 -07:00
|
|
|
if (inlined_font) evas_object_text_font_source_set(ep->object, ed->path);
|
|
|
|
else evas_object_text_font_source_set(ep->object, NULL);
|
2004-10-30 08:51:55 -07:00
|
|
|
|
2013-07-01 21:27:51 -07:00
|
|
|
text = _edje_text_fit_x(ed, ep, params,
|
|
|
|
text, font, size,
|
2012-12-12 06:07:28 -08:00
|
|
|
sw, sh, &free_text);
|
2003-07-07 00:55:18 -07:00
|
|
|
}
|
2014-04-22 17:18:46 -07:00
|
|
|
/* when evas ellipsis support was added in efl 1.8 and used to replace
|
|
|
|
* previous support, SOMEONE, who I shall call "cedric", borked ellipsis
|
|
|
|
* defaults. as a result, edje_cc continued using 0.0 (left-most) as its default value
|
|
|
|
* for ellipsis while evas used -1.0 (no ellipsizing).
|
|
|
|
* this was moderately okay for a time because nobody was using it or GROUP parts
|
|
|
|
* with text in them very frequently, and so nobody noticed that the mismatch was breaking
|
|
|
|
* sizing in some cases when the edje ellipsis value failed to be applied,
|
|
|
|
* which ocurred any time text.min_x was set; in this case, ellipsis would NEVER be
|
|
|
|
* correctly applied, and instead the text object would only ever get the first
|
|
|
|
* ellipsis_set(0), permanently breaking the part.
|
|
|
|
* the only way to fix this while preserving previous behavior was to bump
|
|
|
|
* the edje file minor version and then check it here to ignore "unset" ellipsis
|
|
|
|
* values from old file versions.
|
|
|
|
* the downside is that this will break old files which have text.min_x set to 0...maybe.
|
|
|
|
*
|
|
|
|
* -zmike
|
|
|
|
* 22 April 2014
|
|
|
|
*/
|
|
|
|
else if (((ed->file->version >= 3) && (ed->file->minor >= 6)) ||
|
2014-05-13 13:20:41 -07:00
|
|
|
params->type.text.ellipsis)
|
2014-04-22 16:17:13 -07:00
|
|
|
eo_do(ep->object,
|
2014-05-13 13:20:41 -07:00
|
|
|
evas_obj_text_ellipsis_set(params->type.text.ellipsis));
|
2004-10-30 08:51:55 -07:00
|
|
|
|
2012-09-11 06:14:51 -07:00
|
|
|
eina_stringshare_replace(&ep->typedata.text->cache.out_str, text);
|
|
|
|
ep->typedata.text->cache.in_w = sw;
|
|
|
|
ep->typedata.text->cache.in_h = sh;
|
2014-03-17 03:10:22 -07:00
|
|
|
ep->typedata.text->cache.in_font = font;
|
2012-09-11 06:14:51 -07:00
|
|
|
ep->typedata.text->cache.out_size = size;
|
|
|
|
ep->typedata.text->cache.align_x = params->type.text.align.x;
|
|
|
|
ep->typedata.text->cache.align_y = params->type.text.align.y;
|
2014-05-13 13:20:41 -07:00
|
|
|
ep->typedata.text->cache.ellipsis = params->type.text.ellipsis;
|
2012-09-11 06:14:51 -07:00
|
|
|
ep->typedata.text->cache.fit_x = chosen_desc->text.fit_x;
|
|
|
|
ep->typedata.text->cache.fit_y = chosen_desc->text.fit_y;
|
2013-07-01 21:27:51 -07:00
|
|
|
arrange_text:
|
2007-09-08 11:31:56 -07:00
|
|
|
|
2004-08-30 01:07:00 -07:00
|
|
|
if (inlined_font) evas_object_text_font_source_set(ep->object, ed->path);
|
|
|
|
else evas_object_text_font_source_set(ep->object, NULL);
|
2007-09-08 11:31:56 -07:00
|
|
|
|
2009-12-09 07:44:54 -08:00
|
|
|
if (ep->part->scale) evas_object_scale_set(ep->object, TO_DOUBLE(sc));
|
2012-12-11 02:50:51 -08:00
|
|
|
eo_do(ep->object,
|
|
|
|
evas_obj_text_font_set(font, size),
|
2014-06-20 08:53:51 -07:00
|
|
|
evas_obj_text_set(text));
|
2007-03-30 16:39:41 -07:00
|
|
|
part_get_geometry(ep, &tw, &th);
|
2014-02-05 02:40:24 -08:00
|
|
|
|
|
|
|
/* 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));
|
|
|
|
|
2011-01-30 02:46:39 -08:00
|
|
|
/* Handle alignment */
|
|
|
|
{
|
2012-05-16 03:37:44 -07:00
|
|
|
FLOAT_T align_x;
|
|
|
|
if (params->type.text.align.x < FROM_INT(0))
|
2011-01-30 02:46:39 -08:00
|
|
|
{
|
|
|
|
if (evas_object_text_direction_get(ep->object) ==
|
2013-07-01 21:27:51 -07:00
|
|
|
EVAS_BIDI_DIRECTION_RTL)
|
2011-01-30 02:46:39 -08:00
|
|
|
{
|
2012-05-16 03:37:44 -07:00
|
|
|
align_x = FROM_INT(1);
|
2011-01-30 02:46:39 -08:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2012-05-16 03:37:44 -07:00
|
|
|
align_x = FROM_INT(0);
|
2011-01-30 02:46:39 -08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
align_x = params->type.text.align.x;
|
|
|
|
}
|
2012-09-11 06:14:51 -07:00
|
|
|
ep->typedata.text->offset.x = TO_INT(SCALE(align_x, (sw - tw)));
|
|
|
|
ep->typedata.text->offset.y = TO_INT(SCALE(params->type.text.align.y, (sh - th)));
|
2011-01-30 02:46:39 -08:00
|
|
|
}
|
2007-09-08 11:31:56 -07:00
|
|
|
|
2013-08-05 01:41:09 -07:00
|
|
|
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);
|
2005-11-26 00:14:34 -08:00
|
|
|
|
2013-08-05 01:41:09 -07:00
|
|
|
if (params->visible) evas_object_show(ep->object);
|
|
|
|
else evas_object_hide(ep->object);
|
|
|
|
}
|
2013-07-01 08:04:27 -07:00
|
|
|
|
|
|
|
|
2003-07-07 00:55:18 -07:00
|
|
|
{
|
2013-07-01 21:27:51 -07:00
|
|
|
Evas_Text_Style_Type style;
|
2011-04-11 05:08:03 -07:00
|
|
|
Edje_Text_Effect effect;
|
2005-11-26 00:14:34 -08:00
|
|
|
|
2013-07-01 21:27:51 -07:00
|
|
|
style = EVAS_TEXT_STYLE_PLAIN;
|
2007-09-08 11:31:56 -07:00
|
|
|
|
2013-07-01 21:27:51 -07:00
|
|
|
evas_object_color_set(ep->object,
|
|
|
|
(params->color.r * params->color.a) / 255,
|
|
|
|
(params->color.g * params->color.a) / 255,
|
|
|
|
(params->color.b * params->color.a) / 255,
|
|
|
|
params->color.a);
|
2011-04-11 05:08:03 -07:00
|
|
|
effect = ep->part->effect;
|
|
|
|
switch (effect & EDJE_TEXT_EFFECT_MASK_BASIC)
|
|
|
|
{
|
|
|
|
case EDJE_TEXT_EFFECT_NONE:
|
|
|
|
case EDJE_TEXT_EFFECT_PLAIN:
|
2013-07-01 21:27:51 -07:00
|
|
|
style = EVAS_TEXT_STYLE_PLAIN;
|
|
|
|
break;
|
2011-04-11 05:08:03 -07:00
|
|
|
case EDJE_TEXT_EFFECT_OUTLINE:
|
2013-07-01 21:27:51 -07:00
|
|
|
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);
|
|
|
|
break;
|
2011-04-11 05:08:03 -07:00
|
|
|
case EDJE_TEXT_EFFECT_SOFT_OUTLINE:
|
2013-07-01 21:27:51 -07:00
|
|
|
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);
|
|
|
|
break;
|
2011-04-11 05:08:03 -07:00
|
|
|
case EDJE_TEXT_EFFECT_SHADOW:
|
2013-07-01 21:27:51 -07:00
|
|
|
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);
|
|
|
|
break;
|
2011-04-11 05:08:03 -07:00
|
|
|
case EDJE_TEXT_EFFECT_SOFT_SHADOW:
|
2013-07-01 21:27:51 -07:00
|
|
|
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);
|
|
|
|
break;
|
2011-04-11 05:08:03 -07:00
|
|
|
case EDJE_TEXT_EFFECT_OUTLINE_SHADOW:
|
2013-07-01 21:27:51 -07:00
|
|
|
style = EVAS_TEXT_STYLE_OUTLINE_SHADOW;
|
|
|
|
eo_do(ep->object,
|
|
|
|
evas_obj_text_outline_color_set((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_obj_text_shadow_color_set((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;
|
2011-04-11 05:08:03 -07:00
|
|
|
case EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW:
|
2013-07-01 21:27:51 -07:00
|
|
|
style = EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW;
|
|
|
|
eo_do(ep->object,
|
|
|
|
evas_obj_text_outline_color_set((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_obj_text_shadow_color_set((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;
|
2011-04-11 05:08:03 -07:00
|
|
|
case EDJE_TEXT_EFFECT_FAR_SHADOW:
|
2013-07-01 21:27:51 -07:00
|
|
|
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);
|
|
|
|
break;
|
2011-04-11 05:08:03 -07:00
|
|
|
case EDJE_TEXT_EFFECT_FAR_SOFT_SHADOW:
|
2013-07-01 21:27:51 -07:00
|
|
|
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);
|
|
|
|
break;
|
2011-04-11 05:08:03 -07:00
|
|
|
case EDJE_TEXT_EFFECT_GLOW:
|
2013-07-01 21:27:51 -07:00
|
|
|
style = EVAS_TEXT_STYLE_GLOW;
|
|
|
|
eo_do(ep->object,
|
|
|
|
evas_obj_text_glow_color_set((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_obj_text_glow2_color_set((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;
|
2011-04-11 05:08:03 -07:00
|
|
|
default:
|
2013-07-01 21:27:51 -07:00
|
|
|
style = EVAS_TEXT_STYLE_PLAIN;
|
|
|
|
break;
|
2011-04-11 05:08:03 -07:00
|
|
|
}
|
2013-07-01 21:27:51 -07:00
|
|
|
|
2011-04-11 05:08:03 -07:00
|
|
|
switch (effect & EDJE_TEXT_EFFECT_MASK_SHADOW_DIRECTION)
|
|
|
|
{
|
|
|
|
case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM_RIGHT:
|
2013-07-01 21:27:51 -07:00
|
|
|
EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET
|
|
|
|
(style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_BOTTOM_RIGHT);
|
|
|
|
break;
|
2011-04-11 05:08:03 -07:00
|
|
|
case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM:
|
2013-07-01 21:27:51 -07:00
|
|
|
EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET
|
|
|
|
(style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_BOTTOM);
|
|
|
|
break;
|
2011-04-11 05:08:03 -07:00
|
|
|
case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM_LEFT:
|
2013-07-01 21:27:51 -07:00
|
|
|
EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET
|
|
|
|
(style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_BOTTOM_LEFT);
|
|
|
|
break;
|
2011-04-11 05:08:03 -07:00
|
|
|
case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_LEFT:
|
2013-07-01 21:27:51 -07:00
|
|
|
EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET
|
|
|
|
(style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_LEFT);
|
|
|
|
break;
|
2011-04-11 05:08:03 -07:00
|
|
|
case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP_LEFT:
|
2013-07-01 21:27:51 -07:00
|
|
|
EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET
|
|
|
|
(style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_TOP_LEFT);
|
|
|
|
break;
|
2011-04-11 05:08:03 -07:00
|
|
|
case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP:
|
2013-07-01 21:27:51 -07:00
|
|
|
EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET
|
|
|
|
(style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_TOP);
|
|
|
|
break;
|
2011-04-11 05:08:03 -07:00
|
|
|
case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP_RIGHT:
|
2013-07-01 21:27:51 -07:00
|
|
|
EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET
|
|
|
|
(style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_TOP_RIGHT);
|
|
|
|
break;
|
2011-04-11 05:08:03 -07:00
|
|
|
case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_RIGHT:
|
2013-07-01 21:27:51 -07:00
|
|
|
EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET
|
|
|
|
(style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_RIGHT);
|
|
|
|
break;
|
2011-04-11 05:08:03 -07:00
|
|
|
default:
|
2013-07-01 21:27:51 -07:00
|
|
|
break;
|
2011-04-11 05:08:03 -07:00
|
|
|
}
|
2013-07-01 21:27:51 -07:00
|
|
|
evas_object_text_style_set(ep->object, style);
|
2003-07-07 00:55:18 -07:00
|
|
|
}
|
2013-07-01 21:27:51 -07:00
|
|
|
|
2011-04-11 05:08:03 -07:00
|
|
|
if (free_text) free((char *)text);
|
|
|
|
if (font2) free(font2);
|
|
|
|
if (sfont) free(sfont);
|
2003-07-07 00:55:18 -07:00
|
|
|
}
|
2007-05-03 16:15:09 -07:00
|
|
|
|
|
|
|
Evas_Font_Size
|
|
|
|
_edje_text_size_calc(Evas_Font_Size size, Edje_Text_Class *tc)
|
|
|
|
{
|
|
|
|
int val;
|
|
|
|
|
|
|
|
if (tc->size == 0)
|
|
|
|
{
|
2013-07-01 21:27:51 -07:00
|
|
|
val = size;
|
2007-05-03 16:15:09 -07:00
|
|
|
}
|
|
|
|
else if (tc->size > 0.0)
|
|
|
|
{
|
2013-07-01 21:27:51 -07:00
|
|
|
val = tc->size;
|
2007-05-03 16:15:09 -07:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2013-07-01 21:27:51 -07:00
|
|
|
val = (size * -tc->size) / 100;
|
2007-05-03 16:15:09 -07:00
|
|
|
}
|
|
|
|
return val;
|
|
|
|
}
|