Eolian: Integration of Color Selector

This commit is contained in:
Daniel Zaoui 2014-03-20 14:29:12 +02:00
parent ee1003af32
commit 9a240dfedc
5 changed files with 244 additions and 289 deletions

View File

@ -569,7 +569,9 @@ BUILT_SOURCES = \
elm_check.eo.c \ elm_check.eo.c \
elm_check.eo.h \ elm_check.eo.h \
elm_clock.eo.c \ elm_clock.eo.c \
elm_clock.eo.h elm_clock.eo.h \
elm_colorselector.eo.c \
elm_colorselector.eo.h
EXTRA_DIST += \ EXTRA_DIST += \
elm_widget.eo \ elm_widget.eo \
@ -594,7 +596,8 @@ EXTRA_DIST += \
elm_button.eo \ elm_button.eo \
elm_calendar.eo \ elm_calendar.eo \
elm_check.eo \ elm_check.eo \
elm_clock.eo elm_clock.eo \
elm_colorselector.eo
nodist_includesunstable_HEADERS = \ nodist_includesunstable_HEADERS = \
elm_widget.eo.h \ elm_widget.eo.h \
@ -619,5 +622,6 @@ nodist_includesunstable_HEADERS = \
elm_button.eo.h \ elm_button.eo.h \
elm_calendar.eo.h \ elm_calendar.eo.h \
elm_check.eo.h \ elm_check.eo.h \
elm_clock.eo.h elm_clock.eo.h \
elm_colorselector.eo.h

View File

