furrymyad pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=49f6baa7aaf9eef3cc0d5859768dd842fed9f653

commit 49f6baa7aaf9eef3cc0d5859768dd842fed9f653
Author: Vitalii Vorobiov <vi.vorob...@samsung.com>
Date:   Wed Apr 27 13:58:44 2016 +0300

    Edje_Edit: some API to manipulate set's images
    
    get list of images of set (edje_edit_image_set_images_list_get)
    add image to set (edje_edit_image_set_image_add)
    delete image from set by it's place (edje_edit_image_set_image_del)
---
 src/lib/edje/Edje_Edit.h | 48 +++++++++++++++++++++++++
 src/lib/edje/edje_edit.c | 91 ++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 139 insertions(+)

diff --git a/src/lib/edje/Edje_Edit.h b/src/lib/edje/Edje_Edit.h
index 8a69a76..963f44d 100644
--- a/src/lib/edje/Edje_Edit.h
+++ b/src/lib/edje/Edje_Edit.h
@@ -5582,6 +5582,54 @@ edje_edit_image_set_list_get(Evas_Object *obj);
 EAPI Eina_Bool
 edje_edit_image_set_add(Evas_Object *obj, const char *name);
 
+/** Get the list of all images inside of given set in the given edje.
+ * Use edje_edit_string_list_free() when you don't need the list anymore.
+ *
+ * @param obj Object being edited.
+ * @param name name of image set.
+ *
+ * @return A List containing all images found inside of given set in the edje 
file.
+ *
+ * @since 1.18
+ */
+EAPI Eina_List *
+edje_edit_image_set_images_list_get(Evas_Object *obj, const char *name);
+
+/** Add image to set.
+ *
+ * Add image to given set. If image is not exist inside of edje
+ * collection then function @see edje_edit_image_add should be
+ * used to get image added to edje collection.
+ * This function uses only already added functions
+ *
+ * @param obj Object being edited.
+ * @param set_name name of image set.
+ * @param name image set's name.
+ *
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise (and when image is 
not exist).
+ *
+ * @since 1.18
+ */
+EAPI Eina_Bool
+edje_edit_image_set_image_add(Evas_Object *obj, const char *set_name, const 
char *name);
+
+/** Delete image on current position from set.
+ *
+ * Remove image from given set. To be sure what kind of image will be
+ * deleted, firstly check it's position via
+ * @see edje_edit_image_set_images_list_get function.
+ *
+ * @param obj Object being edited.
+ * @param set_name name of image set.
+ * @param place position of image to be deleted.
+ *
+ * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
+ *
+ * @since 1.18
+ */
+EAPI Eina_Bool
+edje_edit_image_set_image_del(Evas_Object *obj, const char *set_name, unsigned 
int place);
+
 //@}
 
/******************************************************************************/
 /**************************   IMAGES API   
************************************/
diff --git a/src/lib/edje/edje_edit.c b/src/lib/edje/edje_edit.c
index 6b773b3..5ab0a3c 100644
--- a/src/lib/edje/edje_edit.c
+++ b/src/lib/edje/edje_edit.c
@@ -8552,6 +8552,97 @@ edje_edit_image_set_add(Evas_Object *obj, const char 
*name)
    return EINA_TRUE;
 }
 
+EAPI Eina_List *
+edje_edit_image_set_images_list_get(Evas_Object *obj, const char *name)
+{
+   Eina_List *images = NULL, *l;
+   Edje_Image_Directory_Set *de = NULL;
+   Edje_Image_Directory_Set_Entry *dim = NULL;
+   unsigned int i;
+
+   GET_ED_OR_RETURN(NULL);
+
+   if (!ed->file) return NULL;
+   if (!ed->file->image_dir) return NULL;
+   if (!name) return NULL;
+
+   for (i = 0; i < ed->file->image_dir->sets_count; ++i)
+     {
+        de = ed->file->image_dir->sets + i;
+        if ((de->name) && (!strcmp(name, de->name)))
+          break;
+     }
+   if (i == ed->file->image_dir->sets_count) return NULL;
+
+   EINA_LIST_FOREACH(de->entries, l, dim)
+     {
+        images = eina_list_append(images, eina_stringshare_add(dim->name));
+     }
+
+   return images;
+}
+
+EAPI Eina_Bool
+edje_edit_image_set_image_add(Evas_Object *obj, const char *set_name, const 
char *name)
+{
+   Edje_Image_Directory_Set *de = NULL;
+   Edje_Image_Directory_Set_Entry *dim = NULL;
+   unsigned int i;
+   int id;
+
+   GET_ED_OR_RETURN(EINA_FALSE);
+
+   if (!ed->file) return EINA_FALSE;
+   if (!ed->file->image_dir) return EINA_FALSE;
+   if (!name) return EINA_FALSE;
+   id = edje_edit_image_id_get(obj, name);
+   if (id < 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_name, de->name)))
+          break;
+     }
+   if (i == ed->file->image_dir->sets_count) return EINA_FALSE;
+
+   dim = (Edje_Image_Directory_Set_Entry *)calloc(1, 
sizeof(Edje_Image_Directory_Set_Entry));
+   dim->name = name;
+   dim->id = id;
+   de->entries = eina_list_append(de->entries, dim);
+
+   return EINA_TRUE;
+}
+
+EAPI Eina_Bool
+edje_edit_image_set_image_del(Evas_Object *obj, const char *set_name, unsigned 
int place)
+{
+   Edje_Image_Directory_Set *de = NULL;
+   Edje_Image_Directory_Set_Entry *dim = NULL;
+   unsigned int i;
+
+   GET_ED_OR_RETURN(EINA_FALSE);
+
+   if (!ed->file) return EINA_FALSE;
+   if (!ed->file->image_dir) 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_name, de->name)))
+          break;
+     }
+   if (i == ed->file->image_dir->sets_count) return EINA_FALSE;
+
+   dim = eina_list_nth(de->entries, place);
+   if (!dim) return EINA_FALSE;
+
+   de->entries = eina_list_remove_list(de->entries, 
eina_list_nth_list(de->entries, place));
+   free(dim);
+
+   return EINA_TRUE;
+}
+
 /****************/
 /*  IMAGES API  */
 /****************/

-- 


Reply via email to