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_File Edje_File;
|
||||||
typedef struct _Edje_Data Edje_Data;
|
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 Edje_Image_Directory;
|
||||||
typedef struct _Edje_Image_Directory_Entry Edje_Image_Directory_Entry;
|
typedef struct _Edje_Image_Directory_Entry Edje_Image_Directory_Entry;
|
||||||
typedef struct _Edje_Program Edje_Program;
|
typedef struct _Edje_Program Edje_Program;
|
||||||
|
@ -144,6 +146,7 @@ struct _Edje_File
|
||||||
{
|
{
|
||||||
char *path;
|
char *path;
|
||||||
|
|
||||||
|
Edje_Font_Directory *font_dir;
|
||||||
Edje_Image_Directory *image_dir;
|
Edje_Image_Directory *image_dir;
|
||||||
Edje_Part_Collection_Directory *collection_dir;
|
Edje_Part_Collection_Directory *collection_dir;
|
||||||
Evas_List *data;
|
Evas_List *data;
|
||||||
|
@ -161,6 +164,19 @@ struct _Edje_Data
|
||||||
char *value;
|
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
|
struct _Edje_Image_Directory
|
||||||
|
|
|
@ -508,6 +508,7 @@ _edje_part_recalc_single(Edje *ed,
|
||||||
int size;
|
int size;
|
||||||
Evas_Coord tw, th;
|
Evas_Coord tw, th;
|
||||||
char buf[4096];
|
char buf[4096];
|
||||||
|
Evas_List *l;
|
||||||
|
|
||||||
text = chosen_desc->text.text;
|
text = chosen_desc->text.text;
|
||||||
font = chosen_desc->text.font;
|
font = chosen_desc->text.font;
|
||||||
|
@ -529,15 +530,24 @@ _edje_part_recalc_single(Edje *ed,
|
||||||
if (ep->text.text) text = ep->text.text;
|
if (ep->text.text) text = ep->text.text;
|
||||||
if (ep->text.font) font = ep->text.font;
|
if (ep->text.font) font = ep->text.font;
|
||||||
if (ep->text.size > 0) size = ep->text.size;
|
if (ep->text.size > 0) size = ep->text.size;
|
||||||
|
|
||||||
strcpy(buf, "fonts/");
|
/* check if the font is embedded in the .eet */
|
||||||
strcat(buf, font);
|
/* FIXME: we should cache this result */
|
||||||
|
if (ed->file->font_dir)
|
||||||
evas_object_text_font_set(ep->object, buf, 10);
|
{
|
||||||
|
for (l = ed->file->font_dir->entries; l; l = l->next)
|
||||||
if (evas_object_text_ascent_get(ep->object) > 0) font = buf;
|
{
|
||||||
// font = buf;
|
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);
|
evas_object_text_font_set(ep->object, font, size);
|
||||||
if ((chosen_desc->text.min_x) || (chosen_desc->text.min_y))
|
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_file = NULL;
|
||||||
Eet_Data_Descriptor *_edje_edd_edje_data = 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 = NULL;
|
||||||
Eet_Data_Descriptor *_edje_edd_edje_image_directory_entry = NULL;
|
Eet_Data_Descriptor *_edje_edd_edje_image_directory_entry = NULL;
|
||||||
Eet_Data_Descriptor *_edje_edd_edje_program = 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_file);
|
||||||
FREED(_edje_edd_edje_data);
|
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);
|
||||||
FREED(_edje_edd_edje_image_directory_entry);
|
FREED(_edje_edd_edje_image_directory_entry);
|
||||||
FREED(_edje_edd_edje_program);
|
FREED(_edje_edd_edje_program);
|
||||||
|
@ -53,6 +57,17 @@ _edje_edd_free(void)
|
||||||
void
|
void
|
||||||
_edje_edd_setup(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 */
|
/* image directory */
|
||||||
_edje_edd_edje_image_directory_entry =
|
_edje_edd_edje_image_directory_entry =
|
||||||
NEWD("Edje_Image_Directory_Entry",
|
NEWD("Edje_Image_Directory_Entry",
|
||||||
|
@ -91,6 +106,7 @@ _edje_edd_setup(void)
|
||||||
NEWD("Edje_File",
|
NEWD("Edje_File",
|
||||||
Edje_File);
|
Edje_File);
|
||||||
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_file, Edje_File, "version", version, EET_T_INT);
|
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, "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_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);
|
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);
|
_edje_file_hash = evas_hash_del(_edje_file_hash, edf->path, edf);
|
||||||
|
|
||||||
if (edf->path) free(edf->path);
|
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)
|
if (edf->image_dir)
|
||||||
{
|
{
|
||||||
while (edf->image_dir->entries)
|
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_file;
|
||||||
extern Eet_Data_Descriptor *_edje_edd_edje_data;
|
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;
|
||||||
extern Eet_Data_Descriptor *_edje_edd_edje_image_directory_entry;
|
extern Eet_Data_Descriptor *_edje_edd_edje_image_directory_entry;
|
||||||
extern Eet_Data_Descriptor *_edje_edd_edje_program;
|
extern Eet_Data_Descriptor *_edje_edd_edje_program;
|
||||||
|
|
Loading…
Reference in New Issue