forked from enlightenment/efl
* edje: move structure from Eina_List to array now that Eet support
them. SVN revision: 49936
This commit is contained in:
parent
11f53993b0
commit
4e30cb2411
|
@ -846,7 +846,7 @@ st_externals_external(void)
|
|||
check_arg_count(1);
|
||||
|
||||
if (!edje_file->external_dir)
|
||||
edje_file->external_dir = mem_alloc(SZ(Edje_External_Directory));
|
||||
edje_file->external_dir = mem_alloc(SZ(Old_Edje_External_Directory));
|
||||
|
||||
ex = mem_alloc(SZ(External));
|
||||
ex->name = parse_str(0);
|
||||
|
@ -934,7 +934,7 @@ st_images_image(void)
|
|||
int v;
|
||||
|
||||
if (!edje_file->image_dir)
|
||||
edje_file->image_dir = mem_alloc(SZ(Edje_Image_Directory));
|
||||
edje_file->image_dir = mem_alloc(SZ(Old_Edje_Image_Directory));
|
||||
img = mem_alloc(SZ(Edje_Image_Directory_Entry));
|
||||
img->entry = parse_str(0);
|
||||
{
|
||||
|
@ -945,7 +945,7 @@ st_images_image(void)
|
|||
{
|
||||
if (!strcmp(limg->entry, img->entry))
|
||||
{
|
||||
free(img->entry);
|
||||
free((char*) img->entry);
|
||||
free(img);
|
||||
return;
|
||||
}
|
||||
|
@ -1027,7 +1027,7 @@ ob_images_set(void)
|
|||
Edje_Image_Directory_Set *set;
|
||||
|
||||
if (!edje_file->image_dir)
|
||||
edje_file->image_dir = mem_alloc(SZ(Edje_Image_Directory));
|
||||
edje_file->image_dir = mem_alloc(SZ(Old_Edje_Image_Directory));
|
||||
set = mem_alloc(SZ(Edje_Image_Directory_Set));
|
||||
set->id = eina_list_count(edje_file->image_dir->sets);
|
||||
edje_file->image_dir->sets = eina_list_append(edje_file->image_dir->sets, set);
|
||||
|
@ -1163,7 +1163,7 @@ st_fonts_font(void)
|
|||
check_arg_count(2);
|
||||
|
||||
if (!edje_file->font_dir)
|
||||
edje_file->font_dir = mem_alloc(SZ(Edje_Font_Directory));
|
||||
edje_file->font_dir = mem_alloc(SZ(Old_Edje_Font_Directory));
|
||||
|
||||
fn = mem_alloc(SZ(Font));
|
||||
fn->file = parse_str(0);
|
||||
|
|
|
@ -27,7 +27,7 @@ char *progname = NULL;
|
|||
char *file_in = NULL;
|
||||
char *file_out = NULL;
|
||||
|
||||
Edje_File *edje_file = NULL;
|
||||
Old_Edje_File *edje_file = NULL;
|
||||
SrcFile_List *srcfiles = NULL;
|
||||
Font_List *fontlist = NULL;
|
||||
|
||||
|
|
|
@ -1549,7 +1549,7 @@ _edje_image_find(Evas_Object *obj, Edje *ed, Edje_Real_Part_Set **eps, Edje_Part
|
|||
}
|
||||
|
||||
if (!set)
|
||||
set = eina_list_nth(ed->file->image_dir->sets, id);
|
||||
set = ed->file->image_dir->sets + id;
|
||||
|
||||
EINA_LIST_FOREACH(set->entries, l, entry)
|
||||
{
|
||||
|
@ -1607,7 +1607,7 @@ _edje_image_recalc_apply(Edje *ed, Edje_Real_Part *ep, Edje_Calc_Params *p3, Edj
|
|||
Edje_Image_Directory_Entry *ie;
|
||||
|
||||
if (!ed->file->image_dir) ie = NULL;
|
||||
else ie = eina_list_nth(ed->file->image_dir->entries, (-image_id) - 1);
|
||||
else ie = ed->file->image_dir->entries + (-image_id) - 1;
|
||||
if ((ie) &&
|
||||
(ie->source_type == EDJE_IMAGE_SOURCE_TYPE_EXTERNAL) &&
|
||||
(ie->entry))
|
||||
|
|
|
@ -59,6 +59,93 @@ _edje_collection_string_free(void *data)
|
|||
free(ce);
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_edje_file_convert_external(Edje_File *edf, Old_Edje_File *oedf)
|
||||
{
|
||||
Edje_External_Directory_Entry *ede;
|
||||
unsigned int max;
|
||||
unsigned int i = 0;
|
||||
|
||||
edf->external_dir = calloc(1, sizeof (Edje_External_Directory));
|
||||
if (!edf->external_dir) return EINA_FALSE;
|
||||
if (!oedf->external_dir) return EINA_TRUE;
|
||||
|
||||
max = eina_list_count(oedf->external_dir->entries);
|
||||
edf->external_dir->entries = calloc(1, sizeof (Edje_External_Directory_Entry) * max);
|
||||
edf->external_dir->entries_count = max;
|
||||
|
||||
if (!edf->external_dir->entries && max)
|
||||
return EINA_FALSE;
|
||||
|
||||
EINA_LIST_FREE(oedf->external_dir->entries, ede)
|
||||
{
|
||||
edf->external_dir->entries[i++].entry = ede->entry;
|
||||
free(ede);
|
||||
}
|
||||
|
||||
free(oedf->external_dir);
|
||||
oedf->external_dir = NULL;
|
||||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_edje_file_convert_images(Edje_File *edf, Old_Edje_File *oedf)
|
||||
{
|
||||
Edje_Image_Directory_Entry *de;
|
||||
Edje_Image_Directory_Set *ds;
|
||||
Eina_List *l;
|
||||
int max;
|
||||
|
||||
edf->image_dir = malloc(sizeof (Edje_Image_Directory));
|
||||
if (!edf->image_dir) return EINA_FALSE;
|
||||
if (!oedf->image_dir) return EINA_TRUE;
|
||||
|
||||
max = -1;
|
||||
EINA_LIST_FOREACH(oedf->image_dir->entries, l, de)
|
||||
if (max < de->id)
|
||||
max = de->id;
|
||||
|
||||
edf->image_dir->entries = calloc(1, sizeof (Edje_Image_Directory_Entry) * (max + 1));
|
||||
edf->image_dir->entries_count = max + 1;
|
||||
|
||||
if (!edf->image_dir->entries && edf->image_dir->entries_count)
|
||||
return EINA_FALSE;
|
||||
|
||||
EINA_LIST_FREE(oedf->image_dir->entries, de)
|
||||
{
|
||||
memcpy(edf->image_dir->entries + de->id,
|
||||
de,
|
||||
sizeof (Edje_Image_Directory_Entry));
|
||||
free(de);
|
||||
}
|
||||
|
||||
max = -1;
|
||||
EINA_LIST_FOREACH(oedf->image_dir->sets, l, ds)
|
||||
if (max < ds->id)
|
||||
max = ds->id;
|
||||
|
||||
edf->image_dir->sets = calloc(1, sizeof (Edje_Image_Directory_Set) * (max + 1));
|
||||
edf->image_dir->sets_count = max + 1;
|
||||
|
||||
if (!edf->image_dir->sets && edf->image_dir->sets_count)
|
||||
{
|
||||
free(edf->image_dir->entries);
|
||||
edf->image_dir->entries = NULL;
|
||||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
EINA_LIST_FREE(oedf->image_dir->sets, ds)
|
||||
{
|
||||
memcpy(edf->image_dir->sets + ds->id,
|
||||
ds,
|
||||
sizeof (Edje_Image_Directory_Set));
|
||||
free(ds);
|
||||
}
|
||||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
Edje_File *
|
||||
_edje_file_convert(Eet_File *file, Old_Edje_File *oedf)
|
||||
{
|
||||
|
@ -68,7 +155,7 @@ _edje_file_convert(Eet_File *file, Old_Edje_File *oedf)
|
|||
Eina_List *l;
|
||||
Edje_Data *ed;
|
||||
|
||||
edf = malloc(sizeof (Edje_File));
|
||||
edf = calloc(1, sizeof (Edje_File));
|
||||
if (!edf) return NULL;
|
||||
|
||||
edf->free_strings = eet_dictionary_get(file) ? 0 : 1;
|
||||
|
@ -86,6 +173,9 @@ _edje_file_convert(Eet_File *file, Old_Edje_File *oedf)
|
|||
edf->data = eina_hash_string_small_new(NULL);
|
||||
}
|
||||
|
||||
if (!edf->fonts || !edf->collection || !edf->data)
|
||||
goto on_error;
|
||||
|
||||
EINA_LIST_FREE(oedf->data, ed)
|
||||
{
|
||||
eina_hash_direct_add(edf->data, ed->key, ed->value);
|
||||
|
@ -114,9 +204,13 @@ _edje_file_convert(Eet_File *file, Old_Edje_File *oedf)
|
|||
eina_hash_direct_add(edf->fonts, fnt->entry, fnt);
|
||||
}
|
||||
|
||||
if (!_edje_file_convert_images(edf, oedf))
|
||||
goto on_error;
|
||||
|
||||
if (!_edje_file_convert_external(edf, oedf))
|
||||
goto on_error;
|
||||
|
||||
edf->oef = oedf;
|
||||
edf->external_dir = oedf->external_dir;
|
||||
edf->image_dir = oedf->image_dir;
|
||||
edf->spectrum_dir = oedf->spectrum_dir;
|
||||
edf->styles = oedf->styles;
|
||||
edf->color_classes = oedf->color_classes;
|
||||
|
@ -133,6 +227,15 @@ _edje_file_convert(Eet_File *file, Old_Edje_File *oedf)
|
|||
edf->collection_patterns = NULL;
|
||||
|
||||
return edf;
|
||||
|
||||
on_error:
|
||||
eina_hash_free(edf->fonts);
|
||||
eina_hash_free(edf->collection);
|
||||
eina_hash_free(edf->data);
|
||||
free(edf->image_dir);
|
||||
free(edf->external_dir);
|
||||
free(edf);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Edje_Part_Collection *
|
||||
|
|
|
@ -1,16 +1,35 @@
|
|||
#ifndef EDJE_CONVERT_H__
|
||||
# define EDJE_CONVERT_H__
|
||||
|
||||
typedef struct _Edje_Part_Collection Old_Edje_Part_Collection;
|
||||
typedef struct _Edje_Part_Collection Old_Edje_Part_Collection;
|
||||
typedef struct _Old_Edje_Image_Directory Old_Edje_Image_Directory;
|
||||
typedef struct _Old_Edje_Font_Directory Old_Edje_Font_Directory;
|
||||
typedef struct _Old_Edje_External_Directory Old_Edje_External_Directory;
|
||||
|
||||
struct _Old_Edje_Font_Directory
|
||||
{
|
||||
Eina_List *entries; /* a list of Edje_Font_Directory_Entry */
|
||||
};
|
||||
|
||||
struct _Old_Edje_Image_Directory
|
||||
{
|
||||
Eina_List *entries; /* a list of Edje_Image_Directory_Entry */
|
||||
Eina_List *sets; /* a list of Edje_Image_Directory_Set */
|
||||
};
|
||||
|
||||
struct _Old_Edje_External_Directory
|
||||
{
|
||||
Eina_List *entries; /* a list of Edje_External_Directory_Entry */
|
||||
};
|
||||
|
||||
struct _Old_Edje_File
|
||||
{
|
||||
const char *path;
|
||||
time_t mtime;
|
||||
|
||||
Edje_External_Directory *external_dir;
|
||||
Edje_Font_Directory *font_dir;
|
||||
Edje_Image_Directory *image_dir;
|
||||
Old_Edje_External_Directory *external_dir;
|
||||
Old_Edje_Font_Directory *font_dir;
|
||||
Old_Edje_Image_Directory *image_dir;
|
||||
Edje_Spectrum_Directory *spectrum_dir;
|
||||
Edje_Part_Collection_Directory *collection_dir;
|
||||
Eina_List *data;
|
||||
|
|
|
@ -82,7 +82,8 @@ _edje_edd_init(void)
|
|||
eet_data_descriptor_file_new(&eddc);
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_external_directory_entry, Edje_External_Directory_Entry, "entry", entry, EET_T_STRING);
|
||||
|
||||
EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_External_Directory);
|
||||
eet_eina_file_data_descriptor_class_set(&eddc, "Edje_External_Directory",
|
||||
sizeof (Old_Edje_External_Directory));
|
||||
_edje_edd_edje_external_directory =
|
||||
eet_data_descriptor_file_new(&eddc);
|
||||
EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_external_directory, Edje_External_Directory, "entries", entries, _edje_edd_edje_external_directory_entry);
|
||||
|
@ -94,10 +95,11 @@ _edje_edd_init(void)
|
|||
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_font_directory_entry, Edje_Font_Directory_Entry, "entry", entry, EET_T_STRING);
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_font_directory_entry, Edje_Font_Directory_Entry, "file", file, EET_T_STRING);
|
||||
|
||||
EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Font_Directory);
|
||||
eet_eina_file_data_descriptor_class_set(&eddc, "Edje_Font_Directory",
|
||||
sizeof (Old_Edje_Font_Directory));
|
||||
_edje_edd_edje_font_directory =
|
||||
eet_data_descriptor_file_new(&eddc);
|
||||
EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_font_directory, Edje_Font_Directory, "entries", entries, _edje_edd_edje_font_directory_entry);
|
||||
EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_font_directory, Old_Edje_Font_Directory, "entries", entries, _edje_edd_edje_font_directory_entry);
|
||||
|
||||
/* image directory */
|
||||
EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Image_Directory_Entry);
|
||||
|
@ -125,11 +127,12 @@ _edje_edd_init(void)
|
|||
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_image_directory_set, Edje_Image_Directory_Set, "id", id, EET_T_INT);
|
||||
EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_image_directory_set, Edje_Image_Directory_Set, "entries", entries, _edje_edd_edje_image_directory_set_entry);
|
||||
|
||||
EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Image_Directory);
|
||||
eet_eina_file_data_descriptor_class_set(&eddc, "Edje_Image_Directory",
|
||||
sizeof (Old_Edje_Image_Directory));
|
||||
_edje_edd_edje_image_directory =
|
||||
eet_data_descriptor_file_new(&eddc);
|
||||
EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_image_directory, Edje_Image_Directory, "entries", entries, _edje_edd_edje_image_directory_entry);
|
||||
EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_image_directory, Edje_Image_Directory, "sets", sets, _edje_edd_edje_image_directory_set);
|
||||
EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_image_directory, Old_Edje_Image_Directory, "entries", entries, _edje_edd_edje_image_directory_entry);
|
||||
EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_image_directory, Old_Edje_Image_Directory, "sets", sets, _edje_edd_edje_image_directory_set);
|
||||
|
||||
/* spectrum directory */
|
||||
EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Spectrum_Color);
|
||||
|
@ -203,7 +206,7 @@ _edje_edd_init(void)
|
|||
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_color_class, Edje_Color_Class, "a3", a3, EET_T_UCHAR);
|
||||
|
||||
/* the main file directory */
|
||||
EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_File);
|
||||
eet_eina_file_data_descriptor_class_set(&eddc, "Edje_File", sizeof (Old_Edje_File));
|
||||
_edje_edd_edje_file =
|
||||
eet_data_descriptor_file_new(&eddc);
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_file, Old_Edje_File, "compiler", compiler, EET_T_STRING);
|
||||
|
|
|
@ -207,8 +207,7 @@ _edje_part_description_find_byname(Edje_Edit *eed, const char *part, const char
|
|||
static int
|
||||
_edje_image_id_find(Evas_Object *obj, const char *image_name)
|
||||
{
|
||||
Edje_Image_Directory_Entry *i;
|
||||
Eina_List *l;
|
||||
unsigned int i;
|
||||
|
||||
GET_ED_OR_RETURN(-1);
|
||||
|
||||
|
@ -217,14 +216,10 @@ _edje_image_id_find(Evas_Object *obj, const char *image_name)
|
|||
|
||||
//printf("SEARCH IMAGE %s\n", image_name);
|
||||
|
||||
EINA_LIST_FOREACH(ed->file->image_dir->entries, l, i)
|
||||
{
|
||||
if (strcmp(image_name, i->entry) == 0)
|
||||
{
|
||||
//printf(" Found id: %d \n", i->id);
|
||||
return i->id;
|
||||
}
|
||||
}
|
||||
for (i = 0; i < ed->file->image_dir->entries_count; ++i)
|
||||
if (ed->file->image_dir->entries[i].entry
|
||||
&& !strcmp(image_name, ed->file->image_dir->entries[i].entry))
|
||||
return i;
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
@ -232,21 +227,17 @@ _edje_image_id_find(Evas_Object *obj, const char *image_name)
|
|||
static const char *
|
||||
_edje_image_name_find(Evas_Object *obj, int image_id)
|
||||
{
|
||||
Edje_Image_Directory_Entry *i;
|
||||
Eina_List *l;
|
||||
|
||||
GET_ED_OR_RETURN(NULL);
|
||||
|
||||
if (!ed->file) return NULL;
|
||||
if (!ed->file->image_dir) return NULL;
|
||||
|
||||
/* Special case for external image */
|
||||
if (image_id < 0) image_id = -image_id - 1;
|
||||
|
||||
//printf("SEARCH IMAGE ID %d\n", image_id);
|
||||
|
||||
EINA_LIST_FOREACH(ed->file->image_dir->entries, l, i)
|
||||
if (image_id == i->id)
|
||||
return i->entry;
|
||||
|
||||
return NULL;
|
||||
if ((unsigned int) image_id >= ed->file->image_dir->entries_count) return NULL;
|
||||
return ed->file->image_dir->entries[image_id].entry;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -757,15 +748,15 @@ _edje_edit_style_tag_get(Edje *ed, const char *style, const char *name)
|
|||
static Edje_External_Directory_Entry *
|
||||
_edje_edit_external_get(Edje *ed, const char *name)
|
||||
{
|
||||
Eina_List *l;
|
||||
Edje_External_Directory_Entry *e;
|
||||
unsigned int i;
|
||||
|
||||
if (!ed || !ed->file || !ed->file->external_dir || !name)
|
||||
return NULL;
|
||||
|
||||
EINA_LIST_FOREACH(ed->file->external_dir->entries, l, e)
|
||||
if (e->entry && !strcmp(e->entry, name))
|
||||
return e;
|
||||
for (i = 0; i < ed->file->external_dir->entries_count; ++i)
|
||||
if (ed->file->external_dir->entries[i].entry
|
||||
&& !strcmp(ed->file->external_dir->entries[i].entry, name))
|
||||
return ed->file->external_dir->entries + i;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
@ -1752,16 +1743,16 @@ EAPI Eina_List *
|
|||
edje_edit_externals_list_get(Evas_Object *obj)
|
||||
{
|
||||
Eina_List *externals = NULL;
|
||||
Eina_List *l;
|
||||
Edje_External_Directory_Entry *e;
|
||||
unsigned int i;
|
||||
|
||||
GET_ED_OR_RETURN(NULL);
|
||||
|
||||
if (!ed->file || !ed->file->external_dir)
|
||||
return NULL;
|
||||
//printf("GET STYLES LIST %d\n", eina_list_count(ed->file->styles));
|
||||
EINA_LIST_FOREACH(ed->file->external_dir->entries, l, e)
|
||||
externals = eina_list_append(externals, eina_stringshare_add(e->entry));
|
||||
for (i = 0; i < ed->file->external_dir->entries_count; ++i)
|
||||
externals = eina_list_append(externals,
|
||||
eina_stringshare_add(ed->file->external_dir->entries[i].entry));
|
||||
|
||||
return externals;
|
||||
}
|
||||
|
@ -1770,19 +1761,41 @@ EAPI Eina_Bool
|
|||
edje_edit_external_add(Evas_Object *obj, const char *external)
|
||||
{
|
||||
Edje_External_Directory_Entry *e;
|
||||
unsigned int freeid;
|
||||
unsigned int i;
|
||||
|
||||
GET_ED_OR_RETURN(EINA_FALSE);
|
||||
|
||||
e = _edje_edit_external_get(ed, external);
|
||||
if (e) return EINA_FALSE;
|
||||
|
||||
e = _alloc(sizeof(Edje_External_Directory_Entry));
|
||||
if (!e) return EINA_FALSE;
|
||||
e->entry = (char*)eina_stringshare_add(external);
|
||||
|
||||
if (!ed->file->external_dir)
|
||||
ed->file->external_dir = _alloc(sizeof(Edje_External_Directory));
|
||||
ed->file->external_dir->entries = \
|
||||
eina_list_append(ed->file->external_dir->entries, e);
|
||||
|
||||
for (i = 0; i < ed->file->external_dir->entries_count; ++i)
|
||||
if (!ed->file->external_dir->entries[i].entry)
|
||||
break ;
|
||||
|
||||
if (i == ed->file->external_dir->entries_count)
|
||||
{
|
||||
Edje_External_Directory_Entry *tmp;
|
||||
unsigned int max;
|
||||
|
||||
max = ed->file->external_dir->entries_count + 1;
|
||||
tmp = realloc(ed->file->external_dir->entries,
|
||||
sizeof (Edje_External_Directory_Entry) * max);
|
||||
|
||||
if (!tmp) return EINA_FALSE;
|
||||
|
||||
ed->file->external_dir->entries = tmp;
|
||||
freeid = ed->file->external_dir->entries_count;
|
||||
ed->file->external_dir->entries_count = max;
|
||||
}
|
||||
else
|
||||
freeid = i;
|
||||
|
||||
ed->file->external_dir->entries[freeid].entry = (char*)eina_stringshare_add(external);
|
||||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
|
@ -1796,16 +1809,8 @@ edje_edit_external_del(Evas_Object *obj, const char *external)
|
|||
e = _edje_edit_external_get(ed, external);
|
||||
if (!e) return EINA_FALSE;
|
||||
|
||||
ed->file->external_dir->entries = \
|
||||
eina_list_remove(ed->file->external_dir->entries, e);
|
||||
if (!ed->file->external_dir->entries)
|
||||
{
|
||||
free(ed->file->external_dir);
|
||||
ed->file->external_dir = NULL;
|
||||
}
|
||||
|
||||
_edje_if_string_free(ed, e->entry);
|
||||
free(e);
|
||||
e->entry = NULL;
|
||||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
@ -4416,9 +4421,8 @@ edje_edit_part_effect_set(Evas_Object *obj, const char *part, Edje_Text_Effect e
|
|||
EAPI Eina_List *
|
||||
edje_edit_images_list_get(Evas_Object *obj)
|
||||
{
|
||||
Edje_Image_Directory_Entry *i;
|
||||
Eina_List *images = NULL;
|
||||
Eina_List *l;
|
||||
unsigned int i;
|
||||
|
||||
GET_ED_OR_RETURN(NULL);
|
||||
|
||||
|
@ -4426,13 +4430,9 @@ edje_edit_images_list_get(Evas_Object *obj)
|
|||
if (!ed->file->image_dir) return NULL;
|
||||
|
||||
//printf("GET IMAGES LIST for %s\n", ed->file->path);
|
||||
|
||||
EINA_LIST_FOREACH(ed->file->image_dir->entries, l, i)
|
||||
{
|
||||
images = eina_list_append(images, eina_stringshare_add(i->entry));
|
||||
//printf(" Image: %s (type: %d param: %d id: %d) \n",
|
||||
// i->entry, i->source_type, i->source_param, i->id);
|
||||
}
|
||||
for (i = 0; i < ed->file->image_dir->entries_count; ++i)
|
||||
images = eina_list_append(images,
|
||||
eina_stringshare_add(ed->file->image_dir->entries[i].entry));
|
||||
|
||||
return images;
|
||||
}
|
||||
|
@ -4440,9 +4440,9 @@ edje_edit_images_list_get(Evas_Object *obj)
|
|||
EAPI Eina_Bool
|
||||
edje_edit_image_add(Evas_Object *obj, const char* path)
|
||||
{
|
||||
Eina_List *l;
|
||||
Edje_Image_Directory_Entry *de;
|
||||
int free_id = 0;
|
||||
unsigned int i;
|
||||
int free_id = -1;
|
||||
char *name;
|
||||
|
||||
GET_ED_OR_RETURN(EINA_FALSE);
|
||||
|
@ -4463,33 +4463,44 @@ edje_edit_image_add(Evas_Object *obj, const char* path)
|
|||
else name = (char *)path;
|
||||
|
||||
/* Loop trough image directory to find if image exist */
|
||||
EINA_LIST_FOREACH(ed->file->image_dir->entries, l, de)
|
||||
for (i = 0; i < ed->file->image_dir->entries_count; ++i)
|
||||
{
|
||||
if (!strcmp(name, de->entry))
|
||||
de = ed->file->image_dir->entries + i;
|
||||
|
||||
if (!de->entry)
|
||||
free_id = i;
|
||||
else if (!strcmp(name, de->entry))
|
||||
return EINA_FALSE;
|
||||
if (de->id >= free_id)
|
||||
free_id = de->id + 1; /*TODO search for free (hole) id*/
|
||||
}
|
||||
|
||||
/* Create Image Entry */
|
||||
de = _alloc(sizeof(Edje_Image_Directory_Entry));
|
||||
if (!de) return EINA_FALSE;
|
||||
de->entry = strdup(name);
|
||||
if (free_id == -1)
|
||||
{
|
||||
Edje_Image_Directory_Entry *tmp;
|
||||
unsigned int count;
|
||||
|
||||
count = ed->file->image_dir->entries_count + 1;
|
||||
|
||||
tmp = realloc(ed->file->image_dir->entries,
|
||||
sizeof (Edje_Image_Directory_Entry) * count);
|
||||
if (!tmp) return EINA_FALSE;
|
||||
|
||||
ed->file->image_dir->entries = tmp;
|
||||
free_id = ed->file->image_dir->entries_count;
|
||||
ed->file->image_dir->entries_count = count;
|
||||
}
|
||||
|
||||
/* Set Image Entry */
|
||||
de = ed->file->image_dir->entries + free_id;
|
||||
de->entry = eina_stringshare_add(name);
|
||||
de->id = free_id;
|
||||
de->source_type = 1;
|
||||
de->source_param = 1;
|
||||
|
||||
/* Add image to Image Directory */
|
||||
ed->file->image_dir->entries =
|
||||
eina_list_append(ed->file->image_dir->entries, de);
|
||||
|
||||
/* Import image */
|
||||
if (!_edje_import_image_file(ed, path, free_id))
|
||||
{
|
||||
ed->file->image_dir->entries =
|
||||
eina_list_remove(ed->file->image_dir->entries, de);
|
||||
free(de->entry);
|
||||
free(de);
|
||||
eina_stringshare_del(de->entry);
|
||||
de->entry = NULL;
|
||||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
|
@ -4499,8 +4510,8 @@ edje_edit_image_add(Evas_Object *obj, const char* path)
|
|||
EAPI Eina_Bool
|
||||
edje_edit_image_del(Evas_Object *obj, const char* name)
|
||||
{
|
||||
Eina_List *l;
|
||||
Edje_Image_Directory_Entry *de;
|
||||
unsigned int i;
|
||||
|
||||
GET_ED_OR_RETURN(EINA_FALSE);
|
||||
|
||||
|
@ -4512,18 +4523,16 @@ edje_edit_image_del(Evas_Object *obj, const char* name)
|
|||
if (!ed->file->image_dir)
|
||||
return EINA_TRUE;
|
||||
|
||||
EINA_LIST_FOREACH(ed->file->image_dir->entries, l, de)
|
||||
for (i = 0; i < ed->file->image_dir->entries_count; ++i)
|
||||
{
|
||||
if (!strcmp(name, de->entry))
|
||||
{
|
||||
ed->file->image_dir->entries = eina_list_remove_list(
|
||||
ed->file->image_dir->entries, l);
|
||||
break;
|
||||
}
|
||||
de = NULL;
|
||||
de = ed->file->image_dir->entries + i;
|
||||
|
||||
if (de->entry
|
||||
&& !strcmp(name, de->entry))
|
||||
break;
|
||||
}
|
||||
|
||||
if (!de)
|
||||
if (i == ed->file->image_dir->entries_count)
|
||||
{
|
||||
WRN("Unable to find image entry part \"%s\"", name);
|
||||
return EINA_TRUE;
|
||||
|
@ -4538,8 +4547,6 @@ edje_edit_image_del(Evas_Object *obj, const char* name)
|
|||
if (!eetf)
|
||||
{
|
||||
ERR("Unable to open \"%s\" for writing output", ed->path);
|
||||
ed->file->image_dir->entries =
|
||||
eina_list_append(ed->file->image_dir->entries, de);
|
||||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
|
@ -4549,8 +4556,6 @@ edje_edit_image_del(Evas_Object *obj, const char* name)
|
|||
{
|
||||
ERR("Unable to delete \"%s\" font entry", entry);
|
||||
eet_close(eetf);
|
||||
ed->file->image_dir->entries =
|
||||
eina_list_append(ed->file->image_dir->entries, de);
|
||||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
|
@ -4558,16 +4563,14 @@ edje_edit_image_del(Evas_Object *obj, const char* name)
|
|||
if (!_edje_edit_edje_file_save(eetf, ed->file))
|
||||
{
|
||||
eet_close(eetf);
|
||||
ed->file->image_dir->entries =
|
||||
eina_list_append(ed->file->image_dir->entries, de);
|
||||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
eet_close(eetf);
|
||||
}
|
||||
|
||||
free(de->entry);
|
||||
free(de);
|
||||
_edje_if_string_free(ed, de->entry);
|
||||
de->entry = NULL;
|
||||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
@ -4575,9 +4578,7 @@ edje_edit_image_del(Evas_Object *obj, const char* name)
|
|||
EAPI Eina_Bool
|
||||
edje_edit_image_data_add(Evas_Object *obj, const char *name, int id)
|
||||
{
|
||||
Eina_List *l;
|
||||
Edje_Image_Directory_Entry *de;
|
||||
Edje_Image_Directory_Entry *i, *t;
|
||||
|
||||
GET_ED_OR_RETURN(EINA_FALSE);
|
||||
|
||||
|
@ -4593,34 +4594,14 @@ edje_edit_image_data_add(Evas_Object *obj, const char *name, int id)
|
|||
}
|
||||
|
||||
/* Loop trough image directory to find if image exist */
|
||||
t = NULL;
|
||||
EINA_LIST_FOREACH(ed->file->image_dir->entries, l, i)
|
||||
{
|
||||
if (!i) return EINA_FALSE;
|
||||
if (i->id == id) t = i;
|
||||
}
|
||||
if (id < 0) id = - id - 1;
|
||||
if ((unsigned int) id >= ed->file->image_dir->entries_count) return EINA_FALSE;
|
||||
|
||||
/* Create Image Entry */
|
||||
if (!t)
|
||||
{
|
||||
de = _alloc(sizeof(Edje_Image_Directory_Entry));
|
||||
if (!de) return EINA_FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
de = t;
|
||||
free(de->entry);
|
||||
}
|
||||
de->entry = strdup(name);
|
||||
de->id = id;
|
||||
de = ed->file->image_dir->entries + id;
|
||||
eina_stringshare_replace(&de->entry, name);
|
||||
de->source_type = 1;
|
||||
de->source_param = 1;
|
||||
|
||||
/* Add image to Image Directory */
|
||||
if (!t)
|
||||
ed->file->image_dir->entries =
|
||||
eina_list_append(ed->file->image_dir->entries, de);
|
||||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
|
@ -4633,27 +4614,29 @@ edje_edit_image_id_get(Evas_Object *obj, const char *image_name)
|
|||
EAPI Edje_Edit_Image_Comp
|
||||
edje_edit_image_compression_type_get(Evas_Object *obj, const char *image)
|
||||
{
|
||||
Edje_Image_Directory_Entry *i = NULL;
|
||||
Eina_List *l;
|
||||
Edje_Image_Directory_Entry *de = NULL;
|
||||
unsigned int i;
|
||||
|
||||
GET_ED_OR_RETURN(-1);
|
||||
|
||||
if (!ed->file) return -1;
|
||||
if (!ed->file->image_dir) return -1;
|
||||
|
||||
EINA_LIST_FOREACH(ed->file->image_dir->entries, l, i)
|
||||
for (i = 0; i < ed->file->image_dir->entries_count; ++i)
|
||||
{
|
||||
if (strcmp(i->entry, image) == 0)
|
||||
de = ed->file->image_dir->entries + i;
|
||||
|
||||
if (de->entry
|
||||
&& !strcmp(image, de->entry))
|
||||
break;
|
||||
i = NULL;
|
||||
}
|
||||
|
||||
if (!i) return -1;
|
||||
if (i == ed->file->image_dir->entries_count) return -1;
|
||||
|
||||
switch(i->source_type)
|
||||
switch(de->source_type)
|
||||
{
|
||||
case EDJE_IMAGE_SOURCE_TYPE_INLINE_PERFECT:
|
||||
if (i->source_param == 0) // RAW
|
||||
if (de->source_param == 0) // RAW
|
||||
return EDJE_EDIT_IMAGE_COMP_RAW;
|
||||
else // COMP
|
||||
return EDJE_EDIT_IMAGE_COMP_COMP;
|
||||
|
@ -4672,22 +4655,24 @@ edje_edit_image_compression_type_get(Evas_Object *obj, const char *image)
|
|||
EAPI int
|
||||
edje_edit_image_compression_rate_get(Evas_Object *obj, const char *image)
|
||||
{
|
||||
Eina_List *l;
|
||||
Edje_Image_Directory_Entry *i;
|
||||
Edje_Image_Directory_Entry *de;
|
||||
unsigned int i;
|
||||
|
||||
GET_ED_OR_RETURN(-1);
|
||||
|
||||
// Gets the Image Entry
|
||||
EINA_LIST_FOREACH(ed->file->image_dir->entries, l, i)
|
||||
for (i = 0; i < ed->file->image_dir->entries_count; ++i)
|
||||
{
|
||||
if (strcmp(i->entry, image) == 0) break;
|
||||
i = NULL;
|
||||
de = ed->file->image_dir->entries + i;
|
||||
if (de->entry
|
||||
&& !strcmp(de->entry, image))
|
||||
break;
|
||||
}
|
||||
|
||||
if (!i) return -1;
|
||||
if (i->source_type != EDJE_IMAGE_SOURCE_TYPE_INLINE_LOSSY) return -2;
|
||||
if (i == ed->file->image_dir->entries_count) return -1;
|
||||
if (de->source_type != EDJE_IMAGE_SOURCE_TYPE_INLINE_LOSSY) return -2;
|
||||
|
||||
return i->source_param;
|
||||
return de->source_param;
|
||||
}
|
||||
|
||||
EAPI const char *
|
||||
|
|
|
@ -323,13 +323,10 @@ _edje_object_file_set_internal(Evas_Object *obj, const char *file, const char *g
|
|||
|
||||
if (ed->file && ed->file->external_dir)
|
||||
{
|
||||
const Edje_External_Directory_Entry *ext;
|
||||
const Eina_List *n;
|
||||
unsigned int i;
|
||||
|
||||
EINA_LIST_FOREACH(ed->file->external_dir->entries, n, ext)
|
||||
{
|
||||
edje_module_load(ext->entry);
|
||||
}
|
||||
for (i = 0; i < ed->file->external_dir->entries_count; ++i)
|
||||
edje_module_load(ed->file->external_dir->entries[i].entry);
|
||||
}
|
||||
|
||||
_edje_textblock_styles_add(ed);
|
||||
|
@ -1036,13 +1033,26 @@ _edje_file_free(Edje_File *edf)
|
|||
|
||||
if (edf->image_dir)
|
||||
{
|
||||
Edje_Image_Directory_Entry *ie;
|
||||
unsigned int i;
|
||||
|
||||
EINA_LIST_FREE(edf->image_dir->entries, ie)
|
||||
if (edf->free_strings)
|
||||
{
|
||||
if (edf->free_strings && ie->entry) eina_stringshare_del(ie->entry);
|
||||
free(ie);
|
||||
for (i = 0; i < edf->image_dir->entries_count; ++i)
|
||||
eina_stringshare_del(edf->image_dir->entries[i].entry);
|
||||
}
|
||||
|
||||
/* Sets have been added after edje received eet dictionnary support */
|
||||
for (i = 0; i < edf->image_dir->sets_count; ++i)
|
||||
{
|
||||
Edje_Image_Directory_Set_Entry *se;
|
||||
|
||||
EINA_LIST_FREE(edf->image_dir->sets[i].entries, se)
|
||||
free(se);
|
||||
|
||||
}
|
||||
|
||||
free(edf->image_dir->entries);
|
||||
free(edf->image_dir->sets);
|
||||
free(edf->image_dir);
|
||||
}
|
||||
if (edf->spectrum_dir)
|
||||
|
|
|
@ -215,7 +215,6 @@ typedef struct _Edje_Style_Tag Edje_Style_Tag;
|
|||
typedef struct _Edje_Data Edje_Data;
|
||||
typedef struct _Edje_External_Directory Edje_External_Directory;
|
||||
typedef struct _Edje_External_Directory_Entry Edje_External_Directory_Entry;
|
||||
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;
|
||||
|
@ -374,11 +373,6 @@ struct _Edje_Data
|
|||
|
||||
/*----------*/
|
||||
|
||||
struct _Edje_Font_Directory
|
||||
{
|
||||
Eina_List *entries; /* a list of Edje_Font_Directory_Entry */
|
||||
};
|
||||
|
||||
struct _Edje_Font_Directory_Entry
|
||||
{
|
||||
const char *entry; /* the name of the font */
|
||||
|
@ -390,7 +384,8 @@ struct _Edje_Font_Directory_Entry
|
|||
|
||||
struct _Edje_External_Directory
|
||||
{
|
||||
Eina_List *entries; /* a list of Edje_External_Directory_Entry */
|
||||
Edje_External_Directory_Entry *entries; /* a list of Edje_External_Directory_Entry */
|
||||
unsigned int entries_count;
|
||||
};
|
||||
|
||||
struct _Edje_External_Directory_Entry
|
||||
|
@ -407,13 +402,16 @@ struct _Edje_External_Directory_Entry
|
|||
|
||||
struct _Edje_Image_Directory
|
||||
{
|
||||
Eina_List *entries; /* a list of Edje_Image_Directory_Entry */
|
||||
Eina_List *sets; /* a list of Edje_Image_Directory_Set */
|
||||
Edje_Image_Directory_Entry *entries; /* an array of Edje_Image_Directory_Entry */
|
||||
unsigned int entries_count;
|
||||
|
||||
Edje_Image_Directory_Set *sets;
|
||||
unsigned int sets_count; /* an array of Edje_Image_Directory_Set */
|
||||
};
|
||||
|
||||
struct _Edje_Image_Directory_Entry
|
||||
{
|
||||
char *entry; /* the nominal name of the image - if any */
|
||||
const char *entry; /* the nominal name of the image - if any */
|
||||
int source_type; /* alternate source mode. 0 = none */
|
||||
int source_param; /* extra params on encoding */
|
||||
int id; /* the id no. of the image */
|
||||
|
@ -429,7 +427,7 @@ struct _Edje_Image_Directory_Set
|
|||
|
||||
struct _Edje_Image_Directory_Set_Entry
|
||||
{
|
||||
char *name;
|
||||
const char *name;
|
||||
int id;
|
||||
|
||||
struct {
|
||||
|
|
Loading…
Reference in New Issue