Enlightenment CVS committal Author : raster Project : e17 Module : libs/evas
Dir : e17/libs/evas/src/lib/canvas Modified Files: evas_font_dir.c evas_object_text.c evas_object_textblock.c Log Message: and in one foul swoop i merged font loading code betwene text block and text objects... wherd! =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/evas/src/lib/canvas/evas_font_dir.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- evas_font_dir.c 8 Jan 2005 10:39:09 -0000 1.2 +++ evas_font_dir.c 31 Jan 2005 15:03:36 -0000 1.3 @@ -46,6 +46,70 @@ return NULL; } +void * +evas_font_load(Evas *evas, char *name, char *source, int size) +{ + void *font = NULL; + +#ifdef BUILD_FONT_LOADER_EET + if (source) + { + Eet_File *ef; + char *fake_name; + + fake_name = evas_file_path_join(source, name); + if (fake_name) + { + font = evas->engine.func->font_load(evas->engine.data.output, fake_name, size); + if (!font) + { + /* read original!!! */ + ef = eet_open(source, EET_FILE_MODE_READ); + if (ef) + { + void *fdata; + int fsize = 0; + + fdata = eet_read(ef, name, &fsize); + if ((fdata) && (fsize > 0)) + { + font = evas->engine.func->font_memory_load(evas->engine.data.output, fake_name, size, fdata, fsize); + free(fdata); + } + eet_close(ef); + } + } + free(fake_name); + } + } + if (!font) + { +#endif + if (evas_file_path_is_full_path((char *)name)) + font = evas->engine.func->font_load(evas->engine.data.output, (char *)name, size); + else + { + Evas_List *l; + + for (l = evas->font_path; l; l = l->next) + { + char *f_file; + + f_file = evas_font_dir_cache_find(l->data, (char *)name); + if (f_file) + { + font = evas->engine.func->font_load(evas->engine.data.output, f_file, size); + if (font) break; + } + } +#ifdef BUILD_FONT_LOADER_EET + } +#endif + } + return font; +} + + /* private stuff */ static Evas_Bool font_cache_dir_free(Evas_Hash *hash, const char *key, void *data, void *fdata) =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/evas/src/lib/canvas/evas_object_text.c,v retrieving revision 1.32 retrieving revision 1.33 diff -u -3 -r1.32 -r1.33 --- evas_object_text.c 8 Jan 2005 10:39:09 -0000 1.32 +++ evas_object_text.c 31 Jan 2005 15:03:37 -0000 1.33 @@ -1,9 +1,6 @@ #include "evas_common.h" #include "evas_private.h" #include "Evas.h" -#ifdef BUILD_FONT_LOADER_EET -#include <Eet.h> -#endif /* private magic number for text objects */ static const char o_type[] = "text"; @@ -67,7 +64,7 @@ * * FIXME: To be fixed. * -evas_font_load.c */ + */ Evas_Object * evas_object_text_add(Evas *e) { @@ -167,69 +164,7 @@ o->engine_data); o->engine_data = NULL; } -#ifdef BUILD_FONT_LOADER_EET - if (o->cur.source) - { - Eet_File *ef; - char *fake_name; - - fake_name = evas_file_path_join(o->cur.source, font); - if (fake_name) - { - o->engine_data = - obj->layer->evas->engine.func->font_load - (obj->layer->evas->engine.data.output, fake_name, - size); - if (!o->engine_data) - { - /* read original!!! */ - ef = eet_open(o->cur.source, EET_FILE_MODE_READ); - if (ef) - { - void *fdata; - int fsize = 0; - - fdata = eet_read(ef, font, &fsize); - if ((fdata) && (fsize > 0)) - { - o->engine_data = - obj->layer->evas->engine.func->font_memory_load - (obj->layer->evas->engine.data.output, - fake_name, size, fdata, fsize); - free(fdata); - } - eet_close(ef); - } - } - free(fake_name); - } - } - if (!o->engine_data) - { -#endif - if (evas_file_path_is_full_path((char *)font)) - o->engine_data = obj->layer->evas->engine.func->font_load(obj->layer->evas->engine.data.output, - (char *)font, size); - else - { - Evas_List *l; - - for (l = obj->layer->evas->font_path; l; l = l->next) - { - char *f_file; - - f_file = evas_font_dir_cache_find(l->data, (char *)font); - if (f_file) - { - o->engine_data = obj->layer->evas->engine.func->font_load(obj->layer->evas->engine.data.output, - f_file, size); - if (o->engine_data) break; - } - } -#ifdef BUILD_FONT_LOADER_EET - } -#endif - } + o->engine_data = evas_font_load(obj->layer->evas, font, o->cur.source, size); if (!same_font) { if (o->cur.font) free(o->cur.font); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/evas/src/lib/canvas/evas_object_textblock.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- evas_object_textblock.c 31 Jan 2005 09:32:31 -0000 1.12 +++ evas_object_textblock.c 31 Jan 2005 15:03:38 -0000 1.13 @@ -10,8 +10,6 @@ * * things to add: * - * * font path support - * * font sources support * * word wrap * * underline support * * double underline support @@ -162,8 +160,17 @@ } else if (!strcmp(key, "font_source")) { - if (layout->font.source) free(layout->font.source); - layout->font.source = strdup(data); + if (layout->font.source) + { + free(layout->font.source); + layout->font.source = NULL; + } + if (!((data[0] == 0) || + (!strcmp(data, "0")) || + (!strcmp(data, "NULL")) || + (!strcmp(data, "null")) || + (!strcmp(data, "(null)")))) + layout->font.source = strdup(data); } else if (!strcmp(key, "size")) { @@ -487,7 +494,7 @@ lnode = calloc(1, sizeof(Layout_Node)); evas_object_textblock_layout_copy(&layout, &(lnode->layout)); if (lnode->layout.font.name) - font = ENFN->font_load(ENDT, lnode->layout.font.name, lnode->layout.font.size); + font = evas_font_load(obj->layer->evas, lnode->layout.font.name, lnode->layout.font.source, lnode->layout.font.size); lnode->layout.font.font = font; if (font) ascent = ENFN->font_max_ascent_get(ENDT, font); if (font) descent = ENFN->font_max_descent_get(ENDT, font); ------------------------------------------------------- This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting Tool for open source databases. Create drag-&-drop reports. Save time by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc. Download a FREE copy at http://www.intelliview.com/go/osdn_nl _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs