Enlightenment CVS committal

Author  : rephorm
Project : e17
Module  : libs/edje

Dir     : e17/libs/edje/src/lib


Modified Files:
        Edje_Edit.h edje_calc.c edje_data.c edje_load.c edje_private.h 


Log Message:

Add a Font_Directory to Edje_File
Check fonts against directory entries.

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/Edje_Edit.h,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -3 -r1.15 -r1.16
--- Edje_Edit.h 14 Jul 2004 09:59:29 -0000      1.15
+++ Edje_Edit.h 30 Aug 2004 05:39:24 -0000      1.16
@@ -18,6 +18,8 @@
 
 typedef struct _Edje_File                            Edje_File;
 typedef struct _Edje_Data                            Edje_Data;
+typedef struct _Edje_Font_Directory                 Edje_Font_Directory;
+typedef struct _Edje_Font_Directory_Entry           Edje_Font_Directory_Entry;
 typedef struct _Edje_Image_Directory                 Edje_Image_Directory;
 typedef struct _Edje_Image_Directory_Entry           Edje_Image_Directory_Entry;
 typedef struct _Edje_Program                         Edje_Program;
@@ -144,6 +146,7 @@
 {
    char                           *path;
    
+   Edje_Font_Directory            *font_dir;
    Edje_Image_Directory           *image_dir;
    Edje_Part_Collection_Directory *collection_dir;
    Evas_List                      *data;
@@ -163,6 +166,19 @@
 
 /*----------*/
 
+struct _Edje_Font_Directory
+{
+   Evas_List *entries; /* a list of Edje_Font_Directory_Entry */
+};
+
+struct _Edje_Font_Directory_Entry
+{
+   char *entry; /* the name of the font */
+};
+
+
+/*----------*/
+
 struct _Edje_Image_Directory
 {
    Evas_List *entries; /* a list of Edje_Image_Directory_Entry */
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_calc.c,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -3 -r1.38 -r1.39
--- edje_calc.c 25 Aug 2004 12:34:00 -0000      1.38
+++ edje_calc.c 30 Aug 2004 05:39:24 -0000      1.39
@@ -508,6 +508,7 @@
        int        size;
        Evas_Coord tw, th;
        char       buf[4096];
+        Evas_List *l;
        
        text = chosen_desc->text.text;
        font = chosen_desc->text.font;
@@ -529,15 +530,24 @@
        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;
-       
-        strcpy(buf, "fonts/");
-       strcat(buf, font);
-       
-       evas_object_text_font_set(ep->object, buf, 10);
-       
-       if (evas_object_text_ascent_get(ep->object) > 0) font = buf;
-//     font = buf;
-       
+
+        /* check if the font is embedded in the .eet */
+        /* FIXME: we should cache this result */
+        if (ed->file->font_dir)
+         {
+            for (l = ed->file->font_dir->entries; l; l = l->next)
+              {
+                 Edje_Font_Directory_Entry *fnt = l->data;
+
+                 if (!strcmp(fnt->entry, font))
+                   {
+                      strcpy(buf, "fonts/");
+                      strcat(buf, font);
+                      break;
+                   }
+              }
+         }
+
        evas_object_text_font_set(ep->object, font, size);
        if ((chosen_desc->text.min_x) || (chosen_desc->text.min_y))
          {
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_data.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -3 -r1.17 -r1.18
--- edje_data.c 24 May 2004 07:58:37 -0000      1.17
+++ edje_data.c 30 Aug 2004 05:39:24 -0000      1.18
@@ -3,6 +3,8 @@
 
 Eet_Data_Descriptor *_edje_edd_edje_file = NULL;
 Eet_Data_Descriptor *_edje_edd_edje_data = NULL;
+Eet_Data_Descriptor *_edje_edd_edje_font_directory = NULL;
+Eet_Data_Descriptor *_edje_edd_edje_font_directory_entry = NULL;
 Eet_Data_Descriptor *_edje_edd_edje_image_directory = NULL;
 Eet_Data_Descriptor *_edje_edd_edje_image_directory_entry = NULL;
 Eet_Data_Descriptor *_edje_edd_edje_program = NULL;
@@ -37,6 +39,8 @@
 {
    FREED(_edje_edd_edje_file);
    FREED(_edje_edd_edje_data);
+   FREED(_edje_edd_edje_font_directory);
+   FREED(_edje_edd_edje_font_directory_entry);
    FREED(_edje_edd_edje_image_directory);
    FREED(_edje_edd_edje_image_directory_entry);
    FREED(_edje_edd_edje_program);
@@ -53,6 +57,17 @@
 void
 _edje_edd_setup(void)
 {
+   /* font directory */
+   _edje_edd_edje_font_directory_entry = 
+    NEWD("Edje_Font_Directory_Entry", 
+        Edje_Font_Directory_Entry);
+   EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_font_directory_entry, 
Edje_Font_Directory_Entry, "entry", entry, EET_T_STRING);
+   
+   _edje_edd_edje_font_directory = 
+     NEWD("Edje_Font_Directory", 
+         Edje_Font_Directory);
+   EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_font_directory, Edje_Font_Directory, 
"entries", entries, _edje_edd_edje_font_directory_entry);
+
    /* image directory */
    _edje_edd_edje_image_directory_entry = 
     NEWD("Edje_Image_Directory_Entry", 
@@ -91,6 +106,7 @@
      NEWD("Edje_File", 
          Edje_File);
    EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_file, Edje_File, "version", version, 
EET_T_INT);
+   EET_DATA_DESCRIPTOR_ADD_SUB(_edje_edd_edje_file, Edje_File, "font_dir", font_dir, 
_edje_edd_edje_font_directory);
    EET_DATA_DESCRIPTOR_ADD_SUB(_edje_edd_edje_file, Edje_File, "image_dir", 
image_dir, _edje_edd_edje_image_directory);
    EET_DATA_DESCRIPTOR_ADD_SUB(_edje_edd_edje_file, Edje_File, "collection_dir", 
collection_dir, _edje_edd_edje_part_collection_directory);   
    EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_file, Edje_File, "data", data, 
_edje_edd_edje_data);
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_load.c,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -3 -r1.45 -r1.46
--- edje_load.c 14 Jul 2004 09:59:29 -0000      1.45
+++ edje_load.c 30 Aug 2004 05:39:24 -0000      1.46
@@ -647,6 +647,20 @@
    _edje_file_hash = evas_hash_del(_edje_file_hash, edf->path, edf);
    
    if (edf->path) free(edf->path);
+   if (edf->font_dir)
+     {
+       while (edf->font_dir->entries)
+         {
+            Edje_Font_Directory_Entry *fe;
+            
+            fe = edf->font_dir->entries->data;
+            edf->font_dir->entries = 
+              evas_list_remove(edf->font_dir->entries, fe);
+            if (fe->entry) free(fe->entry);
+            free(fe);
+         }
+       free(edf->font_dir);
+     }
    if (edf->image_dir)
      {
        while (edf->image_dir->entries)
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_private.h,v
retrieving revision 1.69
retrieving revision 1.70
diff -u -3 -r1.69 -r1.70
--- edje_private.h      24 Aug 2004 10:06:32 -0000      1.69
+++ edje_private.h      30 Aug 2004 05:39:24 -0000      1.70
@@ -66,6 +66,8 @@
 
 extern Eet_Data_Descriptor *_edje_edd_edje_file;
 extern Eet_Data_Descriptor *_edje_edd_edje_data;
+extern Eet_Data_Descriptor *_edje_edd_edje_font_directory;
+extern Eet_Data_Descriptor *_edje_edd_edje_font_directory_entry;
 extern Eet_Data_Descriptor *_edje_edd_edje_image_directory;
 extern Eet_Data_Descriptor *_edje_edd_edje_image_directory_entry;
 extern Eet_Data_Descriptor *_edje_edd_edje_program;




-------------------------------------------------------
This SF.Net email is sponsored by BEA Weblogic Workshop
FREE Java Enterprise J2EE developer tools!
Get your free copy of BEA WebLogic Workshop 8.1 today.
http://ads.osdn.com/?ad_id=5047&alloc_id=10808&op=click
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to