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
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs