Ephoto: Move common editing code to one place.
This commit is contained in:
parent
d5b7d24082
commit
4b8ea0492b
|
@ -29,7 +29,8 @@ ephoto_SOURCES = \
|
||||||
ephoto_bcg.c \
|
ephoto_bcg.c \
|
||||||
ephoto_hsv.c \
|
ephoto_hsv.c \
|
||||||
ephoto_filters.c \
|
ephoto_filters.c \
|
||||||
ephoto_color.c
|
ephoto_color.c \
|
||||||
|
ephoto_editor.c
|
||||||
|
|
||||||
noinst_HEADERS = ephoto.h
|
noinst_HEADERS = ephoto.h
|
||||||
EXTRA_DIST = ephoto.h
|
EXTRA_DIST = ephoto.h
|
||||||
|
|
|
@ -88,6 +88,9 @@ void ephoto_thumb_browser_update(Ephoto *ephoto, Ephoto_Entry *entry);
|
||||||
/* smart callbacks called: "selected" - an item in the thumb browser is
|
/* smart callbacks called: "selected" - an item in the thumb browser is
|
||||||
* selected. The selected Ephoto_Entry is passed as event_info argument. */
|
* selected. The selected Ephoto_Entry is passed as event_info argument. */
|
||||||
|
|
||||||
|
Evas_Object *ephoto_editor_add(Evas_Object *parent, const char *title,
|
||||||
|
const char *data_name, void *data);
|
||||||
|
void ephoto_editor_del(Evas_Object *obj);
|
||||||
void ephoto_cropper_add(Evas_Object *main, Evas_Object *parent,
|
void ephoto_cropper_add(Evas_Object *main, Evas_Object *parent,
|
||||||
Evas_Object *image_parent, Evas_Object *image);
|
Evas_Object *image_parent, Evas_Object *image);
|
||||||
void ephoto_bcg_add(Evas_Object *main, Evas_Object *parent,
|
void ephoto_bcg_add(Evas_Object *main, Evas_Object *parent,
|
||||||
|
@ -284,5 +287,8 @@ extern int EPHOTO_EVENT_ENTRY_CREATE;
|
||||||
extern int EPHOTO_EVENT_POPULATE_START;
|
extern int EPHOTO_EVENT_POPULATE_START;
|
||||||
extern int EPHOTO_EVENT_POPULATE_END;
|
extern int EPHOTO_EVENT_POPULATE_END;
|
||||||
extern int EPHOTO_EVENT_POPULATE_ERROR;
|
extern int EPHOTO_EVENT_POPULATE_ERROR;
|
||||||
|
extern int EPHOTO_EVENT_EDITOR_RESET;
|
||||||
|
extern int EPHOTO_EVENT_EDITOR_APPLY;
|
||||||
|
extern int EPHOTO_EVENT_EDITOR_CANCEL;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -6,10 +6,11 @@ struct _Ephoto_BCG
|
||||||
Evas_Object *main;
|
Evas_Object *main;
|
||||||
Evas_Object *parent;
|
Evas_Object *parent;
|
||||||
Evas_Object *image;
|
Evas_Object *image;
|
||||||
Evas_Object *frame;
|
Evas_Object *editor;
|
||||||
Evas_Object *bslider;
|
Evas_Object *bslider;
|
||||||
Evas_Object *cslider;
|
Evas_Object *cslider;
|
||||||
Evas_Object *gslider;
|
Evas_Object *gslider;
|
||||||
|
Eina_List *handlers;
|
||||||
int contrast;
|
int contrast;
|
||||||
int brightness;
|
int brightness;
|
||||||
double gamma;
|
double gamma;
|
||||||
|
@ -248,8 +249,8 @@ _gamma_slider_changed(void *data, Evas_Object *obj,
|
||||||
_ephoto_bcg_adjust_contrast(ebcg, ebcg->contrast, image_data_two);
|
_ephoto_bcg_adjust_contrast(ebcg, ebcg->contrast, image_data_two);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static Eina_Bool
|
||||||
_bcg_reset(void *data, Evas_Object *obj EINA_UNUSED,
|
_bcg_reset(void *data, int type EINA_UNUSED,
|
||||||
void *event_info EINA_UNUSED)
|
void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Ephoto_BCG *ebcg = data;
|
Ephoto_BCG *ebcg = data;
|
||||||
|
@ -261,10 +262,12 @@ _bcg_reset(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
ebcg->contrast = 0;
|
ebcg->contrast = 0;
|
||||||
ebcg->gamma = 1;
|
ebcg->gamma = 1;
|
||||||
_brightness_slider_changed(ebcg, ebcg->bslider, NULL);
|
_brightness_slider_changed(ebcg, ebcg->bslider, NULL);
|
||||||
|
|
||||||
|
return ECORE_CALLBACK_PASS_ON;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static Eina_Bool
|
||||||
_bcg_apply(void *data, Evas_Object *obj EINA_UNUSED,
|
_bcg_apply(void *data, int type EINA_UNUSED,
|
||||||
void *event_info EINA_UNUSED)
|
void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Ephoto_BCG *ebcg = data;
|
Ephoto_BCG *ebcg = data;
|
||||||
|
@ -277,11 +280,13 @@ _bcg_apply(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
evas_object_image_size_get(elm_image_object_get(ebcg->image), &w, &h);
|
evas_object_image_size_get(elm_image_object_get(ebcg->image), &w, &h);
|
||||||
ephoto_single_browser_image_data_update(ebcg->main, ebcg->image, EINA_TRUE,
|
ephoto_single_browser_image_data_update(ebcg->main, ebcg->image, EINA_TRUE,
|
||||||
image_data, w, h);
|
image_data, w, h);
|
||||||
evas_object_del(ebcg->frame);
|
ephoto_editor_del(ebcg->editor);
|
||||||
|
|
||||||
|
return ECORE_CALLBACK_PASS_ON;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static Eina_Bool
|
||||||
_bcg_cancel(void *data, Evas_Object *obj EINA_UNUSED,
|
_bcg_cancel(void *data, int type EINA_UNUSED,
|
||||||
void *event_info EINA_UNUSED)
|
void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Ephoto_BCG *ebcg = data;
|
Ephoto_BCG *ebcg = data;
|
||||||
|
@ -294,15 +299,20 @@ _bcg_cancel(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
ebcg->gamma = 1;
|
ebcg->gamma = 1;
|
||||||
_brightness_slider_changed(ebcg, ebcg->bslider, NULL);
|
_brightness_slider_changed(ebcg, ebcg->bslider, NULL);
|
||||||
ephoto_single_browser_cancel_editing(ebcg->main, ebcg->image);
|
ephoto_single_browser_cancel_editing(ebcg->main, ebcg->image);
|
||||||
evas_object_del(ebcg->frame);
|
ephoto_editor_del(ebcg->editor);
|
||||||
|
|
||||||
|
return ECORE_CALLBACK_PASS_ON;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_frame_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
_editor_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
||||||
void *event_info EINA_UNUSED)
|
void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Ephoto_BCG *ebcg = data;
|
Ephoto_BCG *ebcg = data;
|
||||||
|
Ecore_Event_Handler *handler;
|
||||||
|
|
||||||
|
EINA_LIST_FREE(ebcg->handlers, handler)
|
||||||
|
ecore_event_handler_del(handler);
|
||||||
free(ebcg->original_im_data);
|
free(ebcg->original_im_data);
|
||||||
free(ebcg);
|
free(ebcg);
|
||||||
}
|
}
|
||||||
|
@ -310,7 +320,7 @@ _frame_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
||||||
void
|
void
|
||||||
ephoto_bcg_add(Evas_Object *main, Evas_Object *parent, Evas_Object *image)
|
ephoto_bcg_add(Evas_Object *main, Evas_Object *parent, Evas_Object *image)
|
||||||
{
|
{
|
||||||
Evas_Object *box, *slider, *ic, *button;
|
Evas_Object *slider;
|
||||||
Ephoto_BCG *ebcg;
|
Ephoto_BCG *ebcg;
|
||||||
unsigned int *im_data;
|
unsigned int *im_data;
|
||||||
|
|
||||||
|
@ -334,39 +344,26 @@ ephoto_bcg_add(Evas_Object *main, Evas_Object *parent, Evas_Object *image)
|
||||||
memcpy(ebcg->original_im_data, im_data,
|
memcpy(ebcg->original_im_data, im_data,
|
||||||
sizeof(unsigned int) * ebcg->w * ebcg->h);
|
sizeof(unsigned int) * ebcg->w * ebcg->h);
|
||||||
|
|
||||||
ebcg->frame = elm_frame_add(parent);
|
ebcg->editor = ephoto_editor_add(parent, _("Brightness/Contrast/Gamma"),
|
||||||
elm_object_text_set(ebcg->frame, _("Brightness/Contrast/Gamma"));
|
"ebcg", ebcg);
|
||||||
evas_object_size_hint_weight_set(ebcg->frame, 0.3, EVAS_HINT_EXPAND);
|
evas_object_event_callback_add(ebcg->editor, EVAS_CALLBACK_DEL, _editor_del,
|
||||||
evas_object_size_hint_align_set(ebcg->frame,
|
|
||||||
EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
||||||
elm_box_pack_end(parent, ebcg->frame);
|
|
||||||
evas_object_data_set(ebcg->frame, "ebcg", ebcg);
|
|
||||||
evas_object_event_callback_add(ebcg->frame, EVAS_CALLBACK_DEL, _frame_del,
|
|
||||||
ebcg);
|
ebcg);
|
||||||
evas_object_show(ebcg->frame);
|
|
||||||
|
|
||||||
box = elm_box_add(ebcg->frame);
|
slider = elm_slider_add(ebcg->editor);
|
||||||
elm_box_horizontal_set(box, EINA_FALSE);
|
elm_object_text_set(slider, _("Gamma"));
|
||||||
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
elm_slider_min_max_set(slider, -0.1, 3);
|
||||||
evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
elm_slider_step_set(slider, .1);
|
||||||
elm_object_content_set(ebcg->frame, box);
|
elm_slider_value_set(slider, 1);
|
||||||
evas_object_show(box);
|
elm_slider_unit_format_set(slider, "%1.2f");
|
||||||
|
|
||||||
slider = elm_slider_add(box);
|
|
||||||
elm_object_text_set(slider, _("Brightness"));
|
|
||||||
elm_slider_min_max_set(slider, -100, 100);
|
|
||||||
elm_slider_step_set(slider, 1);
|
|
||||||
elm_slider_value_set(slider, 0);
|
|
||||||
elm_slider_unit_format_set(slider, "%1.0f");
|
|
||||||
evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
|
evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
|
||||||
evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
|
evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
|
||||||
evas_object_smart_callback_add(slider, "delay,changed",
|
evas_object_smart_callback_add(slider, "delay,changed",
|
||||||
_brightness_slider_changed, ebcg);
|
_gamma_slider_changed, ebcg);
|
||||||
elm_box_pack_end(box, slider);
|
elm_box_pack_start(ebcg->editor, slider);
|
||||||
evas_object_show(slider);
|
evas_object_show(slider);
|
||||||
ebcg->bslider = slider;
|
ebcg->gslider = slider;
|
||||||
|
|
||||||
slider = elm_slider_add(box);
|
slider = elm_slider_add(ebcg->editor);
|
||||||
elm_object_text_set(slider, _("Contrast"));
|
elm_object_text_set(slider, _("Contrast"));
|
||||||
elm_slider_min_max_set(slider, -100, 100);
|
elm_slider_min_max_set(slider, -100, 100);
|
||||||
elm_slider_step_set(slider, 1);
|
elm_slider_step_set(slider, 1);
|
||||||
|
@ -376,65 +373,36 @@ ephoto_bcg_add(Evas_Object *main, Evas_Object *parent, Evas_Object *image)
|
||||||
evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
|
evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
|
||||||
evas_object_smart_callback_add(slider, "delay,changed",
|
evas_object_smart_callback_add(slider, "delay,changed",
|
||||||
_contrast_slider_changed, ebcg);
|
_contrast_slider_changed, ebcg);
|
||||||
elm_box_pack_end(box, slider);
|
elm_box_pack_start(ebcg->editor, slider);
|
||||||
evas_object_show(slider);
|
evas_object_show(slider);
|
||||||
ebcg->cslider = slider;
|
ebcg->cslider = slider;
|
||||||
|
|
||||||
slider = elm_slider_add(box);
|
slider = elm_slider_add(ebcg->editor);
|
||||||
elm_object_text_set(slider, _("Gamma"));
|
elm_object_text_set(slider, _("Brightness"));
|
||||||
elm_slider_min_max_set(slider, 0.1, 3);
|
elm_slider_min_max_set(slider, -100, 100);
|
||||||
elm_slider_step_set(slider, .1);
|
elm_slider_step_set(slider, 1);
|
||||||
elm_slider_value_set(slider, 1);
|
elm_slider_value_set(slider, 0);
|
||||||
elm_slider_unit_format_set(slider, "%1.2f");
|
elm_slider_unit_format_set(slider, "%1.0f");
|
||||||
evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
|
evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
|
||||||
evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
|
evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
|
||||||
evas_object_smart_callback_add(slider, "delay,changed",
|
evas_object_smart_callback_add(slider, "delay,changed",
|
||||||
_gamma_slider_changed, ebcg);
|
_brightness_slider_changed, ebcg);
|
||||||
elm_box_pack_end(box, slider);
|
elm_box_pack_start(ebcg->editor, slider);
|
||||||
evas_object_show(slider);
|
evas_object_show(slider);
|
||||||
ebcg->gslider = slider;
|
ebcg->bslider = slider;
|
||||||
|
|
||||||
ic = elm_icon_add(box);
|
ebcg->handlers =
|
||||||
elm_icon_order_lookup_set(ic, ELM_ICON_LOOKUP_FDO_THEME);
|
eina_list_append(ebcg->handlers,
|
||||||
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
|
ecore_event_handler_add(EPHOTO_EVENT_EDITOR_RESET,
|
||||||
elm_icon_standard_set(ic, "edit-undo");
|
_bcg_reset, ebcg));
|
||||||
|
ebcg->handlers =
|
||||||
button = elm_button_add(box);
|
eina_list_append(ebcg->handlers,
|
||||||
elm_object_text_set(button, _("Reset"));
|
ecore_event_handler_add(EPHOTO_EVENT_EDITOR_APPLY,
|
||||||
elm_object_part_content_set(button, "icon", ic);
|
_bcg_apply, ebcg));
|
||||||
evas_object_smart_callback_add(button, "clicked", _bcg_reset, ebcg);
|
ebcg->handlers =
|
||||||
evas_object_size_hint_weight_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
eina_list_append(ebcg->handlers,
|
||||||
evas_object_size_hint_align_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
ecore_event_handler_add(EPHOTO_EVENT_EDITOR_CANCEL,
|
||||||
elm_box_pack_end(box, button);
|
_bcg_cancel, ebcg));
|
||||||
evas_object_show(button);
|
|
||||||
|
|
||||||
ic = elm_icon_add(box);
|
|
||||||
elm_icon_order_lookup_set(ic, ELM_ICON_LOOKUP_FDO_THEME);
|
|
||||||
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
|
|
||||||
elm_icon_standard_set(ic, "document-save");
|
|
||||||
|
|
||||||
button = elm_button_add(box);
|
|
||||||
elm_object_text_set(button, _("Apply"));
|
|
||||||
elm_object_part_content_set(button, "icon", ic);
|
|
||||||
evas_object_smart_callback_add(button, "clicked", _bcg_apply, ebcg);
|
|
||||||
evas_object_size_hint_weight_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
||||||
evas_object_size_hint_align_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
||||||
elm_box_pack_end(box, button);
|
|
||||||
evas_object_show(button);
|
|
||||||
|
|
||||||
ic = elm_icon_add(box);
|
|
||||||
elm_icon_order_lookup_set(ic, ELM_ICON_LOOKUP_FDO_THEME);
|
|
||||||
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
|
|
||||||
elm_icon_standard_set(ic, "window-close");
|
|
||||||
|
|
||||||
button = elm_button_add(box);
|
|
||||||
elm_object_text_set(button, _("Cancel"));
|
|
||||||
elm_object_part_content_set(button, "icon", ic);
|
|
||||||
evas_object_smart_callback_add(button, "clicked", _bcg_cancel, ebcg);
|
|
||||||
evas_object_size_hint_weight_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
||||||
evas_object_size_hint_align_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
||||||
elm_box_pack_end(box, button);
|
|
||||||
evas_object_show(button);
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
@ -6,10 +6,11 @@ struct _Ephoto_Color
|
||||||
Evas_Object *main;
|
Evas_Object *main;
|
||||||
Evas_Object *parent;
|
Evas_Object *parent;
|
||||||
Evas_Object *image;
|
Evas_Object *image;
|
||||||
Evas_Object *frame;
|
Evas_Object *editor;
|
||||||
Evas_Object *bslider;
|
Evas_Object *bslider;
|
||||||
Evas_Object *gslider;
|
Evas_Object *gslider;
|
||||||
Evas_Object *rslider;
|
Evas_Object *rslider;
|
||||||
|
Eina_List *handlers;
|
||||||
int blue;
|
int blue;
|
||||||
int green;
|
int green;
|
||||||
int red;
|
int red;
|
||||||
|
@ -233,8 +234,8 @@ _blue_slider_changed(void *data, Evas_Object *obj,
|
||||||
_ephoto_color_adjust_green(eco, eco->green, image_data_two);
|
_ephoto_color_adjust_green(eco, eco->green, image_data_two);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static Eina_Bool
|
||||||
_color_reset(void *data, Evas_Object *obj EINA_UNUSED,
|
_color_reset(void *data, int type EINA_UNUSED,
|
||||||
void *event_info EINA_UNUSED)
|
void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Ephoto_Color *eco = data;
|
Ephoto_Color *eco = data;
|
||||||
|
@ -246,10 +247,12 @@ _color_reset(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
eco->green = 0;
|
eco->green = 0;
|
||||||
eco->blue = 0;
|
eco->blue = 0;
|
||||||
_red_slider_changed(eco, eco->rslider, NULL);
|
_red_slider_changed(eco, eco->rslider, NULL);
|
||||||
|
|
||||||
|
return ECORE_CALLBACK_PASS_ON;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static Eina_Bool
|
||||||
_color_apply(void *data, Evas_Object *obj EINA_UNUSED,
|
_color_apply(void *data, int type EINA_UNUSED,
|
||||||
void *event_info EINA_UNUSED)
|
void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Ephoto_Color *eco = data;
|
Ephoto_Color *eco = data;
|
||||||
|
@ -262,11 +265,13 @@ _color_apply(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
evas_object_image_size_get(elm_image_object_get(eco->image), &w, &h);
|
evas_object_image_size_get(elm_image_object_get(eco->image), &w, &h);
|
||||||
ephoto_single_browser_image_data_update(eco->main, eco->image, EINA_TRUE,
|
ephoto_single_browser_image_data_update(eco->main, eco->image, EINA_TRUE,
|
||||||
image_data, w, h);
|
image_data, w, h);
|
||||||
evas_object_del(eco->frame);
|
ephoto_editor_del(eco->editor);
|
||||||
|
|
||||||
|
return ECORE_CALLBACK_PASS_ON;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static Eina_Bool
|
||||||
_color_cancel(void *data, Evas_Object *obj EINA_UNUSED,
|
_color_cancel(void *data, int type EINA_UNUSED,
|
||||||
void *event_info EINA_UNUSED)
|
void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Ephoto_Color *eco = data;
|
Ephoto_Color *eco = data;
|
||||||
|
@ -279,15 +284,20 @@ _color_cancel(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
eco->blue = 0;
|
eco->blue = 0;
|
||||||
_red_slider_changed(eco, eco->rslider, NULL);
|
_red_slider_changed(eco, eco->rslider, NULL);
|
||||||
ephoto_single_browser_cancel_editing(eco->main, eco->image);
|
ephoto_single_browser_cancel_editing(eco->main, eco->image);
|
||||||
evas_object_del(eco->frame);
|
ephoto_editor_del(eco->editor);
|
||||||
|
|
||||||
|
return ECORE_CALLBACK_PASS_ON;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_frame_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
_editor_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
||||||
void *event_info EINA_UNUSED)
|
void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Ephoto_Color *eco = data;
|
Ephoto_Color *eco = data;
|
||||||
|
Ecore_Event_Handler *handler;
|
||||||
|
|
||||||
|
EINA_LIST_FREE(eco->handlers, handler)
|
||||||
|
ecore_event_handler_del(handler);
|
||||||
free(eco->original_im_data);
|
free(eco->original_im_data);
|
||||||
free(eco);
|
free(eco);
|
||||||
}
|
}
|
||||||
|
@ -295,7 +305,7 @@ _frame_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
||||||
void
|
void
|
||||||
ephoto_color_add(Evas_Object *main, Evas_Object *parent, Evas_Object *image)
|
ephoto_color_add(Evas_Object *main, Evas_Object *parent, Evas_Object *image)
|
||||||
{
|
{
|
||||||
Evas_Object *box, *slider, *ic, *button;
|
Evas_Object *slider;
|
||||||
Ephoto_Color *eco;
|
Ephoto_Color *eco;
|
||||||
unsigned int *im_data;
|
unsigned int *im_data;
|
||||||
|
|
||||||
|
@ -319,52 +329,12 @@ ephoto_color_add(Evas_Object *main, Evas_Object *parent, Evas_Object *image)
|
||||||
memcpy(eco->original_im_data, im_data,
|
memcpy(eco->original_im_data, im_data,
|
||||||
sizeof(unsigned int) * eco->w * eco->h);
|
sizeof(unsigned int) * eco->w * eco->h);
|
||||||
|
|
||||||
eco->frame = elm_frame_add(parent);
|
eco->editor = ephoto_editor_add(parent, _("Adjust Color Levels"),
|
||||||
elm_object_text_set(eco->frame, _("Adjust Color Levels"));
|
"eco", eco);
|
||||||
evas_object_size_hint_weight_set(eco->frame, 0.3, EVAS_HINT_EXPAND);
|
evas_object_event_callback_add(eco->editor, EVAS_CALLBACK_DEL, _editor_del,
|
||||||
evas_object_size_hint_align_set(eco->frame, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
||||||
elm_box_pack_end(parent, eco->frame);
|
|
||||||
evas_object_data_set(eco->frame, "eco", eco);
|
|
||||||
evas_object_event_callback_add(eco->frame, EVAS_CALLBACK_DEL, _frame_del,
|
|
||||||
eco);
|
eco);
|
||||||
evas_object_show(eco->frame);
|
|
||||||
|
|
||||||
box = elm_box_add(eco->frame);
|
slider = elm_slider_add(eco->editor);
|
||||||
elm_box_horizontal_set(box, EINA_FALSE);
|
|
||||||
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
|
||||||
evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
||||||
elm_object_content_set(eco->frame, box);
|
|
||||||
evas_object_show(box);
|
|
||||||
|
|
||||||
slider = elm_slider_add(box);
|
|
||||||
elm_object_text_set(slider, _("Red"));
|
|
||||||
elm_slider_min_max_set(slider, -100, 100);
|
|
||||||
elm_slider_step_set(slider, 1);
|
|
||||||
elm_slider_value_set(slider, 0);
|
|
||||||
elm_slider_unit_format_set(slider, "%1.0f");
|
|
||||||
evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
|
|
||||||
evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
|
|
||||||
evas_object_smart_callback_add(slider, "delay,changed", _red_slider_changed,
|
|
||||||
eco);
|
|
||||||
elm_box_pack_end(box, slider);
|
|
||||||
evas_object_show(slider);
|
|
||||||
eco->rslider = slider;
|
|
||||||
|
|
||||||
slider = elm_slider_add(box);
|
|
||||||
elm_object_text_set(slider, _("Green"));
|
|
||||||
elm_slider_min_max_set(slider, -100, 100);
|
|
||||||
elm_slider_step_set(slider, 1);
|
|
||||||
elm_slider_value_set(slider, 0);
|
|
||||||
elm_slider_unit_format_set(slider, "%1.0f");
|
|
||||||
evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
|
|
||||||
evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
|
|
||||||
evas_object_smart_callback_add(slider, "delay,changed",
|
|
||||||
_green_slider_changed, eco);
|
|
||||||
elm_box_pack_end(box, slider);
|
|
||||||
evas_object_show(slider);
|
|
||||||
eco->gslider = slider;
|
|
||||||
|
|
||||||
slider = elm_slider_add(box);
|
|
||||||
elm_object_text_set(slider, _("Blue"));
|
elm_object_text_set(slider, _("Blue"));
|
||||||
elm_slider_min_max_set(slider, -100, 100);
|
elm_slider_min_max_set(slider, -100, 100);
|
||||||
elm_slider_step_set(slider, 1);
|
elm_slider_step_set(slider, 1);
|
||||||
|
@ -374,51 +344,50 @@ ephoto_color_add(Evas_Object *main, Evas_Object *parent, Evas_Object *image)
|
||||||
evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
|
evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
|
||||||
evas_object_smart_callback_add(slider, "delay,changed",
|
evas_object_smart_callback_add(slider, "delay,changed",
|
||||||
_blue_slider_changed, eco);
|
_blue_slider_changed, eco);
|
||||||
elm_box_pack_end(box, slider);
|
elm_box_pack_start(eco->editor, slider);
|
||||||
evas_object_show(slider);
|
evas_object_show(slider);
|
||||||
eco->bslider = slider;
|
eco->bslider = slider;
|
||||||
|
|
||||||
ic = elm_icon_add(box);
|
slider = elm_slider_add(eco->editor);
|
||||||
elm_icon_order_lookup_set(ic, ELM_ICON_LOOKUP_FDO_THEME);
|
elm_object_text_set(slider, _("Green"));
|
||||||
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
|
elm_slider_min_max_set(slider, -100, 100);
|
||||||
elm_icon_standard_set(ic, "edit-undo");
|
elm_slider_step_set(slider, 1);
|
||||||
|
elm_slider_value_set(slider, 0);
|
||||||
|
elm_slider_unit_format_set(slider, "%1.0f");
|
||||||
|
evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
|
||||||
|
evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
|
||||||
|
evas_object_smart_callback_add(slider, "delay,changed",
|
||||||
|
_green_slider_changed, eco);
|
||||||
|
elm_box_pack_start(eco->editor, slider);
|
||||||
|
evas_object_show(slider);
|
||||||
|
eco->gslider = slider;
|
||||||
|
|
||||||
button = elm_button_add(box);
|
slider = elm_slider_add(eco->editor);
|
||||||
elm_object_text_set(button, _("Reset"));
|
elm_object_text_set(slider, _("Red"));
|
||||||
elm_object_part_content_set(button, "icon", ic);
|
elm_slider_min_max_set(slider, -100, 100);
|
||||||
evas_object_smart_callback_add(button, "clicked", _color_reset, eco);
|
elm_slider_step_set(slider, 1);
|
||||||
evas_object_size_hint_weight_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
elm_slider_value_set(slider, 0);
|
||||||
evas_object_size_hint_align_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
elm_slider_unit_format_set(slider, "%1.0f");
|
||||||
elm_box_pack_end(box, button);
|
evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
|
||||||
evas_object_show(button);
|
evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
|
||||||
|
evas_object_smart_callback_add(slider, "delay,changed",
|
||||||
|
_red_slider_changed, eco);
|
||||||
|
elm_box_pack_start(eco->editor, slider);
|
||||||
|
evas_object_show(slider);
|
||||||
|
eco->rslider = slider;
|
||||||
|
|
||||||
ic = elm_icon_add(box);
|
eco->handlers =
|
||||||
elm_icon_order_lookup_set(ic, ELM_ICON_LOOKUP_FDO_THEME);
|
eina_list_append(eco->handlers,
|
||||||
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
|
ecore_event_handler_add(EPHOTO_EVENT_EDITOR_RESET,
|
||||||
elm_icon_standard_set(ic, "document-save");
|
_color_reset, eco));
|
||||||
|
eco->handlers =
|
||||||
button = elm_button_add(box);
|
eina_list_append(eco->handlers,
|
||||||
elm_object_text_set(button, _("Apply"));
|
ecore_event_handler_add(EPHOTO_EVENT_EDITOR_APPLY,
|
||||||
elm_object_part_content_set(button, "icon", ic);
|
_color_apply, eco));
|
||||||
evas_object_smart_callback_add(button, "clicked", _color_apply, eco);
|
eco->handlers =
|
||||||
evas_object_size_hint_weight_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
eina_list_append(eco->handlers,
|
||||||
evas_object_size_hint_align_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
ecore_event_handler_add(EPHOTO_EVENT_EDITOR_CANCEL,
|
||||||
elm_box_pack_end(box, button);
|
_color_cancel, eco));
|
||||||
evas_object_show(button);
|
|
||||||
|
|
||||||
ic = elm_icon_add(box);
|
|
||||||
elm_icon_order_lookup_set(ic, ELM_ICON_LOOKUP_FDO_THEME);
|
|
||||||
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
|
|
||||||
elm_icon_standard_set(ic, "window-close");
|
|
||||||
|
|
||||||
button = elm_button_add(box);
|
|
||||||
elm_object_text_set(button, _("Cancel"));
|
|
||||||
elm_object_part_content_set(button, "icon", ic);
|
|
||||||
evas_object_smart_callback_add(button, "clicked", _color_cancel, eco);
|
|
||||||
evas_object_size_hint_weight_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
||||||
evas_object_size_hint_align_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
||||||
elm_box_pack_end(box, button);
|
|
||||||
evas_object_show(button);
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
@ -7,12 +7,13 @@ struct _Ephoto_Cropper
|
||||||
Evas_Object *parent;
|
Evas_Object *parent;
|
||||||
Evas_Object *image_parent;
|
Evas_Object *image_parent;
|
||||||
Evas_Object *box;
|
Evas_Object *box;
|
||||||
Evas_Object *frame;
|
Evas_Object *editor;
|
||||||
Evas_Object *image;
|
Evas_Object *image;
|
||||||
Evas_Object *cropper;
|
Evas_Object *cropper;
|
||||||
Evas_Object *layout;
|
Evas_Object *layout;
|
||||||
Evas_Object *cropw;
|
Evas_Object *cropw;
|
||||||
Evas_Object *croph;
|
Evas_Object *croph;
|
||||||
|
Eina_List *handlers;
|
||||||
int startx;
|
int startx;
|
||||||
int starty;
|
int starty;
|
||||||
int offsetx;
|
int offsetx;
|
||||||
|
@ -221,10 +222,10 @@ _apply_crop(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
elm_table_pack(ec->image_parent, ec->image, 0, 0, 1, 1);
|
elm_table_pack(ec->image_parent, ec->image, 0, 0, 1, 1);
|
||||||
ephoto_single_browser_image_data_update(ec->main, ec->image, EINA_TRUE,
|
ephoto_single_browser_image_data_update(ec->main, ec->image, EINA_TRUE,
|
||||||
idata_new, nw, nh);
|
idata_new, nw, nh);
|
||||||
evas_object_del(ec->frame);
|
|
||||||
evas_object_del(ec->cropper);
|
evas_object_del(ec->cropper);
|
||||||
evas_object_del(ec->layout);
|
evas_object_del(ec->layout);
|
||||||
evas_object_del(ec->box);
|
evas_object_del(ec->box);
|
||||||
|
ephoto_editor_del(ec->editor);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -237,10 +238,10 @@ _cancel_crop(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
elm_layout_content_unset(ec->layout, "ephoto.swallow.image");
|
elm_layout_content_unset(ec->layout, "ephoto.swallow.image");
|
||||||
elm_table_pack(ec->image_parent, ec->image, 0, 0, 1, 1);
|
elm_table_pack(ec->image_parent, ec->image, 0, 0, 1, 1);
|
||||||
ephoto_single_browser_cancel_editing(ec->main, ec->image);
|
ephoto_single_browser_cancel_editing(ec->main, ec->image);
|
||||||
evas_object_del(ec->frame);
|
|
||||||
evas_object_del(ec->cropper);
|
evas_object_del(ec->cropper);
|
||||||
evas_object_del(ec->layout);
|
evas_object_del(ec->layout);
|
||||||
evas_object_del(ec->box);
|
evas_object_del(ec->box);
|
||||||
|
ephoto_editor_del(ec->editor);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -585,11 +586,42 @@ _image_resize(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
||||||
EDJE_MESSAGE_INT_SET, 1, msg);
|
EDJE_MESSAGE_INT_SET, 1, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Eina_Bool
|
||||||
|
_crop_reset(void *data, int type EINA_UNUSED,
|
||||||
|
void *event_info EINA_UNUSED)
|
||||||
|
{
|
||||||
|
_reset_crop(data, NULL, NULL);
|
||||||
|
|
||||||
|
return ECORE_CALLBACK_PASS_ON;
|
||||||
|
}
|
||||||
|
|
||||||
|
static Eina_Bool
|
||||||
|
_crop_apply(void *data, int type EINA_UNUSED,
|
||||||
|
void *event_info EINA_UNUSED)
|
||||||
|
{
|
||||||
|
_apply_crop(data, NULL, NULL);
|
||||||
|
|
||||||
|
return ECORE_CALLBACK_PASS_ON;
|
||||||
|
}
|
||||||
|
|
||||||
|
static Eina_Bool
|
||||||
|
_crop_cancel(void *data, int type EINA_UNUSED,
|
||||||
|
void *event_info EINA_UNUSED)
|
||||||
|
{
|
||||||
|
_cancel_crop(data, NULL, NULL);
|
||||||
|
|
||||||
|
return ECORE_CALLBACK_PASS_ON;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_cropper_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
_editor_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
||||||
void *event_info EINA_UNUSED)
|
void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Ephoto_Cropper *ec = data;
|
Ephoto_Cropper *ec = data;
|
||||||
|
Ecore_Event_Handler *handler;
|
||||||
|
|
||||||
|
EINA_LIST_FREE(ec->handlers, handler)
|
||||||
|
ecore_event_handler_del(handler);
|
||||||
|
|
||||||
free(ec);
|
free(ec);
|
||||||
}
|
}
|
||||||
|
@ -598,7 +630,6 @@ void
|
||||||
ephoto_cropper_add(Evas_Object *main, Evas_Object *parent,
|
ephoto_cropper_add(Evas_Object *main, Evas_Object *parent,
|
||||||
Evas_Object *image_parent, Evas_Object *image)
|
Evas_Object *image_parent, Evas_Object *image)
|
||||||
{
|
{
|
||||||
Evas_Object *vbox, *ic, *button;
|
|
||||||
Ephoto_Cropper *ec;
|
Ephoto_Cropper *ec;
|
||||||
int w, h;
|
int w, h;
|
||||||
|
|
||||||
|
@ -669,38 +700,13 @@ ephoto_cropper_add(Evas_Object *main, Evas_Object *parent,
|
||||||
|
|
||||||
evas_object_event_callback_add(ec->layout, EVAS_CALLBACK_RESIZE,
|
evas_object_event_callback_add(ec->layout, EVAS_CALLBACK_RESIZE,
|
||||||
_image_resize, ec);
|
_image_resize, ec);
|
||||||
evas_object_event_callback_add(ec->box, EVAS_CALLBACK_DEL,
|
|
||||||
_cropper_del, ec);
|
|
||||||
|
|
||||||
ec->frame = elm_frame_add(parent);
|
ec->editor = ephoto_editor_add(parent, _("Crop Image"),
|
||||||
elm_object_text_set(ec->frame, _("Crop Image"));
|
"ec", ec);
|
||||||
evas_object_size_hint_weight_set(ec->frame, 0.3, EVAS_HINT_EXPAND);
|
evas_object_event_callback_add(ec->editor, EVAS_CALLBACK_DEL,
|
||||||
evas_object_size_hint_align_set(ec->frame, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
_editor_del, ec);
|
||||||
elm_box_pack_end(parent, ec->frame);
|
|
||||||
evas_object_data_set(ec->frame, "ec", ec);
|
|
||||||
evas_object_show(ec->frame);
|
|
||||||
|
|
||||||
vbox = elm_box_add(ec->frame);
|
ec->croph = elm_slider_add(ec->editor);
|
||||||
elm_box_horizontal_set(vbox, EINA_FALSE);
|
|
||||||
evas_object_size_hint_weight_set(vbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
|
||||||
evas_object_size_hint_align_set(vbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
||||||
elm_object_content_set(ec->frame, vbox);
|
|
||||||
evas_object_show(vbox);
|
|
||||||
|
|
||||||
ec->cropw = elm_slider_add(vbox);
|
|
||||||
elm_slider_min_max_set(ec->cropw, 1, w);
|
|
||||||
elm_slider_step_set(ec->cropw, 1);
|
|
||||||
elm_slider_unit_format_set(ec->cropw, "%1.0f");
|
|
||||||
elm_object_text_set(ec->cropw, _("Width"));
|
|
||||||
evas_object_size_hint_weight_set(ec->cropw, EVAS_HINT_EXPAND,
|
|
||||||
EVAS_HINT_FILL);
|
|
||||||
evas_object_size_hint_align_set(ec->cropw, EVAS_HINT_FILL, 0.5);
|
|
||||||
elm_box_pack_end(vbox, ec->cropw);
|
|
||||||
evas_object_smart_callback_add(ec->cropw, "slider,drag,stop",
|
|
||||||
_cropper_changed_width, ec);
|
|
||||||
evas_object_show(ec->cropw);
|
|
||||||
|
|
||||||
ec->croph = elm_slider_add(vbox);
|
|
||||||
elm_slider_min_max_set(ec->croph, 1, h);
|
elm_slider_min_max_set(ec->croph, 1, h);
|
||||||
elm_slider_step_set(ec->croph, 1);
|
elm_slider_step_set(ec->croph, 1);
|
||||||
elm_slider_unit_format_set(ec->croph, "%1.0f");
|
elm_slider_unit_format_set(ec->croph, "%1.0f");
|
||||||
|
@ -708,52 +714,36 @@ ephoto_cropper_add(Evas_Object *main, Evas_Object *parent,
|
||||||
evas_object_size_hint_weight_set(ec->croph, EVAS_HINT_EXPAND,
|
evas_object_size_hint_weight_set(ec->croph, EVAS_HINT_EXPAND,
|
||||||
EVAS_HINT_FILL);
|
EVAS_HINT_FILL);
|
||||||
evas_object_size_hint_align_set(ec->croph, EVAS_HINT_FILL, 0.5);
|
evas_object_size_hint_align_set(ec->croph, EVAS_HINT_FILL, 0.5);
|
||||||
elm_box_pack_end(vbox, ec->croph);
|
elm_box_pack_start(ec->editor, ec->croph);
|
||||||
evas_object_smart_callback_add(ec->croph, "slider,drag,stop",
|
evas_object_smart_callback_add(ec->croph, "slider,drag,stop",
|
||||||
_cropper_changed_height, ec);
|
_cropper_changed_height, ec);
|
||||||
evas_object_show(ec->croph);
|
evas_object_show(ec->croph);
|
||||||
|
|
||||||
ic = elm_icon_add(vbox);
|
ec->cropw = elm_slider_add(ec->editor);
|
||||||
elm_icon_order_lookup_set(ic, ELM_ICON_LOOKUP_FDO_THEME);
|
elm_slider_min_max_set(ec->cropw, 1, w);
|
||||||
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
|
elm_slider_step_set(ec->cropw, 1);
|
||||||
elm_icon_standard_set(ic, "edit-undo");
|
elm_slider_unit_format_set(ec->cropw, "%1.0f");
|
||||||
|
elm_object_text_set(ec->cropw, _("Width"));
|
||||||
|
evas_object_size_hint_weight_set(ec->cropw, EVAS_HINT_EXPAND,
|
||||||
|
EVAS_HINT_FILL);
|
||||||
|
evas_object_size_hint_align_set(ec->cropw, EVAS_HINT_FILL, 0.5);
|
||||||
|
elm_box_pack_start(ec->editor, ec->cropw);
|
||||||
|
evas_object_smart_callback_add(ec->cropw, "slider,drag,stop",
|
||||||
|
_cropper_changed_width, ec);
|
||||||
|
evas_object_show(ec->cropw);
|
||||||
|
|
||||||
button = elm_button_add(vbox);
|
ec->handlers =
|
||||||
elm_object_text_set(button, _("Reset"));
|
eina_list_append(ec->handlers,
|
||||||
elm_object_part_content_set(button, "icon", ic);
|
ecore_event_handler_add(EPHOTO_EVENT_EDITOR_RESET,
|
||||||
evas_object_smart_callback_add(button, "clicked", _reset_crop, ec);
|
_crop_reset, ec));
|
||||||
evas_object_size_hint_weight_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
ec->handlers =
|
||||||
evas_object_size_hint_align_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
eina_list_append(ec->handlers,
|
||||||
elm_box_pack_end(vbox, button);
|
ecore_event_handler_add(EPHOTO_EVENT_EDITOR_APPLY,
|
||||||
evas_object_show(button);
|
_crop_apply, ec));
|
||||||
|
ec->handlers =
|
||||||
ic = elm_icon_add(vbox);
|
eina_list_append(ec->handlers,
|
||||||
elm_icon_order_lookup_set(ic, ELM_ICON_LOOKUP_FDO_THEME);
|
ecore_event_handler_add(EPHOTO_EVENT_EDITOR_CANCEL,
|
||||||
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
|
_crop_cancel, ec));
|
||||||
elm_icon_standard_set(ic, "document-save");
|
|
||||||
|
|
||||||
button = elm_button_add(vbox);
|
|
||||||
elm_object_text_set(button, _("Apply"));
|
|
||||||
elm_object_part_content_set(button, "icon", ic);
|
|
||||||
evas_object_smart_callback_add(button, "clicked", _apply_crop, ec);
|
|
||||||
evas_object_size_hint_weight_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
||||||
evas_object_size_hint_align_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
||||||
elm_box_pack_end(vbox, button);
|
|
||||||
evas_object_show(button);
|
|
||||||
|
|
||||||
ic = elm_icon_add(vbox);
|
|
||||||
elm_icon_order_lookup_set(ic, ELM_ICON_LOOKUP_FDO_THEME);
|
|
||||||
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
|
|
||||||
elm_icon_standard_set(ic, "window-close");
|
|
||||||
|
|
||||||
button = elm_button_add(vbox);
|
|
||||||
elm_object_text_set(button, _("Cancel"));
|
|
||||||
elm_object_part_content_set(button, "icon", ic);
|
|
||||||
evas_object_smart_callback_add(button, "clicked", _cancel_crop, ec);
|
|
||||||
evas_object_size_hint_weight_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
||||||
evas_object_size_hint_align_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
||||||
elm_box_pack_end(vbox, button);
|
|
||||||
evas_object_show(button);
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
@ -6,10 +6,11 @@ struct _Ephoto_HSV
|
||||||
Evas_Object *main;
|
Evas_Object *main;
|
||||||
Evas_Object *parent;
|
Evas_Object *parent;
|
||||||
Evas_Object *image;
|
Evas_Object *image;
|
||||||
Evas_Object *frame;
|
Evas_Object *editor;
|
||||||
Evas_Object *hslider;
|
Evas_Object *hslider;
|
||||||
Evas_Object *sslider;
|
Evas_Object *sslider;
|
||||||
Evas_Object *vslider;
|
Evas_Object *vslider;
|
||||||
|
Eina_List *handlers;
|
||||||
double hue;
|
double hue;
|
||||||
double saturation;
|
double saturation;
|
||||||
double value;
|
double value;
|
||||||
|
@ -255,8 +256,8 @@ _value_slider_changed(void *data, Evas_Object *obj,
|
||||||
_ephoto_hsv_adjust_saturation(ehsv, ehsv->saturation, image_data_two);
|
_ephoto_hsv_adjust_saturation(ehsv, ehsv->saturation, image_data_two);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static Eina_Bool
|
||||||
_hsv_reset(void *data, Evas_Object *obj EINA_UNUSED,
|
_hsv_reset(void *data, int type EINA_UNUSED,
|
||||||
void *event_info EINA_UNUSED)
|
void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Ephoto_HSV *ehsv = data;
|
Ephoto_HSV *ehsv = data;
|
||||||
|
@ -268,10 +269,12 @@ _hsv_reset(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
ehsv->saturation = 0;
|
ehsv->saturation = 0;
|
||||||
ehsv->value = 0;
|
ehsv->value = 0;
|
||||||
_hue_slider_changed(ehsv, ehsv->hslider, NULL);
|
_hue_slider_changed(ehsv, ehsv->hslider, NULL);
|
||||||
|
|
||||||
|
return ECORE_CALLBACK_PASS_ON;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static Eina_Bool
|
||||||
_hsv_apply(void *data, Evas_Object *obj EINA_UNUSED,
|
_hsv_apply(void *data, int type EINA_UNUSED,
|
||||||
void *event_info EINA_UNUSED)
|
void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Ephoto_HSV *ehsv = data;
|
Ephoto_HSV *ehsv = data;
|
||||||
|
@ -284,11 +287,13 @@ _hsv_apply(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
evas_object_image_size_get(elm_image_object_get(ehsv->image), &w, &h);
|
evas_object_image_size_get(elm_image_object_get(ehsv->image), &w, &h);
|
||||||
ephoto_single_browser_image_data_update(ehsv->main, ehsv->image, EINA_TRUE,
|
ephoto_single_browser_image_data_update(ehsv->main, ehsv->image, EINA_TRUE,
|
||||||
image_data, w, h);
|
image_data, w, h);
|
||||||
evas_object_del(ehsv->frame);
|
ephoto_editor_del(ehsv->editor);
|
||||||
|
|
||||||
|
return ECORE_CALLBACK_PASS_ON;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static Eina_Bool
|
||||||
_hsv_cancel(void *data, Evas_Object *obj EINA_UNUSED,
|
_hsv_cancel(void *data, int type EINA_UNUSED,
|
||||||
void *event_info EINA_UNUSED)
|
void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Ephoto_HSV *ehsv = data;
|
Ephoto_HSV *ehsv = data;
|
||||||
|
@ -301,15 +306,20 @@ _hsv_cancel(void *data, Evas_Object *obj EINA_UNUSED,
|
||||||
ehsv->value = 0;
|
ehsv->value = 0;
|
||||||
_hue_slider_changed(ehsv, ehsv->hslider, NULL);
|
_hue_slider_changed(ehsv, ehsv->hslider, NULL);
|
||||||
ephoto_single_browser_cancel_editing(ehsv->main, ehsv->image);
|
ephoto_single_browser_cancel_editing(ehsv->main, ehsv->image);
|
||||||
evas_object_del(ehsv->frame);
|
ephoto_editor_del(ehsv->editor);
|
||||||
|
|
||||||
|
return ECORE_CALLBACK_PASS_ON;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_frame_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
_editor_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
||||||
void *event_info EINA_UNUSED)
|
void *event_info EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Ephoto_HSV *ehsv = data;
|
Ephoto_HSV *ehsv = data;
|
||||||
|
Ecore_Event_Handler *handler;
|
||||||
|
|
||||||
|
EINA_LIST_FREE(ehsv->handlers, handler)
|
||||||
|
ecore_event_handler_del(handler);
|
||||||
free(ehsv->original_im_data);
|
free(ehsv->original_im_data);
|
||||||
free(ehsv);
|
free(ehsv);
|
||||||
}
|
}
|
||||||
|
@ -317,7 +327,7 @@ _frame_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
|
||||||
void
|
void
|
||||||
ephoto_hsv_add(Evas_Object *main, Evas_Object *parent, Evas_Object *image)
|
ephoto_hsv_add(Evas_Object *main, Evas_Object *parent, Evas_Object *image)
|
||||||
{
|
{
|
||||||
Evas_Object *box, *slider, *ic, *button;
|
Evas_Object *slider;
|
||||||
Ephoto_HSV *ehsv;
|
Ephoto_HSV *ehsv;
|
||||||
unsigned int *im_data;
|
unsigned int *im_data;
|
||||||
|
|
||||||
|
@ -341,39 +351,26 @@ ephoto_hsv_add(Evas_Object *main, Evas_Object *parent, Evas_Object *image)
|
||||||
memcpy(ehsv->original_im_data, im_data,
|
memcpy(ehsv->original_im_data, im_data,
|
||||||
sizeof(unsigned int) * ehsv->w * ehsv->h);
|
sizeof(unsigned int) * ehsv->w * ehsv->h);
|
||||||
|
|
||||||
ehsv->frame = elm_frame_add(parent);
|
ehsv->editor = ephoto_editor_add(parent, _("Hue/Saturation/Value"),
|
||||||
elm_object_text_set(ehsv->frame, _("Hue/Saturation/Value"));
|
"ehsv", ehsv);
|
||||||
evas_object_size_hint_weight_set(ehsv->frame, 0.3, EVAS_HINT_EXPAND);
|
evas_object_event_callback_add(ehsv->editor, EVAS_CALLBACK_DEL, _editor_del,
|
||||||
evas_object_size_hint_align_set(ehsv->frame,
|
|
||||||
EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
||||||
elm_box_pack_end(parent, ehsv->frame);
|
|
||||||
evas_object_data_set(ehsv->frame, "ehsv", ehsv);
|
|
||||||
evas_object_event_callback_add(ehsv->frame, EVAS_CALLBACK_DEL, _frame_del,
|
|
||||||
ehsv);
|
ehsv);
|
||||||
evas_object_show(ehsv->frame);
|
|
||||||
|
|
||||||
box = elm_box_add(ehsv->frame);
|
slider = elm_slider_add(ehsv->editor);
|
||||||
elm_box_horizontal_set(box, EINA_FALSE);
|
elm_object_text_set(slider, _("Value"));
|
||||||
evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
elm_slider_min_max_set(slider, -100, 100);
|
||||||
evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
elm_slider_step_set(slider, 1.20);
|
||||||
elm_object_content_set(ehsv->frame, box);
|
|
||||||
evas_object_show(box);
|
|
||||||
|
|
||||||
slider = elm_slider_add(box);
|
|
||||||
elm_object_text_set(slider, _("Hue"));
|
|
||||||
elm_slider_min_max_set(slider, -180, 180);
|
|
||||||
elm_slider_step_set(slider, 1);
|
|
||||||
elm_slider_value_set(slider, 0);
|
elm_slider_value_set(slider, 0);
|
||||||
elm_slider_unit_format_set(slider, "%1.0f");
|
elm_slider_unit_format_set(slider, "%1.2f");
|
||||||
evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
|
evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
|
||||||
evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
|
evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
|
||||||
evas_object_smart_callback_add(slider, "delay,changed", _hue_slider_changed,
|
evas_object_smart_callback_add(slider, "delay,changed", _value_slider_changed,
|
||||||
ehsv);
|
ehsv);
|
||||||
elm_box_pack_end(box, slider);
|
elm_box_pack_start(ehsv->editor, slider);
|
||||||
evas_object_show(slider);
|
evas_object_show(slider);
|
||||||
ehsv->hslider = slider;
|
ehsv->vslider = slider;
|
||||||
|
|
||||||
slider = elm_slider_add(box);
|
slider = elm_slider_add(ehsv->editor);
|
||||||
elm_object_text_set(slider, _("Saturation"));
|
elm_object_text_set(slider, _("Saturation"));
|
||||||
elm_slider_min_max_set(slider, -100, 100);
|
elm_slider_min_max_set(slider, -100, 100);
|
||||||
elm_slider_step_set(slider, 1.20);
|
elm_slider_step_set(slider, 1.20);
|
||||||
|
@ -383,66 +380,36 @@ ephoto_hsv_add(Evas_Object *main, Evas_Object *parent, Evas_Object *image)
|
||||||
evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
|
evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
|
||||||
evas_object_smart_callback_add(slider, "delay,changed",
|
evas_object_smart_callback_add(slider, "delay,changed",
|
||||||
_saturation_slider_changed, ehsv);
|
_saturation_slider_changed, ehsv);
|
||||||
elm_box_pack_end(box, slider);
|
elm_box_pack_start(ehsv->editor, slider);
|
||||||
evas_object_show(slider);
|
evas_object_show(slider);
|
||||||
ehsv->sslider = slider;
|
ehsv->sslider = slider;
|
||||||
|
|
||||||
slider = elm_slider_add(box);
|
slider = elm_slider_add(ehsv->editor);
|
||||||
elm_object_text_set(slider, _("Value"));
|
elm_object_text_set(slider, _("Hue"));
|
||||||
elm_slider_min_max_set(slider, -100, 100);
|
elm_slider_min_max_set(slider, -180, 180);
|
||||||
elm_slider_step_set(slider, 1.20);
|
elm_slider_step_set(slider, 1);
|
||||||
elm_slider_value_set(slider, 0);
|
elm_slider_value_set(slider, 0);
|
||||||
elm_slider_unit_format_set(slider, "%1.2f");
|
elm_slider_unit_format_set(slider, "%1.0f");
|
||||||
evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
|
evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
|
||||||
evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
|
evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
|
||||||
evas_object_smart_callback_add(slider, "delay,changed",
|
evas_object_smart_callback_add(slider, "delay,changed",
|
||||||
_value_slider_changed, ehsv);
|
_hue_slider_changed, ehsv);
|
||||||
elm_box_pack_end(box, slider);
|
elm_box_pack_start(ehsv->editor, slider);
|
||||||
evas_object_show(slider);
|
evas_object_show(slider);
|
||||||
ehsv->vslider = slider;
|
ehsv->hslider = slider;
|
||||||
|
|
||||||
ic = elm_icon_add(box);
|
|
||||||
elm_icon_order_lookup_set(ic, ELM_ICON_LOOKUP_FDO_THEME);
|
|
||||||
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
|
|
||||||
elm_icon_standard_set(ic, "edit-undo");
|
|
||||||
|
|
||||||
button = elm_button_add(box);
|
|
||||||
elm_object_text_set(button, _("Reset"));
|
|
||||||
elm_object_part_content_set(button, "icon", ic);
|
|
||||||
evas_object_smart_callback_add(button, "clicked", _hsv_reset, ehsv);
|
|
||||||
evas_object_size_hint_weight_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
||||||
evas_object_size_hint_align_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
||||||
elm_box_pack_end(box, button);
|
|
||||||
evas_object_show(button);
|
|
||||||
|
|
||||||
ic = elm_icon_add(box);
|
|
||||||
elm_icon_order_lookup_set(ic, ELM_ICON_LOOKUP_FDO_THEME);
|
|
||||||
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
|
|
||||||
elm_icon_standard_set(ic, "document-save");
|
|
||||||
|
|
||||||
button = elm_button_add(box);
|
|
||||||
elm_object_text_set(button, _("Apply"));
|
|
||||||
elm_object_part_content_set(button, "icon", ic);
|
|
||||||
evas_object_smart_callback_add(button, "clicked", _hsv_apply, ehsv);
|
|
||||||
evas_object_size_hint_weight_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
||||||
evas_object_size_hint_align_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
||||||
elm_box_pack_end(box, button);
|
|
||||||
evas_object_show(button);
|
|
||||||
|
|
||||||
ic = elm_icon_add(box);
|
|
||||||
elm_icon_order_lookup_set(ic, ELM_ICON_LOOKUP_FDO_THEME);
|
|
||||||
evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
|
|
||||||
elm_icon_standard_set(ic, "window-close");
|
|
||||||
|
|
||||||
button = elm_button_add(box);
|
|
||||||
elm_object_text_set(button, _("Cancel"));
|
|
||||||
elm_object_part_content_set(button, "icon", ic);
|
|
||||||
evas_object_smart_callback_add(button, "clicked", _hsv_cancel, ehsv);
|
|
||||||
evas_object_size_hint_weight_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
||||||
evas_object_size_hint_align_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
||||||
elm_box_pack_end(box, button);
|
|
||||||
evas_object_show(button);
|
|
||||||
|
|
||||||
|
ehsv->handlers =
|
||||||
|
eina_list_append(ehsv->handlers,
|
||||||
|
ecore_event_handler_add(EPHOTO_EVENT_EDITOR_RESET,
|
||||||
|
_hsv_reset, ehsv));
|
||||||
|
ehsv->handlers =
|
||||||
|
eina_list_append(ehsv->handlers,
|
||||||
|
ecore_event_handler_add(EPHOTO_EVENT_EDITOR_APPLY,
|
||||||
|
_hsv_apply, ehsv));
|
||||||
|
ehsv->handlers =
|
||||||
|
eina_list_append(ehsv->handlers,
|
||||||
|
ecore_event_handler_add(EPHOTO_EVENT_EDITOR_CANCEL,
|
||||||
|
_hsv_cancel, ehsv));
|
||||||
return;
|
return;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
|
|
|
@ -4,6 +4,9 @@ int EPHOTO_EVENT_ENTRY_CREATE = 0;
|
||||||
int EPHOTO_EVENT_POPULATE_START = 0;
|
int EPHOTO_EVENT_POPULATE_START = 0;
|
||||||
int EPHOTO_EVENT_POPULATE_END = 0;
|
int EPHOTO_EVENT_POPULATE_END = 0;
|
||||||
int EPHOTO_EVENT_POPULATE_ERROR = 0;
|
int EPHOTO_EVENT_POPULATE_ERROR = 0;
|
||||||
|
int EPHOTO_EVENT_EDITOR_RESET = 0;
|
||||||
|
int EPHOTO_EVENT_EDITOR_APPLY = 0;
|
||||||
|
int EPHOTO_EVENT_EDITOR_CANCEL = 0;
|
||||||
|
|
||||||
typedef struct _Ephoto_Entry_Free_Listener Ephoto_Entry_Free_Listener;
|
typedef struct _Ephoto_Entry_Free_Listener Ephoto_Entry_Free_Listener;
|
||||||
struct _Ephoto_Entry_Free_Listener
|
struct _Ephoto_Entry_Free_Listener
|
||||||
|
@ -198,6 +201,9 @@ ephoto_window_add(const char *path)
|
||||||
EPHOTO_EVENT_POPULATE_START = ecore_event_type_new();
|
EPHOTO_EVENT_POPULATE_START = ecore_event_type_new();
|
||||||
EPHOTO_EVENT_POPULATE_END = ecore_event_type_new();
|
EPHOTO_EVENT_POPULATE_END = ecore_event_type_new();
|
||||||
EPHOTO_EVENT_POPULATE_ERROR = ecore_event_type_new();
|
EPHOTO_EVENT_POPULATE_ERROR = ecore_event_type_new();
|
||||||
|
EPHOTO_EVENT_EDITOR_RESET = ecore_event_type_new();
|
||||||
|
EPHOTO_EVENT_EDITOR_APPLY = ecore_event_type_new();
|
||||||
|
EPHOTO_EVENT_EDITOR_CANCEL = ecore_event_type_new();
|
||||||
|
|
||||||
ephoto->selentries = NULL;
|
ephoto->selentries = NULL;
|
||||||
ephoto->win = elm_win_util_standard_add("ephoto", "Ephoto");
|
ephoto->win = elm_win_util_standard_add("ephoto", "Ephoto");
|
||||||
|
|
Loading…
Reference in New Issue