@ -6,8 +6,6 @@
#include "elm_priv.h" #include "elm_priv.h"
#include "elm_widget_colorselector.h" #include "elm_widget_colorselector.h"
EAPI Eo_Op ELM_OBJ_COLORSELECTOR_BASE_ID = EO_NOOP;
#define MY_CLASS ELM_OBJ_COLORSELECTOR_CLASS #define MY_CLASS ELM_OBJ_COLORSELECTOR_CLASS
#define MY_CLASS_NAME "Elm_Colorselector" #define MY_CLASS_NAME "Elm_Colorselector"
@ -43,7 +41,7 @@ enum Palette_Box_Direction
}; };
static void static void
_items_del(Elm_Colorselector_Smart_Data *sd) _items_del(Elm_Colorselector_Data *sd)
{ {
Elm_Color_Item *item; Elm_Color_Item *item;
@ -60,7 +58,7 @@ _items_del(Elm_Colorselector_Smart_Data *sd)
} }
static void static void
_color_with_saturation(Elm_Colorselector_Smart_Data *sd, int *sr, int *sg, int *sb) _color_with_saturation(Elm_Colorselector_Data *sd, int *sr, int *sg, int *sb)
{ {
if (sd->er > 127) if (sd->er > 127)
*sr = 127 + (int)((double)(sd->er - 127) * sd->s); *sr = 127 + (int)((double)(sd->er - 127) * sd->s);
@ -79,7 +77,7 @@ _color_with_saturation(Elm_Colorselector_Smart_Data *sd, int *sr, int *sg, int *
} }
static void static void
_color_with_lightness(Elm_Colorselector_Smart_Data *sd, int *lr, int *lg, int *lb) _color_with_lightness(Elm_Colorselector_Data *sd, int *lr, int *lg, int *lb)
{ {
if (sd->l > 0.5) if (sd->l > 0.5)
{ {
@ -102,7 +100,7 @@ _color_with_lightness(Elm_Colorselector_Smart_Data *sd, int *lr, int *lg, int *l
} }
static void static void
_color_picker_init(Elm_Colorselector_Smart_Data *sd) _color_picker_init(Elm_Colorselector_Data *sd)
{ {
char buf[12]; char buf[12];
unsigned int *pixels; unsigned int *pixels;
@ -156,7 +154,7 @@ _color_picker_init(Elm_Colorselector_Smart_Data *sd)
} }
static void static void
_rgb_to_hsl(Elm_Colorselector_Smart_Data *sd) _rgb_to_hsl(Elm_Colorselector_Data *sd)
{ {
double r2, g2, b2; double r2, g2, b2;
double v, m, vm; double v, m, vm;
@ -203,7 +201,7 @@ _rgb_to_hsl(Elm_Colorselector_Smart_Data *sd)
} }
static Eina_Bool static Eina_Bool
_hsl_to_rgb(Elm_Colorselector_Smart_Data *sd) _hsl_to_rgb(Elm_Colorselector_Data *sd)
{ {
double sv, vsf, f, p, q, t, v; double sv, vsf, f, p, q, t, v;
double r = 0, g = 0, b = 0; double r = 0, g = 0, b = 0;
@ -295,7 +293,7 @@ _hsl_to_rgb(Elm_Colorselector_Smart_Data *sd)
} }
static void static void
_update_ergb(Elm_Colorselector_Smart_Data *sd, double x) _update_ergb(Elm_Colorselector_Data *sd, double x)
{ {
double one_six = 1.0 / 6.0; double one_six = 1.0 / 6.0;
@ -338,7 +336,7 @@ _update_ergb(Elm_Colorselector_Smart_Data *sd, double x)
} }
static void static void
_update_colorbars(Elm_Colorselector_Smart_Data *sd) _update_colorbars(Elm_Colorselector_Data *sd)
{ {
int r, g, b; int r, g, b;
evas_object_color_set evas_object_color_set
@ -457,7 +455,7 @@ _entry_changed_cb(void *data,
Evas_Object *obj, Evas_Object *obj,
void *event_info EINA_UNUSED) void *event_info EINA_UNUSED)
{ {
Elm_Colorselector_Smart_Data *sd = data; Elm_Colorselector_Data *sd = data;
Evas_Object *parent; Evas_Object *parent;
const char *text; const char *text;
int i, v; int i, v;
@ -657,7 +655,7 @@ _mouse_out_canvas(void *data, Evas *e EINA_UNUSED, void *event_info EINA_UNUSED)
} }
static void static void
_color_picker_add(Evas_Object *obj, Elm_Colorselector_Smart_Data *sd) _color_picker_add(Evas_Object *obj, Elm_Colorselector_Data *sd)
{ {
Evas_Object *ed; Evas_Object *ed;
Evas_Object *im; Evas_Object *im;
@ -1064,8 +1062,8 @@ _color_bars_add(Evas_Object *obj)
} }
} }
static void EOLIAN static Eina_Bool
_elm_colorselector_smart_theme(Eo *obj, void *_pd, va_list *list) _elm_colorselector_elm_widget_theme_apply(Eo *obj, Elm_Colorselector_Data *sd)
{ {
int i; int i;
Eina_List *elist; Eina_List *elist;
@ -1074,16 +1072,13 @@ _elm_colorselector_smart_theme(Eo *obj, void *_pd, va_list *list)
unsigned int h_pad = DEFAULT_HOR_PAD; unsigned int h_pad = DEFAULT_HOR_PAD;
unsigned int v_pad = DEFAULT_VER_PAD; unsigned int v_pad = DEFAULT_VER_PAD;
Elm_Colorselector_Smart_Data *sd = _pd; ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
if (ret) *ret = EINA_FALSE;
Eina_Bool int_ret = EINA_FALSE; Eina_Bool int_ret = EINA_FALSE;
eo_do_super(obj, MY_CLASS, elm_obj_widget_theme_apply(&int_ret)); eo_do_super(obj, MY_CLASS, elm_obj_widget_theme_apply(&int_ret));
if (!int_ret) return; if (!int_ret) return EINA_FALSE;
if (!sd->col_bars_area) return; if (!sd->col_bars_area) return EINA_FALSE;
elm_widget_theme_object_set elm_widget_theme_object_set
(obj, sd->col_bars_area, "colorselector", "bg", (obj, sd->col_bars_area, "colorselector", "bg",
@ -1131,7 +1126,7 @@ _elm_colorselector_smart_theme(Eo *obj, void *_pd, va_list *list)
elm_layout_sizing_eval(obj); elm_layout_sizing_eval(obj);
if (ret) *ret = EINA_TRUE; return EINA_TRUE;
} }
static void static void
@ -1210,12 +1205,11 @@ _full_sizing_eval(Evas_Object *obj)
_component_sizing_eval(obj); _component_sizing_eval(obj);
} }
static void EOLIAN static void
_elm_colorselector_smart_sizing_eval(Eo *obj, void *_pd, va_list *list EINA_UNUSED) _elm_colorselector_elm_layout_sizing_eval(Eo *obj, Elm_Colorselector_Data *sd)
{ {
Evas_Coord minw = -1, minh = -1; Evas_Coord minw = -1, minh = -1;
Elm_Colorselector_Smart_Data *sd = _pd;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
elm_coords_finger_size_adjust(1, &minw, 1, &minh); elm_coords_finger_size_adjust(1, &minw, 1, &minh);
@ -1486,14 +1480,13 @@ _palette_colors_load(Evas_Object *obj)
sd->config_load = EINA_TRUE; sd->config_load = EINA_TRUE;
} }
static void EOLIAN static void
_elm_colorselector_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED) _elm_colorselector_evas_smart_add(Eo *obj, Elm_Colorselector_Data *priv)
{ {
const char *hpadstr, *vpadstr; const char *hpadstr, *vpadstr;
unsigned int h_pad = DEFAULT_HOR_PAD; unsigned int h_pad = DEFAULT_HOR_PAD;
unsigned int v_pad = DEFAULT_VER_PAD; unsigned int v_pad = DEFAULT_VER_PAD;
Elm_Colorselector_Smart_Data *priv = _pd;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
eo_do_super(obj, MY_CLASS, evas_obj_smart_add()); eo_do_super(obj, MY_CLASS, evas_obj_smart_add());
@ -1578,13 +1571,12 @@ _elm_colorselector_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
elm_widget_can_focus_set(obj, EINA_TRUE); elm_widget_can_focus_set(obj, EINA_TRUE);
} }
static void EOLIAN static void
_elm_colorselector_smart_del(Eo *obj, void *_pd, va_list *list EINA_UNUSED) _elm_colorselector_evas_smart_del(Eo *obj, Elm_Colorselector_Data *sd)
{ {
int i = 0; int i = 0;
void *tmp[4]; void *tmp[4];
Elm_Colorselector_Smart_Data *sd = _pd;
evas_event_callback_del_full(evas_object_evas_get(obj), EVAS_CALLBACK_CANVAS_FOCUS_IN, _mouse_in_canvas, obj); evas_event_callback_del_full(evas_object_evas_get(obj), EVAS_CALLBACK_CANVAS_FOCUS_IN, _mouse_in_canvas, obj);
evas_event_callback_del_full(evas_object_evas_get(obj), EVAS_CALLBACK_CANVAS_FOCUS_OUT, _mouse_out_canvas, obj); evas_event_callback_del_full(evas_object_evas_get(obj), EVAS_CALLBACK_CANVAS_FOCUS_OUT, _mouse_out_canvas, obj);
@ -1664,25 +1656,20 @@ _palette_box_vertical_item_get(Eina_List* ref_item, enum Palette_Box_Direction d
return res; return res;
} }
static void EOLIAN static Eina_Bool
_elm_colorselector_smart_event(Eo *obj, void *_pd, va_list *list) _elm_colorselector_elm_widget_event(Eo *obj, Elm_Colorselector_Data *sd, Evas_Object *src, Evas_Callback_Type type, void *event_info)
{ {
Evas_Object *src = va_arg(*list, Evas_Object *); Evas_Event_Key_Down *ev = event_info;
Evas_Callback_Type type = va_arg(*list, Evas_Callback_Type);
Evas_Event_Key_Down *ev = va_arg(*list, void *);
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
Elm_Colorselector_Smart_Data *sd = _pd;
Eina_List *cl = NULL; Eina_List *cl = NULL;
Elm_Color_Item *item = NULL; Elm_Color_Item *item = NULL;
char colorbar_s[128]; char colorbar_s[128];
if (ret) *ret = EINA_FALSE;
(void) src; (void) src;
if (elm_widget_disabled_get(obj)) return; if (elm_widget_disabled_get(obj)) return EINA_FALSE;
if (type != EVAS_CALLBACK_KEY_DOWN) return; if (type != EVAS_CALLBACK_KEY_DOWN) return EINA_FALSE;
if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return; if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return EINA_FALSE;
if (!sd) return; if (!sd) return EINA_FALSE;
if (!sd->selected) sd->selected = sd->items; if (!sd->selected) sd->selected = sd->items;
if ((!strcmp(ev->key, "Left")) || if ((!strcmp(ev->key, "Left")) ||
@ -1692,7 +1679,7 @@ _elm_colorselector_smart_event(Eo *obj, void *_pd, va_list *list)
cl = eina_list_prev(sd->selected); cl = eina_list_prev(sd->selected);
else if (sd->focused == ELM_COLORSELECTOR_COMPONENTS) else if (sd->focused == ELM_COLORSELECTOR_COMPONENTS)
_button_clicked_cb(sd->cb_data[sd->sel_color_type], sd->cb_data[sd->sel_color_type]->lbt, NULL); _button_clicked_cb(sd->cb_data[sd->sel_color_type], sd->cb_data[sd->sel_color_type]->lbt, NULL);
else return; else return EINA_FALSE;
} }
else if ((!strcmp(ev->key, "Right")) || else if ((!strcmp(ev->key, "Right")) ||
((!strcmp(ev->key, "KP_Right")) && (!ev->string))) ((!strcmp(ev->key, "KP_Right")) && (!ev->string)))
@ -1701,7 +1688,7 @@ _elm_colorselector_smart_event(Eo *obj, void *_pd, va_list *list)
cl = eina_list_next(sd->selected); cl = eina_list_next(sd->selected);
else if (sd->focused == ELM_COLORSELECTOR_COMPONENTS) else if (sd->focused == ELM_COLORSELECTOR_COMPONENTS)
_button_clicked_cb(sd->cb_data[sd->sel_color_type], sd->cb_data[sd->sel_color_type]->rbt, NULL); _button_clicked_cb(sd->cb_data[sd->sel_color_type], sd->cb_data[sd->sel_color_type]->rbt, NULL);
else return; else return EINA_FALSE;
} }
else if ((!strcmp(ev->key, "Up")) || else if ((!strcmp(ev->key, "Up")) ||
((!strcmp(ev->key, "KP_Up")) && (!ev->string))) ((!strcmp(ev->key, "KP_Up")) && (!ev->string)))
@ -1722,7 +1709,7 @@ _elm_colorselector_smart_event(Eo *obj, void *_pd, va_list *list)
else else
{ {
sd->sel_color_type = HUE; sd->sel_color_type = HUE;
return; return EINA_FALSE;
} }
} }
} }
@ -1753,10 +1740,10 @@ _elm_colorselector_smart_event(Eo *obj, void *_pd, va_list *list)
/*Append color type only if next color bar is available*/ /*Append color type only if next color bar is available*/
if (edje_object_part_swallow_get(sd->col_bars_area, colorbar_s)) if (edje_object_part_swallow_get(sd->col_bars_area, colorbar_s))
sd->sel_color_type = sd->sel_color_type + 1; sd->sel_color_type = sd->sel_color_type + 1;
else return; else return EINA_FALSE;
} }
} }
else return; else return EINA_FALSE;
if (cl) if (cl)
{ {
item = eina_list_data_get(cl); item = eina_list_data_get(cl);
@ -1769,46 +1756,37 @@ _elm_colorselector_smart_event(Eo *obj, void *_pd, va_list *list)
sd->selected = cl; sd->selected = cl;
} }
else if (!cl && sd->focused == ELM_COLORSELECTOR_PALETTE) else if (!cl && sd->focused == ELM_COLORSELECTOR_PALETTE)
return; return EINA_FALSE;
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
if (ret) *ret = EINA_TRUE; return EINA_TRUE;
} }
static Eina_Bool _elm_colorselector_smart_focus_next_enable = EINA_FALSE; static Eina_Bool _elm_colorselector_smart_focus_next_enable = EINA_FALSE;
static void EOLIAN static Eina_Bool
_elm_colorselector_smart_focus_direction_manager_is(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list) _elm_colorselector_elm_widget_focus_direction_manager_is(Eo *obj EINA_UNUSED, Elm_Colorselector_Data *_pd EINA_UNUSED)
{ {
Eina_Bool *ret = va_arg(*list, Eina_Bool *); return EINA_FALSE;
*ret = EINA_FALSE;
} }
static void EOLIAN static Eina_Bool
_elm_colorselector_smart_focus_next_manager_is(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED, va_list *list) _elm_colorselector_elm_widget_focus_next_manager_is(Eo *obj EINA_UNUSED, Elm_Colorselector_Data *_pd EINA_UNUSED)
{ {
Eina_Bool *ret = va_arg(*list, Eina_Bool *); return _elm_colorselector_smart_focus_next_enable;
*ret = _elm_colorselector_smart_focus_next_enable;
} }
static void EOLIAN static Eina_Bool
_elm_colorselector_smart_focus_next(Eo *obj, void *_pd EINA_UNUSED, va_list *list) _elm_colorselector_elm_widget_focus_next(Eo *obj, Elm_Colorselector_Data *sd, Elm_Focus_Direction dir, Evas_Object **next)
{ {
Elm_Focus_Direction dir = va_arg(*list, Elm_Focus_Direction);
Evas_Object **next = va_arg(*list, Evas_Object **);
Eina_Bool *ret = va_arg(*list, Eina_Bool *);
if (ret) *ret = EINA_FALSE;
Eina_Bool int_ret;
Eina_List *items = NULL; Eina_List *items = NULL;
Eina_List *l; Eina_List *l;
Elm_Widget_Item *item; Elm_Widget_Item *item;
int i = 0; int i = 0;
Elm_Colorselector_Smart_Data *sd = _pd; if (!sd) return EINA_FALSE;
if (!sd) return;
if (!sd->items) return; if (!sd->items) return EINA_FALSE;
EINA_LIST_FOREACH(sd->items, l, item) EINA_LIST_FOREACH(sd->items, l, item)
items = eina_list_append(items, item->access_obj); items = eina_list_append(items, item->access_obj);
@ -1820,9 +1798,8 @@ _elm_colorselector_smart_focus_next(Eo *obj, void *_pd EINA_UNUSED, va_list *lis
items = eina_list_append(items, sd->cb_data[i]->rbt); items = eina_list_append(items, sd->cb_data[i]->rbt);
} }
int_ret = elm_widget_focus_list_next_get return elm_widget_focus_list_next_get
(obj, items, eina_list_data_get, dir, next); (obj, items, eina_list_data_get, dir, next);
if (ret) *ret = int_ret;
} }
static void static void
@ -1852,10 +1829,10 @@ _access_obj_process(Evas_Object *obj, Eina_Bool is_access)
} }
} }
static void EOLIAN static void
_elm_colorselector_smart_access(Eo *obj, void *_pd EINA_UNUSED, va_list *list) _elm_colorselector_elm_widget_access(Eo *obj, Elm_Colorselector_Data *_pd EINA_UNUSED, Eina_Bool access)
{ {
_elm_colorselector_smart_focus_next_enable = va_arg(*list, int); _elm_colorselector_smart_focus_next_enable = access;
_access_obj_process(obj, _elm_colorselector_smart_focus_next_enable); _access_obj_process(obj, _elm_colorselector_smart_focus_next_enable);
} }
@ -1868,8 +1845,8 @@ elm_colorselector_add(Evas_Object *parent)
return obj; return obj;
} }
static void EOLIAN static void
_constructor(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED) _elm_colorselector_eo_base_constructor(Eo *obj, Elm_Colorselector_Data *_pd EINA_UNUSED)
{ {
eo_do_super(obj, MY_CLASS, eo_constructor()); eo_do_super(obj, MY_CLASS, eo_constructor());
eo_do(obj, eo_do(obj,
@ -1877,66 +1854,24 @@ _constructor(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
evas_obj_smart_callbacks_descriptions_set(_smart_callbacks, NULL)); evas_obj_smart_callbacks_descriptions_set(_smart_callbacks, NULL));
} }
EAPI void EOLIAN static void
elm_colorselector_color_set(Evas_Object *obj, _elm_colorselector_color_set(Eo *obj, Elm_Colorselector_Data *_pd EINA_UNUSED, int r, int g, int b, int a)
int r,
int g,
int b,
int a)
{ {
ELM_COLORSELECTOR_CHECK(obj);
eo_do(obj, elm_obj_colorselector_color_set(r, g, b, a));
}
static void
_color_set(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
{
int r = va_arg(*list, int);
int g = va_arg(*list, int);
int b = va_arg(*list, int);
int a = va_arg(*list, int);
_colors_set(obj, r, g, b, a); _colors_set(obj, r, g, b, a);
} }
EAPI void EOLIAN static void
elm_colorselector_color_get(const Evas_Object *obj, _elm_colorselector_color_get(Eo *obj EINA_UNUSED, Elm_Colorselector_Data *sd, int *r, int *g, int *b, int *a)
int *r,
int *g,
int *b,
int *a)
{ {
ELM_COLORSELECTOR_CHECK(obj);
eo_do((Eo *) obj, elm_obj_colorselector_color_get(r, g, b, a));
}
static void
_color_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
{
int *r = va_arg(*list, int *);
int *g = va_arg(*list, int *);
int *b = va_arg(*list, int *);
int *a = va_arg(*list, int *);
Elm_Colorselector_Smart_Data *sd = _pd;
if (r) *r = sd->r; if (r) *r = sd->r;
if (g) *g = sd->g; if (g) *g = sd->g;
if (b) *b = sd->b; if (b) *b = sd->b;
if (a) *a = sd->a; if (a) *a = sd->a;
} }
EAPI void EOLIAN static void
elm_colorselector_mode_set(Evas_Object *obj, _elm_colorselector_mode_set(Eo *obj, Elm_Colorselector_Data *sd, Elm_Colorselector_Mode mode)
Elm_Colorselector_Mode mode)
{ {
ELM_COLORSELECTOR_CHECK(obj);
eo_do(obj, elm_obj_colorselector_mode_set(mode));
}
static void
_mode_set(Eo *obj, void *_pd, va_list *list)
{
Elm_Colorselector_Mode mode = va_arg(*list, Elm_Colorselector_Mode);
Elm_Colorselector_Smart_Data *sd = _pd;
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
Evas_Object *o; Evas_Object *o;
@ -2011,21 +1946,10 @@ _mode_set(Eo *obj, void *_pd, va_list *list)
elm_layout_sizing_eval(obj); elm_layout_sizing_eval(obj);
} }
EAPI Elm_Colorselector_Mode EOLIAN static Elm_Colorselector_Mode
elm_colorselector_mode_get(const Evas_Object *obj) _elm_colorselector_mode_get(Eo *obj EINA_UNUSED, Elm_Colorselector_Data *sd)
{ {
ELM_COLORSELECTOR_CHECK(obj) ELM_COLORSELECTOR_BOTH; return sd->mode;
Elm_Colorselector_Mode ret = ELM_COLORSELECTOR_BOTH;
eo_do((Eo *) obj, elm_obj_colorselector_mode_get(&ret));
return ret;
}
static void
_mode_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
{
Elm_Colorselector_Mode *ret = va_arg(*list, Elm_Colorselector_Mode *);
Elm_Colorselector_Smart_Data *sd = _pd;
*ret = sd->mode;
} }
EAPI void EAPI void
@ -2073,43 +1997,21 @@ elm_colorselector_palette_item_color_set(Elm_Object_Item *it,
_colors_save(WIDGET(it)); _colors_save(WIDGET(it));
} }
EAPI Elm_Object_Item * EOLIAN static Elm_Object_Item*
elm_colorselector_palette_color_add(Evas_Object *obj, _elm_colorselector_palette_color_add(Eo *obj, Elm_Colorselector_Data *sd, int r, int g, int b, int a)
int r,
int g,
int b,
int a)
{ {
ELM_COLORSELECTOR_CHECK(obj) NULL;
Elm_Object_Item *ret = NULL;
eo_do(obj, elm_obj_colorselector_palette_color_add(r, g, b, a, &ret));
return ret;
}
static void
_palette_color_add(Eo *obj, void *_pd, va_list *list)
{
int r = va_arg(*list, int);
int g = va_arg(*list, int);
int b = va_arg(*list, int);
int a = va_arg(*list, int);
Elm_Object_Item **ret = va_arg(*list, Elm_Object_Item **);
if (ret) *ret = NULL;
Elm_Color_Item *item; Elm_Color_Item *item;
Elm_Colorselector_Smart_Data *sd = _pd;
if (sd->config_load) if (sd->config_load)
{ {
_items_del(sd); _items_del(sd);
sd->config_load = EINA_FALSE; sd->config_load = EINA_FALSE;
} }
item = _item_new(obj); item = _item_new(obj);
if (!item) return; if (!item) return NULL;
item->color = ELM_NEW(Elm_Color_RGBA); item->color = ELM_NEW(Elm_Color_RGBA);
if (!item->color) return; if (!item->color) return NULL;
item->color->r = r; item->color->r = r;
item->color->g = g; item->color->g = g;
@ -2127,41 +2029,22 @@ _palette_color_add(Eo *obj, void *_pd, va_list *list)
elm_layout_sizing_eval(obj); elm_layout_sizing_eval(obj);
if (ret) *ret = (Elm_Object_Item *)item; return (Elm_Object_Item *)item;
} }
EAPI void EOLIAN static void
elm_colorselector_palette_clear(Evas_Object *obj) _elm_colorselector_palette_clear(Eo *obj, Elm_Colorselector_Data *sd)
{ {
ELM_COLORSELECTOR_CHECK(obj);
eo_do(obj, elm_obj_colorselector_palette_clear());
}
static void
_palette_clear(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
{
Elm_Colorselector_Smart_Data *sd = _pd;
_colors_remove(obj); _colors_remove(obj);
if (sd->mode == ELM_COLORSELECTOR_BOTH) if (sd->mode == ELM_COLORSELECTOR_BOTH)
sd->focused = ELM_COLORSELECTOR_COMPONENTS; sd->focused = ELM_COLORSELECTOR_COMPONENTS;
} }
EAPI const Eina_List * EOLIAN static const Eina_List*
elm_colorselector_palette_items_get(const Evas_Object *obj) _elm_colorselector_palette_items_get(Eo *obj EINA_UNUSED, Elm_Colorselector_Data *sd)
{ {
ELM_COLORSELECTOR_CHECK(obj) NULL; return sd->items;
const Eina_List *color_list = NULL;
eo_do((Eo *) obj, elm_obj_colorselector_palette_items_get(&color_list));
return color_list;
}
static void
_palette_items_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
{
const Eina_List **ret = va_arg(*list, const Eina_List **);
Elm_Colorselector_Smart_Data *sd = _pd;
*ret = sd->items;
} }
EAPI void EAPI void
@ -2208,36 +2091,15 @@ elm_colorselector_palette_item_selected_get(const Elm_Object_Item *it)
else return EINA_FALSE; else return EINA_FALSE;
} }
EAPI Elm_Object_Item * EOLIAN static Elm_Object_Item*
elm_colorselector_palette_selected_item_get(const Evas_Object *obj) _elm_colorselector_palette_selected_item_get(Eo *obj EINA_UNUSED, Elm_Colorselector_Data *sd)
{ {
ELM_COLORSELECTOR_CHECK(obj) NULL; return eina_list_data_get(sd->selected);
Elm_Object_Item *ret = NULL;
eo_do((Eo *) obj, elm_obj_colorselector_palette_selected_item_get(&ret));
return ret;
} }
static void EOLIAN static void
_palette_selected_item_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list) _elm_colorselector_palette_name_set(Eo *obj, Elm_Colorselector_Data *sd, const char *palette_name)
{ {
Elm_Object_Item **ret = va_arg(*list, Elm_Object_Item **);
Elm_Colorselector_Smart_Data *sd = _pd;
*ret = eina_list_data_get(sd->selected);
}
EAPI void
elm_colorselector_palette_name_set(Evas_Object *obj,
const char *palette_name)
{
ELM_COLORSELECTOR_CHECK(obj);
eo_do(obj, elm_obj_colorselector_palette_name_set(palette_name));
}
static void
_palette_name_set(Eo *obj, void *_pd, va_list *list)
{
const char *palette_name = va_arg(*list, const char *);
Elm_Colorselector_Smart_Data *sd = _pd;
EINA_SAFETY_ON_NULL_RETURN(palette_name); EINA_SAFETY_ON_NULL_RETURN(palette_name);
if (!strcmp(sd->palette_name, palette_name)) return; if (!strcmp(sd->palette_name, palette_name)) return;
@ -2247,82 +2109,19 @@ _palette_name_set(Eo *obj, void *_pd, va_list *list)
_palette_colors_load(obj); _palette_colors_load(obj);
} }
EAPI const char * EOLIAN static const char*
elm_colorselector_palette_name_get(const Evas_Object *obj) _elm_colorselector_palette_name_get(Eo *obj EINA_UNUSED, Elm_Colorselector_Data *sd)
{ {
ELM_COLORSELECTOR_CHECK(obj) NULL; return sd->palette_name;
const char *ret = NULL;
eo_do((Eo *) obj, elm_obj_colorselector_palette_name_get(&ret));
return ret;
} }
static void static void
_palette_name_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list) _elm_colorselector_class_constructor(Eo_Class *klass)
{ {
const char **ret = va_arg(*list, const char **);
Elm_Colorselector_Smart_Data *sd = _pd;
*ret = sd->palette_name;
}
static void
_class_constructor(Eo_Class *klass)
{
const Eo_Op_Func_Description func_desc[] = {
EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_CONSTRUCTOR), _constructor),
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_ADD), _elm_colorselector_smart_add),
EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_DEL), _elm_colorselector_smart_del),
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_THEME_APPLY), _elm_colorselector_smart_theme),
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_EVENT), _elm_colorselector_smart_event),
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_FOCUS_NEXT_MANAGER_IS), _elm_colorselector_smart_focus_next_manager_is),
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_FOCUS_DIRECTION_MANAGER_IS), _elm_colorselector_smart_focus_direction_manager_is),
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_FOCUS_NEXT), _elm_colorselector_smart_focus_next),
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_ACCESS), _elm_colorselector_smart_access),
EO_OP_FUNC(ELM_OBJ_LAYOUT_ID(ELM_OBJ_LAYOUT_SUB_ID_SIZING_EVAL), _elm_colorselector_smart_sizing_eval),
EO_OP_FUNC(ELM_OBJ_COLORSELECTOR_ID(ELM_OBJ_COLORSELECTOR_SUB_ID_COLOR_SET), _color_set),
EO_OP_FUNC(ELM_OBJ_COLORSELECTOR_ID(ELM_OBJ_COLORSELECTOR_SUB_ID_COLOR_GET), _color_get),
EO_OP_FUNC(ELM_OBJ_COLORSELECTOR_ID(ELM_OBJ_COLORSELECTOR_SUB_ID_MODE_SET), _mode_set),
EO_OP_FUNC(ELM_OBJ_COLORSELECTOR_ID(ELM_OBJ_COLORSELECTOR_SUB_ID_MODE_GET), _mode_get),
EO_OP_FUNC(ELM_OBJ_COLORSELECTOR_ID(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_COLOR_ADD), _palette_color_add),
EO_OP_FUNC(ELM_OBJ_COLORSELECTOR_ID(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_CLEAR), _palette_clear),
EO_OP_FUNC(ELM_OBJ_COLORSELECTOR_ID(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_SELECTED_ITEM_GET), _palette_selected_item_get),
EO_OP_FUNC(ELM_OBJ_COLORSELECTOR_ID(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_ITEMS_GET), _palette_items_get),
EO_OP_FUNC(ELM_OBJ_COLORSELECTOR_ID(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_NAME_SET), _palette_name_set),
EO_OP_FUNC(ELM_OBJ_COLORSELECTOR_ID(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_NAME_GET), _palette_name_get),
EO_OP_FUNC_SENTINEL
};
eo_class_funcs_set(klass, func_desc);
evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass); evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
if (_elm_config->access_mode == ELM_ACCESS_MODE_ON) if (_elm_config->access_mode == ELM_ACCESS_MODE_ON)
_elm_colorselector_smart_focus_next_enable = EINA_TRUE; _elm_colorselector_smart_focus_next_enable = EINA_TRUE;
} }
static const Eo_Op_Description op_desc[] = {
EO_OP_DESCRIPTION(ELM_OBJ_COLORSELECTOR_SUB_ID_COLOR_SET, "Set color to colorselector."), #include "elm_colorselector.eo.c"
EO_OP_DESCRIPTION(ELM_OBJ_COLORSELECTOR_SUB_ID_COLOR_GET, "Get current color from colorselector."),
EO_OP_DESCRIPTION(ELM_OBJ_COLORSELECTOR_SUB_ID_MODE_SET, "Set Colorselector's mode."),
EO_OP_DESCRIPTION(ELM_OBJ_COLORSELECTOR_SUB_ID_MODE_GET, "Get Colorselector's mode."),
EO_OP_DESCRIPTION(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_COLOR_ADD, "Add a new color item to palette."),
EO_OP_DESCRIPTION(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_CLEAR, "Clear the palette items."),
EO_OP_DESCRIPTION(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_SELECTED_ITEM_GET, "Get Palette's current selected item"),
EO_OP_DESCRIPTION(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_ITEMS_GET, "Get palette's item list"),
EO_OP_DESCRIPTION(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_NAME_SET, "Set current palette's name."),
EO_OP_DESCRIPTION(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_NAME_GET, "Get current palette's name."),
EO_OP_DESCRIPTION_SENTINEL
};
static const Eo_Class_Description class_desc = {
EO_VERSION,
MY_CLASS_NAME,
EO_CLASS_TYPE_REGULAR,
EO_CLASS_DESCRIPTION_OPS(&ELM_OBJ_COLORSELECTOR_BASE_ID, op_desc, ELM_OBJ_COLORSELECTOR_SUB_ID_LAST),
NULL,
sizeof(Elm_Colorselector_Smart_Data),
_class_constructor,
NULL
};
EO_DEFINE_CLASS(elm_obj_colorselector_class_get, &class_desc, ELM_OBJ_LAYOUT_CLASS, NULL);

