* make color classes editable
authordavemds <davemds@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sun, 28 Sep 2008 18:44:19 +0000 (18:44 +0000)
committerdavemds <davemds@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sun, 28 Sep 2008 18:44:19 +0000 (18:44 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/edje@36295 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/Edje_Edit.h
src/lib/edje_edit.c

index c16bba9..c8bc16d 100644 (file)
@@ -262,6 +262,7 @@ edje_edit_data_value_set(
    const char *value      ///< The new value to set
 );
 
+/** Change the name of the given data object */
 EAPI unsigned char        ///@return TRUE on success
 edje_edit_data_name_set(
    Evas_Object *obj,     ///< The edje object
@@ -277,14 +278,80 @@ edje_edit_data_name_set(
  *  Functions to deal with Color Classes (see @ref edcref).
  */ //@{
 
-/**Get the list of all the Color Classes in the given edje object.
- * Use edje_edit_string_list_free() when you don't need it anymore.
+/** Get the list of all the Color Classes in the given edje object.
+ *  Use edje_edit_string_list_free() when you don't need it anymore.
  */
 EAPI Evas_List *           ///@return An Evas_List* of string (char *)containing all the classes names.
 edje_edit_color_classes_list_get(
    Evas_Object * obj       ///< The edje object
 );
 
+/** Create a new color class object in the given edje
+ *  If another class with the same name exists nothing is created and FALSE is returned.
+ */
+EAPI unsigned char        ///@return TRUE on success
+edje_edit_color_class_add(
+   Evas_Object *obj,      ///< The edje object
+   const char *name       ///< The name of the new color class
+);
+
+/** Delete the given class object from edje */
+EAPI unsigned char        ///@return TRUE on success
+edje_edit_color_class_del(
+   Evas_Object *obj,      ///< The edje object
+   const char *name       ///< The name of the color class to delete
+);
+
+/** Get all the colors that compose the class.
+ *  You can pass NULL to colors you are not intrested in
+ */
+EAPI unsigned char         ///@return TRUE on success
+edje_edit_color_class_colors_get(
+   Evas_Object *obj,       ///< The edje object
+   const char *class_name, ///< The name of the color class
+   int *r,  ///< Where to store the red component of the standard color
+   int *g,  ///< Where to store the green component of the standard color
+   int *b,  ///< Where to store the blue component of the standard color
+   int *a,  ///< Where to store the alpha component of the standard color
+   int *r2, ///< Where to store the red component of the second color
+   int *g2, ///< Where to store the green component of the second color
+   int *b2, ///< Where to store the green component of the second color
+   int *a2, ///< Where to store the green component of the second color
+   int *r3, ///< Where to store the red component of the third color
+   int *g3, ///< Where to store the green component of the third color
+   int *b3, ///< Where to store the blue component of the third color
+   int *a3  ///< Where to store the alpha component of the third color
+);
+
+/** Set the colors for the given color class.
+ *  If you set a color to -1 it will not be touched
+ */
+EAPI unsigned char         ///@return TRUE on success
+edje_edit_color_class_colors_set(
+   Evas_Object *obj,       ///< The edje object
+   const char *class_name, ///< The name of the color class
+   int r,    ///< The red component of the standard color
+   int g,    ///< The green component of the standard color
+   int b,    ///< The blue component of the standard color
+   int a,    ///< The alpha component of the standard color
+   int r2,   ///< The red component of the second color
+   int g2,   ///< The green component of the second color
+   int b2,   ///< The blue component of the second color
+   int a2,   ///< The alpha component of the second color
+   int r3,   ///< The red component of the third color
+   int g3,   ///< The green component of the third color
+   int b3,   ///< The blue component of the third color
+   int a3    ///< The alpha component of the third color
+);
+
+/** Change the name of a color class */
+EAPI unsigned char        ///@return TRUE on success
+edje_edit_color_class_name_set(
+   Evas_Object *obj,      ///< The edje object
+   const char *name,      ///< The name of the color class
+   const char *newname    ///< The new name to assign
+);
+
 
 //@}
 /******************************************************************************/
index 794b250..c8e64b7 100644 (file)
@@ -1049,17 +1049,18 @@ edje_edit_data_name_set(Evas_Object *obj, const char *itemname,  const char *new
 EAPI Evas_List *
 edje_edit_color_classes_list_get(Evas_Object * obj)
 {
-   Edje_Color_Class *cc;
    Evas_List *classes = NULL;
    Evas_List *l;
 
    GET_ED_OR_RETURN(NULL);
-printf("GET CLASSES LIST\n");
-   if (!ed->file || !!ed->color_classes)
+
+   if (!ed->file || !ed->file->color_classes)
       return NULL;
-printf("GET CLASSES LIST %d\n", evas_list_count(ed->color_classes));
+printf("GET CLASSES LIST %d %d\n", evas_list_count(ed->color_classes), evas_list_count(ed->file->color_classes));
    for (l = ed->file->color_classes; l; l = l->next)
      {
+       Edje_Color_Class *cc;
+
        cc = l->data;
        classes = evas_list_append(classes, evas_stringshare_add(cc->name));
      }
@@ -1067,6 +1068,161 @@ printf("GET CLASSES LIST %d\n", evas_list_count(ed->color_classes));
    return classes;
 }
 
+EAPI unsigned char
+edje_edit_color_class_colors_get(Evas_Object *obj, const char *class_name, int *r, int *g, int *b, int *a, int *r2, int *g2, int *b2, int *a2, int *r3, int *g3, int *b3, int *a3)
+{
+   Evas_List *l;
+   GET_ED_OR_RETURN(0);
+
+   if (!ed->file || !ed->file->color_classes)
+      return 0;
+
+   for (l = ed->file->color_classes; l; l = l->next)
+     {
+       Edje_Color_Class *cc;
+
+       cc = l->data;
+       if (!strcmp(cc->name, class_name))
+         {
+               if (r) *r = cc->r;
+               if (g) *g = cc->g;
+               if (b) *b = cc->b;
+               if (a) *a = cc->a;
+
+               if (r2) *r2 = cc->r2;
+               if (g2) *g2 = cc->g2;
+               if (b2) *b2 = cc->b2;
+               if (a2) *a2 = cc->a2;
+
+               if (r3) *r3 = cc->r3;
+               if (g3) *g3 = cc->g3;
+               if (b3) *b3 = cc->b3;
+               if (a3) *a3 = cc->a3;
+
+               return 1;
+         }
+     }
+   return 0;
+}
+
+EAPI unsigned char
+edje_edit_color_class_colors_set(Evas_Object *obj, const char *class_name, int r, int g, int b, int a, int r2, int g2, int b2, int a2, int r3, int g3, int b3, int a3)
+{
+   Evas_List *l;
+   GET_ED_OR_RETURN(0);
+
+   if (!ed->file || !ed->file->color_classes)
+      return 0;
+
+   for (l = ed->file->color_classes; l; l = l->next)
+     {
+       Edje_Color_Class *cc;
+
+       cc = l->data;
+       if (!strcmp(cc->name, class_name))
+         {
+               if (r > -1) cc->r = r;
+               if (g > -1) cc->g = g;
+               if (b > -1) cc->b = b;
+               if (a > -1) cc->a = a;
+
+               if (r2 > -1) cc->r2 = r2;
+               if (g2 > -1) cc->g2 = g2;
+               if (b2 > -1) cc->b2 = b2;
+               if (a2 > -1) cc->a2 = a2;
+
+               if (r3 > -1) cc->r3 = r3;
+               if (g3 > -1) cc->g3 = g3;
+               if (b3 > -1) cc->b3 = b3;
+               if (a3 > -1) cc->a3 = a3;
+
+               return 1;
+         }
+     }
+   return 0;
+}
+
+EAPI unsigned char
+edje_edit_color_class_add(Evas_Object *obj, const char *name)
+{
+   Evas_List *l;
+   Edje_Color_Class *c;
+
+   GET_ED_OR_RETURN(0);
+
+   if (!name || !ed->file)
+     return 0;
+
+   for (l = ed->file->color_classes; l; l = l->next)
+     {
+       Edje_Color_Class *cc = l->data;
+       if (strcmp(cc->name, name) == 0)
+         return 0;
+     }
+
+   c = mem_alloc(sizeof(Edje_Color_Class));
+   if (!c) return 0;
+
+   c->name = (char*)evas_stringshare_add(name);
+   c->r = c->g = c->b = c->a = 255;
+   c->r2 = c->g2 = c->b2 = c->a2 = 255;
+   c->r3 = c->g3 = c->b3 = c->a3 = 255;
+
+   ed->file->color_classes = evas_list_append(ed->file->color_classes, c);
+
+   return 1;
+}
+
+EAPI unsigned char
+edje_edit_color_class_del(Evas_Object *obj, const char *name)
+{
+   Evas_List *l;
+
+   GET_ED_OR_RETURN(0);
+
+   if (!name || !ed->file || !ed->file->color_classes)
+     return 0;
+
+   for (l = ed->file->color_classes; l; l = l->next)
+     {
+       Edje_Color_Class *cc = l->data;
+       if (strcmp(cc->name, name) == 0)
+          {
+             _edje_if_string_free(ed, cc->name);
+             ed->file->color_classes = evas_list_remove(ed->file->color_classes, cc);
+             free(cc);
+             return 1;
+          }
+     }
+   return 0;
+}
+
+EAPI unsigned char
+edje_edit_color_class_name_set(Evas_Object *obj, const char *name, const char *newname)
+{
+   Evas_List *l;
+
+   GET_ED_OR_RETURN(0);
+
+   if (!ed->file || !ed->file->color_classes)
+      return 0;
+
+   for (l = ed->file->color_classes; l; l = l->next)
+     {
+       Edje_Color_Class *cc;
+
+       cc = l->data;
+       if (!strcmp(cc->name, name))
+         {
+               _edje_if_string_free(ed, cc->name);
+               cc->name = (char*)evas_stringshare_add(newname);
+               return 1;
+         }
+     }
+
+   return 0;
+}
+
 
 /***************/
 /*  PARTS API  */