oooh fix some infinite loops in entry .. and oh so much make color
specture.selector/sliders WORK again... properly. SVN revision: 79557
This commit is contained in:
parent
4d880b56ec
commit
cff3bfb61b
|
@ -39,7 +39,7 @@ e_color_dialog_new(E_Container *con, const E_Color *color, Eina_Bool alpha_enabl
|
||||||
o = e_widget_csel_add(dia->dia->win->evas, dia->color, alpha_enabled);
|
o = e_widget_csel_add(dia->dia->win->evas, dia->color, alpha_enabled);
|
||||||
evas_object_show(o);
|
evas_object_show(o);
|
||||||
e_widget_size_min_get(o, &mw, &mh);
|
e_widget_size_min_get(o, &mw, &mh);
|
||||||
e_dialog_content_set(dia->dia, o, 460, 260);
|
e_dialog_content_set(dia->dia, o, mw, mh);
|
||||||
e_widget_on_change_hook_set(o, _e_color_dialog_cb_csel_change, dia);
|
e_widget_on_change_hook_set(o, _e_color_dialog_cb_csel_change, dia);
|
||||||
|
|
||||||
/* buttons at the bottom */
|
/* buttons at the bottom */
|
||||||
|
|
|
@ -17,6 +17,7 @@ struct _E_Entry_Smart_Data
|
||||||
Evas_Coord theme_height;
|
Evas_Coord theme_height;
|
||||||
int preedit_start_pos;
|
int preedit_start_pos;
|
||||||
int preedit_end_pos;
|
int preedit_end_pos;
|
||||||
|
int changing;
|
||||||
Eina_Bool enabled : 1;
|
Eina_Bool enabled : 1;
|
||||||
Eina_Bool noedit : 1;
|
Eina_Bool noedit : 1;
|
||||||
Eina_Bool focused : 1;
|
Eina_Bool focused : 1;
|
||||||
|
@ -105,6 +106,7 @@ e_entry_text_set(Evas_Object *entry, const char *_text)
|
||||||
{
|
{
|
||||||
E_Entry_Smart_Data *sd;
|
E_Entry_Smart_Data *sd;
|
||||||
char *text = NULL;
|
char *text = NULL;
|
||||||
|
const char *otext;
|
||||||
|
|
||||||
if (evas_object_smart_smart_get(entry) != _e_entry_smart) SMARTERRNR();
|
if (evas_object_smart_smart_get(entry) != _e_entry_smart) SMARTERRNR();
|
||||||
if ((!entry) || (!(sd = evas_object_smart_data_get(entry))))
|
if ((!entry) || (!(sd = evas_object_smart_data_get(entry))))
|
||||||
|
@ -113,12 +115,15 @@ e_entry_text_set(Evas_Object *entry, const char *_text)
|
||||||
text = evas_textblock_text_utf8_to_markup(
|
text = evas_textblock_text_utf8_to_markup(
|
||||||
edje_object_part_object_get(sd->entry_object, ENTRY_PART_NAME),
|
edje_object_part_object_get(sd->entry_object, ENTRY_PART_NAME),
|
||||||
_text);
|
_text);
|
||||||
if ((text) && (_text) && (!strcmp(text, _text))) return;
|
otext = edje_object_part_text_get(sd->entry_object, ENTRY_PART_NAME);
|
||||||
if ((!text) && (!_text)) return;
|
if ((text) && (otext) && (!strcmp(text, otext))) return;
|
||||||
|
if ((!text) && (!otext)) return;
|
||||||
edje_object_part_text_set(sd->entry_object, ENTRY_PART_NAME, text);
|
edje_object_part_text_set(sd->entry_object, ENTRY_PART_NAME, text);
|
||||||
|
sd->changing++;
|
||||||
|
edje_object_message_signal_process(sd->entry_object);
|
||||||
|
sd->changing--;
|
||||||
evas_object_smart_callback_call(entry, "changed", NULL);
|
evas_object_smart_callback_call(entry, "changed", NULL);
|
||||||
if (text)
|
if (text) free(text);
|
||||||
free(text);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -657,7 +662,7 @@ _entry_changed_signal_cb(void *data,
|
||||||
|
|
||||||
if ((!object) || !(sd = evas_object_smart_data_get(object)))
|
if ((!object) || !(sd = evas_object_smart_data_get(object)))
|
||||||
return;
|
return;
|
||||||
|
if (sd->changing) return;
|
||||||
evas_object_smart_callback_call(object, "changed", NULL);
|
evas_object_smart_callback_call(object, "changed", NULL);
|
||||||
edje_object_size_min_calc(sd->entry_object, &sd->min_width, &sd->height);
|
edje_object_size_min_calc(sd->entry_object, &sd->min_width, &sd->height);
|
||||||
_entry_recalc_size(object);
|
_entry_recalc_size(object);
|
||||||
|
|
|
@ -128,14 +128,14 @@ _e_wid_cb_color_changed(void *data, Evas_Object *o)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* update the spectrum */
|
/* update the spectrum */
|
||||||
if (o != wd->spectrum && changed != -1)
|
if (o != wd->spectrum/* && changed != -1*/)
|
||||||
{
|
{
|
||||||
if (wd->mode == changed ||
|
if (wd->mode == changed ||
|
||||||
(wd->mode >= E_COLOR_COMPONENT_H && changed <= E_COLOR_COMPONENT_B) ||
|
(wd->mode >= E_COLOR_COMPONENT_H && changed <= E_COLOR_COMPONENT_B) ||
|
||||||
(wd->mode <= E_COLOR_COMPONENT_B && changed >= E_COLOR_COMPONENT_H))
|
(wd->mode <= E_COLOR_COMPONENT_B && changed >= E_COLOR_COMPONENT_H))
|
||||||
e_widget_spectrum_update(wd->spectrum, 1);
|
e_widget_spectrum_update(wd->spectrum, 1);
|
||||||
else
|
else
|
||||||
e_widget_spectrum_update(wd->spectrum, 0);
|
e_widget_spectrum_update(wd->spectrum, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
e_widget_color_well_update(wd->well);
|
e_widget_color_well_update(wd->well);
|
||||||
|
@ -152,26 +152,23 @@ _e_wid_cb_color_changed(void *data, Evas_Object *o)
|
||||||
case E_COLOR_COMPONENT_R:
|
case E_COLOR_COMPONENT_R:
|
||||||
snprintf(buf, 10, "%i", wd->cv->r);
|
snprintf(buf, 10, "%i", wd->cv->r);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case E_COLOR_COMPONENT_G:
|
case E_COLOR_COMPONENT_G:
|
||||||
snprintf(buf, 10, "%i", wd->cv->g);
|
snprintf(buf, 10, "%i", wd->cv->g);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case E_COLOR_COMPONENT_B:
|
case E_COLOR_COMPONENT_B:
|
||||||
snprintf(buf, 10, "%i", wd->cv->b);
|
snprintf(buf, 10, "%i", wd->cv->b);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case E_COLOR_COMPONENT_H:
|
case E_COLOR_COMPONENT_H:
|
||||||
snprintf(buf, 10, "%.0f", wd->cv->h);
|
snprintf(buf, 10, "%.0f", wd->cv->h);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case E_COLOR_COMPONENT_S:
|
case E_COLOR_COMPONENT_S:
|
||||||
snprintf(buf, 10, "%.2f", wd->cv->s);
|
snprintf(buf, 10, "%.2f", wd->cv->s);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case E_COLOR_COMPONENT_V:
|
case E_COLOR_COMPONENT_V:
|
||||||
snprintf(buf, 10, "%.2f", wd->cv->v);
|
snprintf(buf, 10, "%.2f", wd->cv->v);
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
e_widget_entry_text_set(eo, buf);
|
e_widget_entry_text_set(eo, buf);
|
||||||
i++;
|
i++;
|
||||||
|
@ -197,6 +194,7 @@ e_widget_csel_add(Evas *evas, E_Color *color, Eina_Bool alpha_enabled)
|
||||||
E_Radio_Group *grp = NULL;
|
E_Radio_Group *grp = NULL;
|
||||||
char *labels[6] = { N_("R"), N_("G"), N_("B"), N_("H"), N_("S"), N_("V") };
|
char *labels[6] = { N_("R"), N_("G"), N_("B"), N_("H"), N_("S"), N_("V") };
|
||||||
E_Widget_Data *wd;
|
E_Widget_Data *wd;
|
||||||
|
Evas_Coord mw, mh;
|
||||||
|
|
||||||
obj = e_widget_add(evas);
|
obj = e_widget_add(evas);
|
||||||
e_widget_del_hook_set(obj, _e_wid_del_hook);
|
e_widget_del_hook_set(obj, _e_wid_del_hook);
|
||||||
|
@ -245,6 +243,9 @@ e_widget_csel_add(Evas *evas, E_Color *color, Eina_Bool alpha_enabled)
|
||||||
case E_COLOR_COMPONENT_V:
|
case E_COLOR_COMPONENT_V:
|
||||||
snprintf(wd->values[i], 10, "%.2f", wd->cv->v);
|
snprintf(wd->values[i], 10, "%.2f", wd->cv->v);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
o = e_widget_radio_add(evas, _(labels[i]), i, grp);
|
o = e_widget_radio_add(evas, _(labels[i]), i, grp);
|
||||||
|
@ -257,13 +258,14 @@ e_widget_csel_add(Evas *evas, E_Color *color, Eina_Bool alpha_enabled)
|
||||||
evas_object_show(o);
|
evas_object_show(o);
|
||||||
wd->sliders = eina_list_append(wd->sliders, o);
|
wd->sliders = eina_list_append(wd->sliders, o);
|
||||||
e_widget_on_change_hook_set(o, _e_wid_cb_color_changed, wd);
|
e_widget_on_change_hook_set(o, _e_wid_cb_color_changed, wd);
|
||||||
e_widget_table_object_append(frame, o, 1, i, 1, 1, 1, 1, 1, 0);
|
e_widget_size_min_set(o, 32, 16);
|
||||||
|
e_widget_table_object_append(frame, o, 1, i, 6, 1, 1, 1, 1, 0);
|
||||||
|
|
||||||
o = e_widget_entry_add(evas, &(wd->values[i]), NULL, NULL, NULL);
|
o = e_widget_entry_add(evas, &(wd->values[i]), NULL, NULL, NULL);
|
||||||
e_widget_sub_object_add(obj, o);
|
e_widget_sub_object_add(obj, o);
|
||||||
evas_object_show(o);
|
evas_object_show(o);
|
||||||
wd->entries = eina_list_append(wd->entries, o);
|
wd->entries = eina_list_append(wd->entries, o);
|
||||||
e_widget_table_object_append(frame, o, 2, i, 1, 1, 1, 1, 1, 1);
|
e_widget_table_object_append(frame, o, 7, i, 1, 1, 1, 1, 1, 0);
|
||||||
e_widget_on_change_hook_set(o, _e_wid_cb_color_changed, wd);
|
e_widget_on_change_hook_set(o, _e_wid_cb_color_changed, wd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -274,32 +276,36 @@ e_widget_csel_add(Evas *evas, E_Color *color, Eina_Bool alpha_enabled)
|
||||||
o = e_widget_slider_add(evas, 1, 0, "%0.0f", 0, 255, 1, 0, NULL,
|
o = e_widget_slider_add(evas, 1, 0, "%0.0f", 0, 255, 1, 0, NULL,
|
||||||
&(wd->cv->a), 100);
|
&(wd->cv->a), 100);
|
||||||
e_widget_on_change_hook_set(o, _e_wid_cb_alpha_changed, wd);
|
e_widget_on_change_hook_set(o, _e_wid_cb_alpha_changed, wd);
|
||||||
e_widget_table_object_append(frame, o, 1, i, 2, 1, 1, 1, 0, 0);
|
e_widget_table_object_append(frame, o, 1, i, 10, 1, 1, 1, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
e_widget_table_object_append(table, frame, 2, 0, 1, 2, 1, 0, 1, 0);
|
||||||
|
|
||||||
o = e_widget_spectrum_add(evas, wd->mode, wd->cv);
|
o = e_widget_spectrum_add(evas, wd->mode, wd->cv);
|
||||||
e_widget_sub_object_add(obj, o);
|
e_widget_sub_object_add(obj, o);
|
||||||
evas_object_show(o);
|
evas_object_show(o);
|
||||||
e_widget_on_change_hook_set(o, _e_wid_cb_color_changed, wd);
|
e_widget_on_change_hook_set(o, _e_wid_cb_color_changed, wd);
|
||||||
wd->spectrum = o;
|
wd->spectrum = o;
|
||||||
e_widget_table_object_append(table, o, 1, 1, 1, 1, 1, 1, 1, 1);
|
e_widget_size_min_set(o, 120, 120);
|
||||||
|
e_widget_table_object_append(table, o, 0, 0, 1, 2, 1, 1, 1, 1);
|
||||||
|
|
||||||
o = e_widget_cslider_add(evas, wd->mode, wd->cv, 1, 1);
|
o = e_widget_cslider_add(evas, wd->mode, wd->cv, 1, 1);
|
||||||
e_widget_sub_object_add(obj, o);
|
e_widget_sub_object_add(obj, o);
|
||||||
e_widget_on_change_hook_set(o, _e_wid_cb_color_changed, wd);
|
e_widget_on_change_hook_set(o, _e_wid_cb_color_changed, wd);
|
||||||
e_widget_size_min_set(o, 30, 50);
|
e_widget_size_min_set(o, 16, 16);
|
||||||
evas_object_show(o);
|
evas_object_show(o);
|
||||||
wd->vert = o;
|
wd->vert = o;
|
||||||
e_widget_table_object_append(table, o, 2, 1, 1, 1, 0, 1, 0, 1);
|
e_widget_table_object_append(table, o, 1, 0, 1, 2, 0, 1, 0, 1);
|
||||||
|
|
||||||
e_widget_table_object_append(table, frame, 3, 1, 1, 1, 1, 1, 1, 1);
|
|
||||||
|
|
||||||
o = e_widget_color_well_add(evas, wd->cv, 0);
|
o = e_widget_color_well_add(evas, wd->cv, 0);
|
||||||
e_widget_sub_object_add(obj, o);
|
e_widget_sub_object_add(obj, o);
|
||||||
evas_object_show(o);
|
evas_object_show(o);
|
||||||
evas_object_resize(o, 20, 20);
|
|
||||||
wd->well = o;
|
wd->well = o;
|
||||||
e_widget_table_object_append(table, o, 3, 2, 1, 1, 1, 1, 1, 1);
|
e_widget_size_min_set(o, 32, 32);
|
||||||
|
e_widget_table_object_append(table, o, 0, 2, 3, 1, 1, 1, 0, 0);
|
||||||
|
|
||||||
|
e_widget_size_min_get(table, &mw, &mh);
|
||||||
|
e_widget_size_min_set(obj, mw, mh);
|
||||||
|
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,8 +8,6 @@ struct _E_Widget_Data
|
||||||
Evas_Object *o_grad;
|
Evas_Object *o_grad;
|
||||||
Evas_Object *o_event;
|
Evas_Object *o_event;
|
||||||
|
|
||||||
Eina_List *o_hgrad;
|
|
||||||
|
|
||||||
Evas_Coord x, y, w, h;
|
Evas_Coord x, y, w, h;
|
||||||
|
|
||||||
int vertical;
|
int vertical;
|
||||||
|
@ -37,9 +35,9 @@ static void _e_wid_cb_drag_start(void *data, Evas_Object *obj, const char *emiss
|
||||||
static void _e_wid_cb_drag_stop(void *data, Evas_Object *obj, const char *emission, const char *source);
|
static void _e_wid_cb_drag_stop(void *data, Evas_Object *obj, const char *emission, const char *source);
|
||||||
static void _e_wid_cb_drag(void *data, Evas_Object *obj, const char *emission, const char *source);
|
static void _e_wid_cb_drag(void *data, Evas_Object *obj, const char *emission, const char *source);
|
||||||
|
|
||||||
/* static void _e_wid_cb_down(void *data, Evas *e, Evas_Object *obj, void *event_info); */
|
static void _e_wid_cb_down(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||||
/* static void _e_wid_cb_move(void *data, Evas *e, Evas_Object *obj, void *event_info); */
|
static void _e_wid_cb_move(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||||
/* static void _e_wid_cb_up(void *data, Evas *e, Evas_Object *obj, void *event_info); */
|
static void _e_wid_cb_up(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||||
|
|
||||||
Evas_Object *
|
Evas_Object *
|
||||||
e_widget_cslider_add(Evas *evas, E_Color_Component mode, E_Color *color, int vertical, int fixed)
|
e_widget_cslider_add(Evas *evas, E_Color_Component mode, E_Color *color, int vertical, int fixed)
|
||||||
|
@ -63,7 +61,6 @@ e_widget_cslider_add(Evas *evas, E_Color_Component mode, E_Color *color, int ver
|
||||||
wd->mode = mode;
|
wd->mode = mode;
|
||||||
wd->color = color;
|
wd->color = color;
|
||||||
wd->prev = calloc(1, sizeof (E_Color));
|
wd->prev = calloc(1, sizeof (E_Color));
|
||||||
wd->o_hgrad = NULL;
|
|
||||||
|
|
||||||
o = edje_object_add(evas);
|
o = edje_object_add(evas);
|
||||||
wd->o_cslider = o;
|
wd->o_cslider = o;
|
||||||
|
@ -76,6 +73,8 @@ e_widget_cslider_add(Evas *evas, E_Color_Component mode, E_Color *color, int ver
|
||||||
evas_object_show(o);
|
evas_object_show(o);
|
||||||
edje_object_size_min_calc(o, &mw, &mh);
|
edje_object_size_min_calc(o, &mw, &mh);
|
||||||
e_widget_size_min_set(obj, mw, mh);
|
e_widget_size_min_set(obj, mw, mh);
|
||||||
|
evas_object_event_callback_add(o, EVAS_CALLBACK_MOVE, _e_wid_move, wd);
|
||||||
|
evas_object_event_callback_add(o, EVAS_CALLBACK_RESIZE, _e_wid_resize, wd);
|
||||||
|
|
||||||
edje_object_signal_callback_add(wd->o_cslider, "drag,start", "*", _e_wid_cb_drag_start, obj);
|
edje_object_signal_callback_add(wd->o_cslider, "drag,start", "*", _e_wid_cb_drag_start, obj);
|
||||||
edje_object_signal_callback_add(wd->o_cslider, "drag", "*", _e_wid_cb_drag, obj);
|
edje_object_signal_callback_add(wd->o_cslider, "drag", "*", _e_wid_cb_drag, obj);
|
||||||
|
@ -86,19 +85,19 @@ e_widget_cslider_add(Evas *evas, E_Color_Component mode, E_Color *color, int ver
|
||||||
e_widget_resize_object_set(obj, o);
|
e_widget_resize_object_set(obj, o);
|
||||||
|
|
||||||
/* add gradient obj */
|
/* add gradient obj */
|
||||||
o = evas_object_rectangle_add(evas);
|
o = evas_object_image_filled_add(evas);
|
||||||
e_widget_sub_object_add(obj, o);
|
e_widget_sub_object_add(obj, o);
|
||||||
/* evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, _e_wid_cb_down, obj); */
|
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, _e_wid_cb_down, obj);
|
||||||
/* evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_MOVE, _e_wid_cb_move, obj); */
|
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_MOVE, _e_wid_cb_move, obj);
|
||||||
/* evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_UP, _e_wid_cb_up, obj); */
|
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_UP, _e_wid_cb_up, obj);
|
||||||
evas_object_color_set(o, 255, 255, 255, 255);
|
evas_object_color_set(o, 255, 255, 255, 255);
|
||||||
wd->o_grad = o;
|
wd->o_grad = o;
|
||||||
|
|
||||||
edje_object_part_swallow(wd->o_cslider, "e.swallow.content", o);
|
edje_object_part_swallow(wd->o_cslider, "e.swallow.content", o);
|
||||||
|
|
||||||
o = evas_object_rectangle_add(evas);
|
o = evas_object_rectangle_add(evas);
|
||||||
|
evas_object_repeat_events_set(o, EINA_TRUE);
|
||||||
e_widget_sub_object_add(obj, o);
|
e_widget_sub_object_add(obj, o);
|
||||||
evas_object_event_callback_add(o, EVAS_CALLBACK_MOVE, _e_wid_move, wd);
|
|
||||||
evas_object_show(o);
|
evas_object_show(o);
|
||||||
evas_object_color_set(o, 0, 0, 0, 0);
|
evas_object_color_set(o, 0, 0, 0, 0);
|
||||||
wd->o_event = o;
|
wd->o_event = o;
|
||||||
|
@ -112,11 +111,11 @@ static void
|
||||||
_e_wid_move(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
|
_e_wid_move(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
|
||||||
{
|
{
|
||||||
E_Widget_Data *wd;
|
E_Widget_Data *wd;
|
||||||
/* Evas_Coord x, y; */
|
Evas_Coord x, y;
|
||||||
|
|
||||||
wd = data;
|
wd = data;
|
||||||
/* evas_object_geometry_get(obj, &x, &y, NULL, NULL); */
|
evas_object_geometry_get(obj, &x, &y, NULL, NULL);
|
||||||
/* evas_object_move(wd->o_grad, x, y); */
|
evas_object_move(wd->o_event, x, y);
|
||||||
_e_wid_update(wd);
|
_e_wid_update(wd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,11 +123,11 @@ static void
|
||||||
_e_wid_resize(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
|
_e_wid_resize(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
|
||||||
{
|
{
|
||||||
E_Widget_Data *wd;
|
E_Widget_Data *wd;
|
||||||
/* Evas_Coord w, h; */
|
Evas_Coord w, h;
|
||||||
|
|
||||||
wd = data;
|
wd = data;
|
||||||
/* evas_object_geometry_get(obj, NULL, NULL, &w, &h); */
|
evas_object_geometry_get(obj, NULL, NULL, &w, &h);
|
||||||
/* evas_object_resize(wd->o_grad, w, h); */
|
evas_object_resize(wd->o_event, w, h);
|
||||||
_e_wid_update(wd);
|
_e_wid_update(wd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -217,8 +216,6 @@ _e_wid_update(E_Widget_Data *wd)
|
||||||
|
|
||||||
if (changed)
|
if (changed)
|
||||||
{
|
{
|
||||||
Evas_Object *o;
|
|
||||||
|
|
||||||
if (wd->fixed)
|
if (wd->fixed)
|
||||||
_e_wid_update_fixed(wd);
|
_e_wid_update_fixed(wd);
|
||||||
else
|
else
|
||||||
|
@ -227,17 +224,6 @@ _e_wid_update(E_Widget_Data *wd)
|
||||||
wd->x = x; wd->y = y;
|
wd->x = x; wd->y = y;
|
||||||
wd->w = w; wd->h = h;
|
wd->w = w; wd->h = h;
|
||||||
memcpy(wd->prev, wd->color, sizeof (E_Color));
|
memcpy(wd->prev, wd->color, sizeof (E_Color));
|
||||||
|
|
||||||
if (wd->mode != E_COLOR_COMPONENT_H)
|
|
||||||
{
|
|
||||||
EINA_LIST_FREE(wd->o_hgrad, o)
|
|
||||||
evas_object_del(o);
|
|
||||||
evas_object_show(wd->o_grad);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
evas_object_hide(wd->o_grad);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -246,37 +232,70 @@ _e_wid_gradient_set(Evas_Object *o, Eina_Bool orientation,
|
||||||
int rf, int gf, int bf,
|
int rf, int gf, int bf,
|
||||||
int rt, int gt, int bt)
|
int rt, int gt, int bt)
|
||||||
{
|
{
|
||||||
static Evas_Map *m = NULL;
|
unsigned int *pixels, *p;
|
||||||
|
int x, r, g, b;
|
||||||
|
|
||||||
if (!m) m = evas_map_new(4);
|
if (!orientation)
|
||||||
evas_map_util_points_populate_from_object(m, o);
|
evas_object_image_size_set(o, 256, 1);
|
||||||
|
|
||||||
if (orientation)
|
|
||||||
{
|
|
||||||
evas_map_point_color_set(m, 0, rf, gf, bf, 255);
|
|
||||||
evas_map_point_color_set(m, 1, rf, gf, bf, 255);
|
|
||||||
evas_map_point_color_set(m, 2, rt, gt, bt, 255);
|
|
||||||
evas_map_point_color_set(m, 3, rt, gt, bt, 255);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
|
evas_object_image_size_set(o, 1, 256);
|
||||||
|
pixels = evas_object_image_data_get(o, EINA_TRUE);
|
||||||
|
if (pixels)
|
||||||
{
|
{
|
||||||
/* Rotate by 270° */
|
p = pixels;
|
||||||
evas_map_point_color_set(m, 0, rf, gf, bf, 255);
|
for (x = 0; x < 256; x++)
|
||||||
evas_map_point_color_set(m, 1, rt, gt, bt, 255);
|
{
|
||||||
evas_map_point_color_set(m, 2, rt, gt, bt, 255);
|
r = ((rf * (255 - x)) + (rt * x)) / 255;
|
||||||
evas_map_point_color_set(m, 3, rf, gf, bf, 255);
|
g = ((gf * (255 - x)) + (gt * x)) / 255;
|
||||||
|
b = ((bf * (255 - x)) + (bt * x)) / 255;
|
||||||
|
*p = 0xff000000 | (r << 16) | (g << 8) | (b);
|
||||||
|
p++;
|
||||||
}
|
}
|
||||||
|
evas_object_image_data_set(o, pixels);
|
||||||
|
evas_object_image_data_update_add(o, 0, 0, 256, 256);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
evas_object_map_enable_set(o, 1);
|
static void
|
||||||
evas_object_map_set(o, m);
|
_e_wid_gradient_range_set(Evas_Object *o, Eina_Bool orientation,
|
||||||
|
int rf, int gf, int bf,
|
||||||
|
int rt, int gt, int bt,
|
||||||
|
int from, int to)
|
||||||
|
{
|
||||||
|
unsigned int *pixels, *p;
|
||||||
|
int x, r, g, b, v, t;
|
||||||
|
|
||||||
|
if (from < 0) from = 0;
|
||||||
|
if (from > 255) from = 255;
|
||||||
|
if (to < 0) to = 0;
|
||||||
|
if (to > 256) to = 256;
|
||||||
|
if (to <= from) return;
|
||||||
|
if (!orientation)
|
||||||
|
evas_object_image_size_set(o, 256, 1);
|
||||||
|
else
|
||||||
|
evas_object_image_size_set(o, 1, 256);
|
||||||
|
pixels = evas_object_image_data_get(o, EINA_TRUE);
|
||||||
|
if (pixels)
|
||||||
|
{
|
||||||
|
t = to - from;
|
||||||
|
p = pixels + from;
|
||||||
|
for (x = from; x < to; x++)
|
||||||
|
{
|
||||||
|
v = x - from;
|
||||||
|
r = ((rf * (t - v)) + (rt * v)) / t;
|
||||||
|
g = ((gf * (t - v)) + (gt * v)) / t;
|
||||||
|
b = ((bf * (t - v)) + (bt * v)) / t;
|
||||||
|
*p = 0xff000000 | (r << 16) | (g << 8) | (b);
|
||||||
|
p++;
|
||||||
|
}
|
||||||
|
evas_object_image_data_set(o, pixels);
|
||||||
|
evas_object_image_data_update_add(o, 0, 0, 256, 256);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_e_wid_update_standard(E_Widget_Data *wd)
|
_e_wid_update_standard(E_Widget_Data *wd)
|
||||||
{
|
{
|
||||||
Evas_Object *o;
|
|
||||||
Eina_List *l;
|
|
||||||
Evas_Coord x, y, w, h;
|
|
||||||
int r, g, b;
|
int r, g, b;
|
||||||
int rd, gd, bd;
|
int rd, gd, bd;
|
||||||
int max, min;
|
int max, min;
|
||||||
|
@ -316,40 +335,12 @@ _e_wid_update_standard(E_Widget_Data *wd)
|
||||||
break;
|
break;
|
||||||
case E_COLOR_COMPONENT_H:
|
case E_COLOR_COMPONENT_H:
|
||||||
evas_color_hsv_to_rgb(0, wd->color->s, wd->color->v, &max, &min, NULL);
|
evas_color_hsv_to_rgb(0, wd->color->s, wd->color->v, &max, &min, NULL);
|
||||||
|
for (i = 0; i < 6; i++)
|
||||||
if (!wd->o_hgrad)
|
_e_wid_gradient_range_set(wd->o_grad, wd->vertical,
|
||||||
{
|
|
||||||
Evas *e;
|
|
||||||
|
|
||||||
e = evas_object_evas_get(wd->o_grad);
|
|
||||||
for (i = 0; i < 6; ++i)
|
|
||||||
wd->o_hgrad = eina_list_append(wd->o_hgrad,
|
|
||||||
evas_object_rectangle_add(e));
|
|
||||||
}
|
|
||||||
|
|
||||||
evas_object_geometry_get(wd->o_grad, &x, &y, &w, &h);
|
|
||||||
evas_object_hide(wd->o_grad);
|
|
||||||
|
|
||||||
i = 0;
|
|
||||||
EINA_LIST_FOREACH(wd->o_hgrad, l, o)
|
|
||||||
{
|
|
||||||
if (wd->vertical)
|
|
||||||
{
|
|
||||||
evas_object_move(o, x, y + (i * h) / 6);
|
|
||||||
evas_object_resize(o, w, h / 6);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
evas_object_move(o, x + (i * w) / 6, y);
|
|
||||||
evas_object_resize(o, w / 6, h);
|
|
||||||
}
|
|
||||||
|
|
||||||
_e_wid_gradient_set(o, wd->vertical,
|
|
||||||
*grad[i][0], *grad[i][1], *grad[i][2],
|
*grad[i][0], *grad[i][1], *grad[i][2],
|
||||||
*grad[i + 1][0], *grad[i + 1][1], *grad[i + 1][2]);
|
*grad[i + 1][0], *grad[i + 1][1], *grad[i + 1][2],
|
||||||
evas_object_show(o);
|
((i + 0) * 256) / 6,
|
||||||
i++;
|
((i + 1) * 256) / 6);
|
||||||
}
|
|
||||||
vx = wd->color->h / 360.0;
|
vx = wd->color->h / 360.0;
|
||||||
break;
|
break;
|
||||||
case E_COLOR_COMPONENT_S:
|
case E_COLOR_COMPONENT_S:
|
||||||
|
@ -370,7 +361,7 @@ _e_wid_update_standard(E_Widget_Data *wd)
|
||||||
rd, gd, bd);
|
rd, gd, bd);
|
||||||
vx = wd->color->v;
|
vx = wd->color->v;
|
||||||
break;
|
break;
|
||||||
case E_COLOR_COMPONENT_MAX:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -383,10 +374,6 @@ _e_wid_update_fixed(E_Widget_Data *wd)
|
||||||
{
|
{
|
||||||
#define GMAX 255
|
#define GMAX 255
|
||||||
#define GMIN 0
|
#define GMIN 0
|
||||||
|
|
||||||
Evas_Object *o;
|
|
||||||
Eina_List *l;
|
|
||||||
Evas_Coord x, y, w, h;
|
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
float vx = 0;
|
float vx = 0;
|
||||||
int grad[7][3] = {
|
int grad[7][3] = {
|
||||||
|
@ -432,40 +419,12 @@ _e_wid_update_fixed(E_Widget_Data *wd)
|
||||||
* 300 x n x
|
* 300 x n x
|
||||||
* 360 x n n
|
* 360 x n n
|
||||||
*/
|
*/
|
||||||
|
for (i = 0; i < 6; i++)
|
||||||
if (!wd->o_hgrad)
|
_e_wid_gradient_range_set(wd->o_grad, wd->vertical,
|
||||||
{
|
|
||||||
Evas *e;
|
|
||||||
|
|
||||||
e = evas_object_evas_get(wd->o_grad);
|
|
||||||
for (i = 0; i < 6; ++i)
|
|
||||||
wd->o_hgrad = eina_list_append(wd->o_hgrad,
|
|
||||||
evas_object_rectangle_add(e));
|
|
||||||
}
|
|
||||||
|
|
||||||
evas_object_geometry_get(wd->o_grad, &x, &y, &w, &h);
|
|
||||||
evas_object_hide(wd->o_grad);
|
|
||||||
|
|
||||||
i = 0;
|
|
||||||
EINA_LIST_FOREACH(wd->o_hgrad, l, o)
|
|
||||||
{
|
|
||||||
if (wd->vertical)
|
|
||||||
{
|
|
||||||
evas_object_move(o, x, y + (i * h) / 6);
|
|
||||||
evas_object_resize(o, w, h / 6);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
evas_object_move(o, x + (i * w) / 6, y);
|
|
||||||
evas_object_resize(o, w / 6, h);
|
|
||||||
}
|
|
||||||
|
|
||||||
_e_wid_gradient_set(o, wd->vertical,
|
|
||||||
grad[i][0], grad[i][1], grad[i][2],
|
grad[i][0], grad[i][1], grad[i][2],
|
||||||
grad[i + 1][0], grad[i + 1][1], grad[i + 1][2]);
|
grad[i + 1][0], grad[i + 1][1], grad[i + 1][2],
|
||||||
evas_object_show(o);
|
((i + 0) * 256) / 6,
|
||||||
i++;
|
((i + 1) * 256) / 6);
|
||||||
}
|
|
||||||
vx = wd->color->h / 360.0;
|
vx = wd->color->h / 360.0;
|
||||||
break;
|
break;
|
||||||
case E_COLOR_COMPONENT_S:
|
case E_COLOR_COMPONENT_S:
|
||||||
|
@ -480,7 +439,7 @@ _e_wid_update_fixed(E_Widget_Data *wd)
|
||||||
0, 0, 0);
|
0, 0, 0);
|
||||||
vx = wd->color->v;
|
vx = wd->color->v;
|
||||||
break;
|
break;
|
||||||
case E_COLOR_COMPONENT_MAX:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -588,3 +547,78 @@ _e_wid_cb_drag(void *data, Evas_Object *obj __UNUSED__, const char *emission __U
|
||||||
_e_wid_value_set(o_wid, val);
|
_e_wid_value_set(o_wid, val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_e_wid_mouse_handle(Evas_Object *obj, int mx, int my)
|
||||||
|
{
|
||||||
|
E_Widget_Data *wd;
|
||||||
|
Evas_Coord x, y, w, h;
|
||||||
|
double vx = 0.0, vy = 0.0;
|
||||||
|
|
||||||
|
wd = e_widget_data_get(obj);
|
||||||
|
|
||||||
|
evas_object_geometry_get(wd->o_grad, &x, &y, &w, &h);
|
||||||
|
if (w > 1) vx = (mx - x) / (double)(w - 1);
|
||||||
|
if (h > 1) vy = (my - y) / (double)(h - 1);
|
||||||
|
if (vx > 1) vx = 1;
|
||||||
|
if (vx < 0) vx = 0;
|
||||||
|
if (vy > 1) vy = 1;
|
||||||
|
if (vy < 0) vy = 0;
|
||||||
|
|
||||||
|
|
||||||
|
if (wd->vertical)
|
||||||
|
{
|
||||||
|
_e_wid_value_set(obj, 1.0 - vy);
|
||||||
|
edje_object_part_drag_value_set(wd->o_cslider, "e.dragable.cursor", 0.5, 1.0 - vy);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_e_wid_value_set(obj, vx);
|
||||||
|
edje_object_part_drag_value_set(wd->o_cslider, "e.dragable.cursor", vx, 0.5);
|
||||||
|
}
|
||||||
|
e_widget_change(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
_e_wid_cb_down(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
|
||||||
|
{
|
||||||
|
Evas_Event_Mouse_Down *ev;
|
||||||
|
Evas_Object *o_wid;
|
||||||
|
E_Widget_Data *wd;
|
||||||
|
|
||||||
|
o_wid = data;
|
||||||
|
wd = e_widget_data_get(o_wid);
|
||||||
|
ev = event_info;
|
||||||
|
|
||||||
|
wd->dragging = 1;
|
||||||
|
_e_wid_mouse_handle(o_wid, ev->canvas.x, ev->canvas.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_e_wid_cb_up(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
|
||||||
|
{
|
||||||
|
Evas_Object *o_wid;
|
||||||
|
E_Widget_Data *wd;
|
||||||
|
|
||||||
|
o_wid = data;
|
||||||
|
wd = e_widget_data_get(o_wid);
|
||||||
|
wd->dragging = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_e_wid_cb_move(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
|
||||||
|
{
|
||||||
|
Evas_Event_Mouse_Move *ev;
|
||||||
|
Evas_Object *o_wid;
|
||||||
|
E_Widget_Data *wd;
|
||||||
|
|
||||||
|
o_wid = data;
|
||||||
|
wd = e_widget_data_get(o_wid);
|
||||||
|
ev = event_info;
|
||||||
|
|
||||||
|
if (wd->dragging == 1)
|
||||||
|
{
|
||||||
|
_e_wid_mouse_handle(o_wid, ev->cur.canvas.x, ev->cur.canvas.y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -68,9 +68,9 @@ e_widget_spectrum_add(Evas *evas, E_Color_Component mode, E_Color *cv)
|
||||||
evas_object_show(o);
|
evas_object_show(o);
|
||||||
wd->o_spectrum = o;
|
wd->o_spectrum = o;
|
||||||
edje_object_part_swallow(wd->o_edje, "e.swallow.content", o);
|
edje_object_part_swallow(wd->o_edje, "e.swallow.content", o);
|
||||||
edje_extern_object_min_size_set(o, 100, 100);
|
|
||||||
|
|
||||||
o = evas_object_rectangle_add(evas);
|
o = evas_object_rectangle_add(evas);
|
||||||
|
evas_object_repeat_events_set(o, EINA_TRUE);
|
||||||
evas_object_color_set(o, 0, 0, 0, 0);
|
evas_object_color_set(o, 0, 0, 0, 0);
|
||||||
e_widget_sub_object_add(obj, o);
|
e_widget_sub_object_add(obj, o);
|
||||||
evas_object_show(o);
|
evas_object_show(o);
|
||||||
|
|
Loading…
Reference in New Issue