View File

@ -0,0 +1,149 @@
class Elm_Colorselector (Elm_Layout)
{
eo_prefix: elm_obj_colorselector;
properties {
color {
set {
/*@
Set color to colorselector
@ingroup Colorselector */
}
get {
/*@
Get current color from colorselector
@ingroup Colorselector */
}
values {
int r; /*@ r-value of color */
int g; /*@ g-value of color */
int b; /*@ b-value of color */
int a; /*@ a-value of color */
}
}
palette_name {
set {
/*@
Set current palette's name
When colorpalette name is set, colors will be loaded from and saved to config
using the set name. If no name is set then colors will be loaded from or
saved to "default" config.
@ingroup Colorselector */
}
get {
/*@
Get current palette's name
@return Name of palette
Returns the currently set palette name using which colors will be
saved/loaded in to config.
@ingroup Colorselector */
}
values {
const char *palette_name; /*@ Name of palette */
}
}
mode {
set {
/*@
Set Colorselector's mode.
Colorselector supports three modes palette only, selector only and both.
@ingroup Colorselector */
}
get {
/*@
Get Colorselector's mode.
@return mode The current mode of colorselector
@ingroup Colorselector */
}
values {
Elm_Colorselector_Mode mode; /*@ Elm_Colorselector_Mode */
}
}
palette_items {
get {
/*@
Get list of palette items.
@return The list of color palette items.
Note That palette item list is internally managed by colorselector widget and
it should not be freed/modified by application.
@since 1.9
@ingroup Colorselector */
return const Eina_List *;
}
}
palette_selected_item {
get {
/*@
Get the selected item in colorselector palette.
@return The selected item, or NULL if none is selected.
@since 1.9
@ingroup Colorselector */
return Elm_Object_Item *;
}
}
}
methods {
palette_color_add {
/*@
Add a new color item to palette.
@return A new color palette Item.
@ingroup Colorselector */
return Elm_Object_Item *;
params {
@in int r; /*@ r-value of color */
@in int g; /*@ g-value of color */
@in int b; /*@ b-value of color */
@in int a; /*@ a-value of color */
}
}
palette_clear {
/*@
Clear the palette items.
@ingroup Colorselector */
}
}
implements {
class::constructor;
Eo_Base::constructor;
Evas_Smart::add;
Evas_Smart::del;
Elm_Widget::theme_apply;
Elm_Widget::focus_next_manager_is;
Elm_Widget::focus_next;
Elm_Widget::focus_direction_manager_is;
Elm_Widget::access;
Elm_Widget::event;
Elm_Layout::sizing_eval;
}
events {
color,item,selected;
color,item,longpressed;
changed;
language,changed;
access,changed;
focused;
unfocused;
}
}

