Add a Font_Directory to Edje_File
Check fonts against directory entries. SVN revision: 11438
This commit is contained in:
parent
cb27d46c1c
commit
0cccbd1d40
|
@ -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 @@ struct _Edje_File
|
|||
{
|
||||
char *path;
|
||||
|
||||
Edje_Font_Directory *font_dir;
|
||||
Edje_Image_Directory *image_dir;
|
||||
Edje_Part_Collection_Directory *collection_dir;
|
||||
Evas_List *data;
|
||||
|
@ -161,6 +164,19 @@ struct _Edje_Data
|
|||
char *value;
|
||||
};
|
||||
|
||||
/*----------*/
|
||||
|
||||
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
|
||||
|
|
|
@ -508,6 +508,7 @@ _edje_part_recalc_single(Edje *ed,
|
|||
int size;
|
||||
Evas_Coord tw, th;
|
||||
char buf[4096];
|
||||
Evas_List *l;
|
||||
|
||||
text = chosen_desc->text.text;
|
||||
font = chosen_desc->text.font;
|
||||
|
@ -530,13 +531,22 @@ _edje_part_recalc_single(Edje *ed,
|
|||
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)
|
||||
{
|
||||
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);
|
||||
|
||||
evas_object_text_font_set(ep->object, buf, 10);
|
||||
|
||||
if (evas_object_text_ascent_get(ep->object) > 0) font = buf;
|
||||
// font = buf;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
evas_object_text_font_set(ep->object, font, size);
|
||||
if ((chosen_desc->text.min_x) || (chosen_desc->text.min_y))
|
||||
|
|
|
@ -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 @@ _edje_edd_free(void)
|
|||
{
|
||||
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 @@ _edje_edd_free(void)
|
|||
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 @@ _edje_edd_setup(void)
|
|||
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);
|
||||
|
|
|
@ -647,6 +647,20 @@ _edje_file_free(Edje_File *edf)
|
|||
_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)
|
||||
|
|
|
@ -66,6 +66,8 @@ struct _Edje_Message
|
|||
|
||||
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;
|
||||
|
|
Loading…
Reference in New Issue