forked from enlightenment/efl
Edje_Edit: image set API
list of sets (edje_edit_image_set_list_get) renaming set (edje_edit_image_set_rename) add new set (edje_edit_image_set_add) set's id (edje_edit_image_set_id_get)
This commit is contained in:
parent
2f6bdde1dd
commit
a9240d86a4
|
@ -5533,6 +5533,55 @@ EAPI const char *edje_edit_font_path_get(Evas_Object *obj, const char *alias);
|
|||
EAPI Eina_Bool
|
||||
edje_edit_image_set_exists(Evas_Object *obj, const char *image);
|
||||
|
||||
/** Get id of image set.
|
||||
*
|
||||
* @param obj Object being edited.
|
||||
* @param name image set's name.
|
||||
*
|
||||
* @return The id of the given image name.
|
||||
*
|
||||
* @since 1.18
|
||||
*/
|
||||
EAPI int
|
||||
edje_edit_image_set_id_get(Evas_Object *obj, const char *name);
|
||||
|
||||
/** Rename image set.
|
||||
*
|
||||
* @param obj Object being edited.
|
||||
* @param set image set's name.
|
||||
* @param new_set new name of image set.
|
||||
*
|
||||
* @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
|
||||
*
|
||||
* @since 1.18
|
||||
*/
|
||||
EAPI Eina_Bool
|
||||
edje_edit_image_set_rename(Evas_Object *obj, const char *set, const char *new_set);
|
||||
|
||||
/** Get the list of all the image sets in the given edje.
|
||||
* Use edje_edit_string_list_free() when you don't need the list anymore.
|
||||
*
|
||||
* @param obj Object being edited.
|
||||
*
|
||||
* @return A List containing all image sets names found in the edje file.
|
||||
*
|
||||
* @since 1.18
|
||||
*/
|
||||
EAPI Eina_List *
|
||||
edje_edit_image_set_list_get(Evas_Object *obj);
|
||||
|
||||
/** Add new image set.
|
||||
*
|
||||
* @param obj Object being edited.
|
||||
* @param name image set's name.
|
||||
*
|
||||
* @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
|
||||
*
|
||||
* @since 1.18
|
||||
*/
|
||||
EAPI Eina_Bool
|
||||
edje_edit_image_set_add(Evas_Object *obj, const char *name);
|
||||
|
||||
//@}
|
||||
/******************************************************************************/
|
||||
/************************** IMAGES API ************************************/
|
||||
|
|
|
@ -286,6 +286,22 @@ _edje_image_id_find(Edje_Edit *eed, const char *image_name)
|
|||
return -1;
|
||||
}
|
||||
|
||||
static int
|
||||
_edje_set_id_find(Edje_Edit *eed, const char *set_name)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
if (!eed->base->file) return -1;
|
||||
if (!eed->base->file->image_dir) return -1;
|
||||
|
||||
for (i = 0; i < eed->base->file->image_dir->sets_count; ++i)
|
||||
if (eed->base->file->image_dir->sets[i].name
|
||||
&& !strcmp(set_name, eed->base->file->image_dir->sets[i].name))
|
||||
return i;
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
static const char *
|
||||
_edje_image_name_find(Edje_Edit *eed, int image_id)
|
||||
{
|
||||
|
@ -8429,6 +8445,113 @@ edje_edit_image_set_exists(Evas_Object *obj, const char *image)
|
|||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
edje_edit_image_set_id_get(Evas_Object *obj, const char *image_name)
|
||||
{
|
||||
GET_EED_OR_RETURN(-1);
|
||||
|
||||
return _edje_set_id_find(eed, image_name);
|
||||
}
|
||||
|
||||
EAPI Eina_Bool
|
||||
edje_edit_image_set_rename(Evas_Object *obj, const char *set, const char *new_set)
|
||||
{
|
||||
Edje_Image_Directory_Set *de = NULL;
|
||||
unsigned int i;
|
||||
GET_ED_OR_RETURN(EINA_FALSE);
|
||||
|
||||
if (!new_set) return EINA_FALSE;
|
||||
|
||||
// Check if image set with name 'new_set' already exists
|
||||
if (edje_edit_image_set_id_get(obj, new_set) >= 0)
|
||||
return EINA_FALSE;
|
||||
|
||||
for (i = 0; i < ed->file->image_dir->sets_count; ++i)
|
||||
{
|
||||
de = ed->file->image_dir->sets + i;
|
||||
if ((de->name) && (!strcmp(set, de->name)))
|
||||
break;
|
||||
}
|
||||
if (i == ed->file->image_dir->sets_count) return EINA_FALSE;
|
||||
|
||||
de->name = (char *)new_set;
|
||||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
EAPI Eina_List *
|
||||
edje_edit_image_set_list_get(Evas_Object *obj)
|
||||
{
|
||||
Eina_List *sets = NULL;
|
||||
unsigned int i;
|
||||
|
||||
GET_ED_OR_RETURN(NULL);
|
||||
|
||||
if (!ed->file) return NULL;
|
||||
if (!ed->file->image_dir) return NULL;
|
||||
|
||||
for (i = 0; i < ed->file->image_dir->sets_count; ++i)
|
||||
sets = eina_list_append(sets,
|
||||
eina_stringshare_add(ed->file->image_dir->sets[i].name));
|
||||
|
||||
return sets;
|
||||
}
|
||||
|
||||
EAPI Eina_Bool
|
||||
edje_edit_image_set_add(Evas_Object *obj, const char *name)
|
||||
{
|
||||
Edje_Image_Directory_Set *de;
|
||||
unsigned int i;
|
||||
int free_id = -1;
|
||||
|
||||
GET_ED_OR_RETURN(EINA_FALSE);
|
||||
|
||||
if (!name) return EINA_FALSE;
|
||||
if (!ed->file) return EINA_FALSE;
|
||||
|
||||
/* Create Image_Directory if not exist */
|
||||
if (!ed->file->image_dir)
|
||||
{
|
||||
ed->file->image_dir = _alloc(sizeof(Edje_Image_Directory));
|
||||
if (!ed->file->image_dir) return EINA_FALSE;
|
||||
}
|
||||
|
||||
/* Loop trough image directory to find if image exist */
|
||||
for (i = 0; i < ed->file->image_dir->sets_count; ++i)
|
||||
{
|
||||
de = ed->file->image_dir->sets + i;
|
||||
|
||||
if (!de->name)
|
||||
free_id = i;
|
||||
else if (!strcmp(name, de->name))
|
||||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
if (free_id == -1)
|
||||
{
|
||||
Edje_Image_Directory_Set *tmp;
|
||||
unsigned int count;
|
||||
|
||||
count = ed->file->image_dir->sets_count + 1;
|
||||
|
||||
tmp = realloc(ed->file->image_dir->sets,
|
||||
sizeof (Edje_Image_Directory_Set) * count);
|
||||
if (!tmp) return EINA_FALSE;
|
||||
|
||||
ed->file->image_dir->sets = tmp;
|
||||
free_id = ed->file->image_dir->sets_count;
|
||||
ed->file->image_dir->sets_count = count;
|
||||
}
|
||||
|
||||
/* Set Image Entry */
|
||||
de = ed->file->image_dir->sets + free_id;
|
||||
de->name = (char *)name;
|
||||
de->id = free_id;
|
||||
de->entries = NULL;
|
||||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
/****************/
|
||||
/* IMAGES API */
|
||||
/****************/
|
||||
|
|
Loading…
Reference in New Issue