[genlist] no scale at theme_hook
[framework/uifw/elementary.git] / src / edje_externals / elm_colorpalette.c
1 #include "private.h"
2
3 typedef struct _Elm_Params_colorpalette
4 {
5    unsigned int row, col;
6    Elm_Colorpalette_Color *color;
7    char *color_set;
8    int color_num;
9 } Elm_Params_colorpalette;
10
11 static void
12 external_colorpalette_state_set(void *data __UNUSED__, Evas_Object *obj, const void *from_params, const void *to_params, float pos __UNUSED__)
13 {
14    const Elm_Params_colorpalette *p;
15    if (to_params) p = to_params;
16    else if (from_params) p = from_params;
17    else return;
18    if ((p->row > 0)&&( p->col > 0))
19      elm_colorpalette_row_column_set(obj, p->row, p->col);
20    if (p->color_num)
21      elm_colorpalette_color_set(obj, p->color_num, p->color);
22 }
23
24 static Eina_Bool
25 external_colorpalette_param_set(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const Edje_External_Param *param)
26 {
27    if (!strcmp(param->name, "row"))
28      {
29         if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT)
30           {
31              //No EAPI for row set
32              return EINA_FALSE;
33           }
34      }
35    else if (!strcmp(param->name, "col"))
36      {
37         if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT)
38           {
39              //No EAPI for column set
40              return EINA_FALSE;
41           }
42      }
43    else if (!strcmp(param->name,"color_num"))
44      {
45        if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
46          {
47             //No EAPI for colour_number set
48             return EINA_FALSE;
49          }
50      }
51    ERR("unknown parameter '%s' of type '%s'",
52        param->name, edje_external_param_type_str(param->type));
53
54    return EINA_FALSE;
55 }
56
57 static Eina_Bool
58 external_colorpalette_param_get(void *data __UNUSED__, const Evas_Object *obj __UNUSED__, Edje_External_Param *param __UNUSED__)
59 {
60    //FIXME:getter functions not provided
61    return EINA_FALSE;
62 }
63
64 static void *
65 external_colorpalette_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const Eina_List *params)
66 {
67    Elm_Params_colorpalette *mem;
68    Edje_External_Param *param;
69    const Eina_List *l;
70    int k,m,ll;
71    k = m = ll = 0;
72    char test[5];
73    int d = 0;
74    char *s = NULL;
75    mem = calloc(1, sizeof(Elm_Params_colorpalette));
76    if (!mem)
77      return NULL;
78
79    EINA_LIST_FOREACH(params, l, param)
80      {
81        if (!strcmp(param->name, "row"))
82          {
83             mem->row = param->i;
84          }
85        else if (!strcmp(param->name, "col"))
86          {
87             mem->col = param->i;
88          }
89        else if (!strcmp(param->name, "color_num"))
90          {
91             mem->color_num = param->i;
92          }
93        else if (!strcmp(param->name, "color_set"))
94          {
95            mem->color = calloc(mem->color_num, sizeof(Elm_Colorpalette_Color));
96            s = (char*)param->i;
97            while (k < (mem->color_num) && (ll <= (int)strlen(s)))
98              {
99                 if (d == 0)
100                   {
101                      while(s[ll]!=':')
102                        test[m++] = s[ll++];
103                      test[m] = 0;
104                      ll++;
105                      m = 0;
106                      mem->color[k].r = atoi(test);
107                      d++;
108                   }
109                 if (d == 1)
110                   {
111                      while(s[ll]!=':')
112                        test[m++] = s[ll++];
113                      test[m] = 0;
114                      ll++;
115                      m = 0;
116                      mem->color[k].g = atoi(test);
117                      d++;
118                   }
119                 if (d == 2)
120                   {
121                      while(s[ll]!='/' &&  m<3)
122                        test[m++] = s[ll++];
123                      test[m] = 0;
124                      ll++;
125                      m = 0;
126                      mem->color[k].b = atoi(test);
127                      d = 0;
128                   }
129              }
130            k++;
131          }
132      }
133    return mem;
134 }
135
136 static Evas_Object *
137 external_colorpalette_content_get(void *data __UNUSED__,
138                                   const Evas_Object *obj __UNUSED__,
139                                   const char *content __UNUSED__)
140 {
141    ERR("No content.");
142    return NULL;
143 }
144
145 static void
146 external_colorpalette_params_free(void *params)
147 {
148    Elm_Params_colorpalette *mem = params;
149    if (mem->color)
150      free(mem->color);
151    if (mem->color_set)
152      free(mem->color_set);
153    free(params);
154 }
155
156 static Edje_External_Param_Info external_colorpalette_params[] = {
157    DEFINE_EXTERNAL_COMMON_PARAMS,
158    EDJE_EXTERNAL_PARAM_INFO_INT("row"),
159    EDJE_EXTERNAL_PARAM_INFO_INT("col"),
160    EDJE_EXTERNAL_PARAM_INFO_INT("r"),
161    EDJE_EXTERNAL_PARAM_INFO_INT("g"),
162    EDJE_EXTERNAL_PARAM_INFO_INT("b"),
163    EDJE_EXTERNAL_PARAM_INFO_STRING("color_set"),
164    EDJE_EXTERNAL_PARAM_INFO_INT("color_num"),
165    EDJE_EXTERNAL_PARAM_INFO_SENTINEL
166 };
167
168 DEFINE_EXTERNAL_ICON_ADD(colorpalette, "colorpalette");
169 DEFINE_EXTERNAL_TYPE_SIMPLE(colorpalette, "colorpalette");