View File

@ -1,3 +1,5 @@
#include "elm_colorselector.eo.h"
#if 0
#define ELM_OBJ_COLORSELECTOR_CLASS elm_obj_colorselector_class_get() #define ELM_OBJ_COLORSELECTOR_CLASS elm_obj_colorselector_class_get()
const Eo_Class *elm_obj_colorselector_class_get(void) EINA_CONST; const Eo_Class *elm_obj_colorselector_class_get(void) EINA_CONST;
@ -166,3 +168,4 @@ enum
* @ingroup Colorselector * @ingroup Colorselector
*/ */
#define elm_obj_colorselector_palette_name_get(ret) ELM_OBJ_COLORSELECTOR_ID(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_NAME_GET), EO_TYPECHECK(const char **, ret) #define elm_obj_colorselector_palette_name_get(ret) ELM_OBJ_COLORSELECTOR_ID(ELM_OBJ_COLORSELECTOR_SUB_ID_PALETTE_NAME_GET), EO_TYPECHECK(const char **, ret)
#endif

View File

@ -19,8 +19,8 @@ typedef struct _Color_Bar_Data Color_Bar_Data;
/** /**
* Base layout smart data extended with colorselector instance data. * Base layout smart data extended with colorselector instance data.
*/ */
typedef struct _Elm_Colorselector_Smart_Data Elm_Colorselector_Smart_Data; typedef struct _Elm_Colorselector_Data Elm_Colorselector_Data;
struct _Elm_Colorselector_Smart_Data struct _Elm_Colorselector_Data
{ {
/* for the 3 displaying modes of the widget */ /* for the 3 displaying modes of the widget */
Evas_Object *col_bars_area; Evas_Object *col_bars_area;
@ -95,7 +95,7 @@ struct _Elm_Color_Item
*/ */
#define ELM_COLORSELECTOR_DATA_GET(o, sd) \ #define ELM_COLORSELECTOR_DATA_GET(o, sd) \
Elm_Colorselector_Smart_Data * sd = eo_data_scope_get(o, ELM_OBJ_COLORSELECTOR_CLASS) Elm_Colorselector_Data * sd = eo_data_scope_get(o, ELM_OBJ_COLORSELECTOR_CLASS)
#define ELM_COLORSELECTOR_DATA_GET_OR_RETURN(o, ptr) \ #define ELM_COLORSELECTOR_DATA_GET_OR_RETURN(o, ptr) \
ELM_COLORSELECTOR_DATA_GET(o, ptr); \ ELM_COLORSELECTOR_DATA_GET(o, ptr); \