edje_edit: Add edje_edit_state_map_point_color functions.

Summary:
Add two main functions for working with map colors of part vertexes/points:
- edje_edit_state_map_point_color_get
- edje_edit_state_map_point_color_set

@feature

Reviewers: seoz, raster, cedric, Hermet

CC: reutskiy.v.v, cedric

Differential Revision: https://phab.enlightenment.org/D1086
This commit is contained in:
Vorobiov Vitalii 2014-07-03 17:27:52 +09:00 committed by Carsten Haitzler (Rasterman)
parent 8b66dc0e7c
commit 2447bc3556
2 changed files with 130 additions and 0 deletions

View File

@ -3690,6 +3690,54 @@ edje_edit_state_map_rotation_center_get(Evas_Object *obj, const char *part, cons
EAPI Eina_Bool
edje_edit_state_map_rotation_center_set(Evas_Object *obj, const char *part, const char *state, double value, const char *source_part);
/** This sets the color for vertex/point of the current part.
* For more detailed information please @see evas_map_point_color_set().
*
* In edje there is (currently) only 4 main point:
* - Top-Left (0), Top-Right (1), Bottom-Right (2), Bottom-Left (3).
*
* Default value is 255 255 255 255 for every point.
*
* @param obj Object being edited.
* @param part The name of the part.
* @param state The name of the state (not including the state value).
* @param value The state value.
* @param idx The index of point.
* @param r The red value to set.
* @param g The green color value to set.
* @param b The blue color value to set.
* @param a The alpha color value to set.
*
* @return EINA_TRUE in case of success, EINA_FALSE otherwise.
* @since 1.11
**/
EAPI Eina_Bool
edje_edit_state_map_point_color_set(Evas_Object *obj, const char *part, const char *state, double value, int idx, int r, int g, int b, int a);
/** This gets the color of given vertex/point of the current part.
* For more detailed information please @see evas_map_point_color_set().
*
* In edje there is (currently) only 4 main point:
* - Top-Left (0), Top-Right (1), Bottom-Right (2), Bottom-Left (3).
*
* Default value is 255 255 255 255 for every point.
*
* @param obj Object being edited.
* @param part The name of the part.
* @param state The name of the state (not including the state value).
* @param value The state value.
* @param idx The index of point.
* @param r The red value to get.
* @param g The green color value to get.
* @param b The blue color value to get.
* @param a The alpha color value to get.
*
* @return EINA_TRUE in case of success, EINA_FALSE otherwise.
* @since 1.11
**/
EAPI Eina_Bool
edje_edit_state_map_point_color_get(Evas_Object *obj, const char *part, const char *state, double value, int idx, int *r, int *g, int *b, int *a);
/** Set the source part for given part state.
*
* Set source causes the part to use another part content as the content

View File

@ -6203,6 +6203,88 @@ edje_edit_state_map_rotation_center_set(Evas_Object *obj, const char *part, cons
return EINA_TRUE;
}
EAPI Eina_Bool
edje_edit_state_map_point_color_get(Evas_Object *obj, const char *part, const char *state, double value, int idx, int *r, int *g, int *b, int *a)
{
Edje_Map_Color *color = NULL;
unsigned int i;
if ((!obj) || (!part) || (!state))
return EINA_FALSE;
GET_PD_OR_RETURN(EINA_FALSE);
/* check if current color is exists and get it. */
for (i = 0; i < pd->map.colors_count; ++i)
{
if (pd->map.colors[i]->idx == idx)
{
color = pd->map.colors[i];
break;
}
}
if (!color)
{
if (r) *r = 255;
if (g) *g = 255;
if (b) *b = 255;
if (a) *a = 255;
}
else
{
if (r) *r = color->r;
if (g) *g = color->g;
if (b) *b = color->b;
if (a) *a = color->a;
}
return EINA_TRUE;
}
EAPI Eina_Bool
edje_edit_state_map_point_color_set(Evas_Object *obj, const char *part, const char *state, double value, int idx, int r, int g, int b, int a)
{
Edje_Map_Color *color = NULL;
unsigned int i;
if ((!obj) || (!part) || (!state))
return EINA_FALSE;
GET_PD_OR_RETURN(EINA_FALSE);
/* check if current color is exists and get it. */
for (i = 0; i < pd->map.colors_count; ++i)
{
if (pd->map.colors[i]->idx == idx)
{
color = pd->map.colors[i];
break;
}
}
if (!color)
{
color = _alloc(sizeof(Edje_Map_Color));
pd->map.colors_count++;
pd->map.colors =
realloc(pd->map.colors,
sizeof(Edje_Map_Color*) * pd->map.colors_count);
pd->map.colors[pd->map.colors_count - 1] = color;
}
color->idx = idx;
if ((r > -1) && (r < 256)) color->r = r;
else return EINA_FALSE;
if ((g > -1) && (g < 256)) color->g = g;
else return EINA_FALSE;
if ((b > -1) && (b < 256)) color->b = b;
else return EINA_FALSE;
if ((a > -1) && (a < 256)) color->a = a;
else return EINA_FALSE;
return EINA_TRUE;
}
/**************/
/* MAP API */
/**************/