From 6938a5eb5fb0dc6d7c9444b104911e082bafa966 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Sun, 20 Mar 2005 16:49:10 +0000 Subject: [PATCH] suport fontset appends SVN revision: 13808 --- legacy/edje/src/lib/Edje.h | 2 ++ legacy/edje/src/lib/edje_calc.c | 17 ++++++++++++++++- legacy/edje/src/lib/edje_private.h | 1 + legacy/edje/src/lib/edje_text.c | 20 ++++++++++++++++++-- legacy/edje/src/lib/edje_util.c | 18 ++++++++++++++++++ 5 files changed, 55 insertions(+), 3 deletions(-) diff --git a/legacy/edje/src/lib/Edje.h b/legacy/edje/src/lib/Edje.h index 0c677b99b0..8c42c3be66 100644 --- a/legacy/edje/src/lib/Edje.h +++ b/legacy/edje/src/lib/Edje.h @@ -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); diff --git a/legacy/edje/src/lib/edje_calc.c b/legacy/edje/src/lib/edje_calc.c index fd23cebb47..b907de454a 100644 --- a/legacy/edje/src/lib/edje_calc.c +++ b/legacy/edje/src/lib/edje_calc.c @@ -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; diff --git a/legacy/edje/src/lib/edje_private.h b/legacy/edje/src/lib/edje_private.h index 1694564ab5..bd98760899 100644 --- a/legacy/edje/src/lib/edje_private.h +++ b/legacy/edje/src/lib/edje_private.h @@ -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); diff --git a/legacy/edje/src/lib/edje_text.c b/legacy/edje/src/lib/edje_text.c index ba8f4f4822..9f428b1aec 100644 --- a/legacy/edje/src/lib/edje_text.c +++ b/legacy/edje/src/lib/edje_text.c @@ -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); } diff --git a/legacy/edje/src/lib/edje_util.c b/legacy/edje/src/lib/edje_util.c index 0573e51163..7f23a7b0a9 100644 --- a/legacy/edje/src/lib/edje_util.c +++ b/legacy/edje/src/lib/edje_util.c @@ -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