From 2f82204b7b21adfa02d5873d1cdea69a3bf69acf Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Mon, 3 Jul 2006 06:15:05 +0000 Subject: [PATCH] revert cedrics patch for font stuff - it breaks textblocks SVN revision: 23681 --- legacy/edje/src/lib/edje_cache.c | 45 +++++---------------- legacy/edje/src/lib/edje_calc.c | 22 +++++++--- legacy/edje/src/lib/edje_load.c | 3 +- legacy/edje/src/lib/edje_private.h | 2 - legacy/edje/src/lib/edje_text.c | 22 +++++++--- legacy/edje/src/lib/edje_textblock_styles.c | 17 ++++---- 6 files changed, 52 insertions(+), 59 deletions(-) diff --git a/legacy/edje/src/lib/edje_cache.c b/legacy/edje/src/lib/edje_cache.c index fdf1fbb300..fa83080e80 100644 --- a/legacy/edje/src/lib/edje_cache.c +++ b/legacy/edje/src/lib/edje_cache.c @@ -63,32 +63,6 @@ _edje_file_coll_open(Edje_File *edf, Eet_File *ef, const char *coll) return edc; } -static int -_edje_font_hash (Edje_File *edf) -{ - int count = 0; - - if (edf->font_dir) - { - Evas_List *l; - for (l = edf->font_dir->entries; l; l = evas_list_next (l)) - { - Edje_Font_Directory_Entry *fnt = l->data; - int length = strlen (fnt->entry) + 7; - char *tmp = alloca (length); - - snprintf (tmp, length, "fonts/%s", fnt->entry); - fnt->path = evas_stringshare_add (tmp); - evas_stringshare_del (fnt->entry); - fnt->entry = fnt->path + 6; - edf->font_hash = evas_hash_direct_add (edf->font_hash, fnt->entry, fnt); - - count++; - } - } - return count; -} - static Edje_File * _edje_file_open(const char *file, const char *coll, int *error_ret, Edje_Part_Collection **edc_ret) { @@ -129,19 +103,18 @@ _edje_file_open(const char *file, const char *coll, int *error_ret, Edje_Part_Co _edje_textblock_style_parse_and_fix(edf); - if (coll) + if (!coll) { - edc = _edje_file_coll_open(edf, ef, coll); - if (!edc) - { - *error_ret = EDJE_LOAD_ERROR_UNKNOWN_COLLECTION; - } - if (edc_ret) *edc_ret = edc; + eet_close(ef); + return edf; } - - edf->font_hash = NULL; - _edje_font_hash (edf); + edc = _edje_file_coll_open(edf, ef, coll); + if (!edc) + { + *error_ret = EDJE_LOAD_ERROR_UNKNOWN_COLLECTION; + } + if (edc_ret) *edc_ret = edc; eet_close(ef); return edf; diff --git a/legacy/edje/src/lib/edje_calc.c b/legacy/edje/src/lib/edje_calc.c index e26cab4c6e..ccab2be437 100644 --- a/legacy/edje/src/lib/edje_calc.c +++ b/legacy/edje/src/lib/edje_calc.c @@ -592,14 +592,24 @@ _edje_part_recalc_single(Edje *ed, if (!text) text = ""; /* check if the font is embedded in the .eet */ - if (ed->file->font_hash) + /* FIXME: we should cache this result */ + if (ed->file->font_dir) { - Edje_Font_Directory_Entry *fnt = evas_hash_find (ed->file->font_hash, font); - - if (fnt) + Evas_List *l; + + for (l = ed->file->font_dir->entries; l; l = l->next) { - font = fnt->path; - inlined_font = 1; + Edje_Font_Directory_Entry *fnt = l->data; + + if ((fnt->entry) && (!strcmp(fnt->entry, font))) + { + strcpy(buf, "fonts/"); + strncpy(buf + 6, font, sizeof(buf) - 7); + buf[sizeof(buf) - 1] = 0; + font = buf; + inlined_font = 1; + break; + } } } if (inlined_font) evas_object_text_font_source_set(ep->object, ed->path); diff --git a/legacy/edje/src/lib/edje_load.c b/legacy/edje/src/lib/edje_load.c index c2c6d910da..070c7ea254 100644 --- a/legacy/edje/src/lib/edje_load.c +++ b/legacy/edje/src/lib/edje_load.c @@ -612,8 +612,7 @@ _edje_file_free(Edje_File *edf) fe = edf->font_dir->entries->data; edf->font_dir->entries = evas_list_remove(edf->font_dir->entries, fe); - edf->font_hash = evas_hash_del (edf->font_hash, fe->entry, NULL); - if (fe->path) evas_stringshare_del(fe->path); + if (fe->entry) evas_stringshare_del(fe->entry); free(fe); } free(edf->font_dir); diff --git a/legacy/edje/src/lib/edje_private.h b/legacy/edje/src/lib/edje_private.h index 97df6687e3..d48a0f7365 100644 --- a/legacy/edje/src/lib/edje_private.h +++ b/legacy/edje/src/lib/edje_private.h @@ -222,7 +222,6 @@ struct _Edje_File int feature_ver; Evas_Hash *collection_hash; - Evas_Hash *font_hash; Evas_List *collection_cache; }; @@ -260,7 +259,6 @@ struct _Edje_Font_Directory struct _Edje_Font_Directory_Entry { char *entry; /* the name of the font */ - char *path; }; diff --git a/legacy/edje/src/lib/edje_text.c b/legacy/edje/src/lib/edje_text.c index 37ea3f92ee..fe28632c94 100644 --- a/legacy/edje/src/lib/edje_text.c +++ b/legacy/edje/src/lib/edje_text.c @@ -284,14 +284,24 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep, if (!font) font = ""; /* check if the font is embedded in the .eet */ - if (ed->file->font_hash) + /* FIXME: we should cache this result */ + if (ed->file->font_dir) { - Edje_Font_Directory_Entry *fnt = evas_hash_find (ed->file->font_hash, font); - - if (fnt) + Evas_List *l; + + for (l = ed->file->font_dir->entries; l; l = l->next) { - font = fnt->path; - inlined_font = 1; + Edje_Font_Directory_Entry *fnt = l->data; + + if ((fnt->entry) && (!strcmp(fnt->entry, font))) + { + strcpy(font_buf, "fonts/"); + strncpy(font_buf + 6, font, sizeof(font_buf) - 7); + font_buf[sizeof(font_buf) - 1] = 0; + font = font_buf; + inlined_font = 1; + break; + } } } diff --git a/legacy/edje/src/lib/edje_textblock_styles.c b/legacy/edje/src/lib/edje_textblock_styles.c index 1a4f1b62b5..350ace8f5d 100644 --- a/legacy/edje/src/lib/edje_textblock_styles.c +++ b/legacy/edje/src/lib/edje_textblock_styles.c @@ -8,14 +8,17 @@ static int _edje_font_is_embedded(Edje_File *edf, char *font) { - if (!edf->font_hash) return 0; - - Edje_Font_Directory_Entry *fnt = evas_hash_find (edf->font_hash, font); + Evas_List *l; - if (fnt) - return 1; - - return 0; + if (!edf->font_dir) return 0; + for (l = edf->font_dir->entries; l; l = l->next) + { + Edje_Font_Directory_Entry *fnt = l->data; + + if ((fnt->entry) && (!strcmp(fnt->entry, font))) + return 1; + } + return 1; } #if 0