suport fontset appends

SVN revision: 13808
This commit is contained in:
Carsten Haitzler 2005-03-20 16:49:10 +00:00
parent 792762f2d5
commit 6938a5eb5f
5 changed files with 55 additions and 3 deletions

View File

@ -148,6 +148,8 @@ extern "C" {
/* edje_util.c */
EAPI void edje_freeze (void);
EAPI void edje_thaw (void);
EAPI void edje_fontset_append_set (char *fonts);
EAPI const char *edje_fontset_append_get (void);
/* edje_load.c */
EAPI Evas_List *edje_file_collection_list (const char *file);

View File

@ -535,7 +535,22 @@ _edje_part_recalc_single(Edje *ed,
if (inlined_font) evas_object_text_font_source_set(ep->object, ed->path);
else evas_object_text_font_source_set(ep->object, NULL);
evas_object_text_font_set(ep->object, font, size);
if ((_edje_fontset_append) && (font))
{
char *font2;
font2 = malloc(strlen(font) + 1 + strlen(_edje_fontset_append) + 1);
if (font2)
{
strcpy(font2, font);
strcat(font2, ",");
strcat(font2, _edje_fontset_append);
evas_object_text_font_set(ep->object, font2, size);
free(font2);
}
}
else
evas_object_text_font_set(ep->object, font, size);
if ((chosen_desc->text.min_x) || (chosen_desc->text.min_y))
{
int mw, mh;

View File

@ -730,6 +730,7 @@ 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;
void _edje_part_pos_set(Edje *ed, Edje_Real_Part *ep, int mode, double pos);
Edje_Part_Description *_edje_part_description_find(Edje *ed, Edje_Real_Part *rp, char *name, double val);

View File

@ -502,7 +502,7 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
Edje_Part_Description *chosen_desc)
{
char *text;
char *font;
char *font, *font2 = NULL;
int size;
Evas_Coord tw, th;
Evas_Coord ox, oy, sw, sh;
@ -529,7 +529,7 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
if (ep->text.text) text = ep->text.text;
if (ep->text.font) font = ep->text.font;
if (ep->text.size > 0) size = ep->text.size;
/* check if the font is embedded in the .eet */
/* FIXME: we should cache this result */
if (ed->file->font_dir)
@ -551,6 +551,20 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
}
}
}
if ((_edje_fontset_append) && (font))
{
char *font2;
font2 = malloc(strlen(font) + 1 + strlen(_edje_fontset_append) + 1);
if (font2)
{
strcpy(font2, font);
strcat(font2, ",");
strcat(font2, _edje_fontset_append);
font = font2;
}
}
ox = _edje_text_styles[ep->part->effect].offset.x;
oy = _edje_text_styles[ep->part->effect].offset.y;
@ -726,4 +740,6 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep,
if (free_text)
free(text);
if (font2)
free(font2);
}

View File

@ -10,6 +10,7 @@ Evas_Hash *_edje_color_class_member_hash = NULL;
Evas_Hash *_edje_text_class_hash = NULL;
Evas_Hash *_edje_text_class_member_hash = NULL;
char *_edje_fontset_append = NULL;
/************************** API Routines **************************/
@ -39,6 +40,23 @@ edje_thaw(void)
edje_object_thaw((Evas_Object *)(l->data));
}
/* FIXDOC: Expand */
void
edje_fontset_append_set(char *fonts)
{
if (_edje_fontset_append)
free(_edje_fontset_append);
_edje_fontset_append = strdup(fonts);
}
/* FIXDOC: Expand */
const char *
edje_fontset_append_get(void)
{
return _edje_fontset_append;
}
/* FIXDOC: Verify/Expand */
/** Get Edje object data
* @param obj A valid Evas_Object handle