okra pushed a commit to branch master.

http://git.enlightenment.org/apps/ephoto.git/commit/?id=cf5a8d6a3cc0f982baf024978e0efda82fbb04ce

commit cf5a8d6a3cc0f982baf024978e0efda82fbb04ce
Author: Stephen Houston <smhousto...@gmail.com>
Date:   Tue Oct 27 14:53:26 2015 -0500

    Ephoto:  Finish the cleanup on the cropper appearance.
---
 data/themes/crop.edc     |   7 ++
 src/bin/ephoto_bcg.c     |   4 +-
 src/bin/ephoto_color.c   |   4 +-
 src/bin/ephoto_cropper.c | 219 ++++++++++++++++++++++++++++++++++++-----------
 src/bin/ephoto_hsv.c     |   4 +-
 5 files changed, 184 insertions(+), 54 deletions(-)

diff --git a/data/themes/crop.edc b/data/themes/crop.edc
index 9a84bfa..a6bc21d 100644
--- a/data/themes/crop.edc
+++ b/data/themes/crop.edc
@@ -126,11 +126,18 @@ collections {
                   set_state_val(PART:"ephoto.swallow.cropper", 
STATE_REL2_OFFSET, ppox, ppoy);
                }
                if (movetype == 10) {
+                  set_state_val(PART:"ephoto.swallow.cropper", 
STATE_REL1_OFFSET, 0, 0);
+                  set_state_val(PART:"ephoto.swallow.cropper", 
STATE_REL2_OFFSET, 0, 0);
+               }
+               if (movetype == 11) {
                   new buf[32];
                   snprintf(buf, sizeof(buf), "%dx%d", cox, coy);
                   set_text(PART:"ephoto.cropper.size", buf);
                }
                set_state(PART:"ephoto.swallow.cropper", "custom", 0.0);
+               if (movetype != 0) {
+                 emit("cropper,changed", "ephoto.swallow.cropper");
+               }
             }
          }
       }
diff --git a/src/bin/ephoto_bcg.c b/src/bin/ephoto_bcg.c
index 3fc677f..d183990 100644
--- a/src/bin/ephoto_bcg.c
+++ b/src/bin/ephoto_bcg.c
@@ -299,8 +299,8 @@ void ephoto_bcg_add(Evas_Object *main, Evas_Object *parent, 
Evas_Object *image)
    memcpy(ebcg->original_im_data, im_data, sizeof(unsigned int) * ebcg->w * 
ebcg->h);
 
    ebcg->frame = elm_frame_add(parent);
-   elm_object_text_set(ebcg->frame, "Brightness/Contrast/Gamma");
-   evas_object_size_hint_weight_set(ebcg->frame, 0.2, EVAS_HINT_EXPAND);
+   elm_object_text_set(ebcg->frame, _("Brightness/Contrast/Gamma"));
+   evas_object_size_hint_weight_set(ebcg->frame, 0.3, EVAS_HINT_EXPAND);
    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);
diff --git a/src/bin/ephoto_color.c b/src/bin/ephoto_color.c
index 9a40a67..c8987bd 100644
--- a/src/bin/ephoto_color.c
+++ b/src/bin/ephoto_color.c
@@ -289,8 +289,8 @@ void ephoto_color_add(Evas_Object *main, Evas_Object 
*parent, Evas_Object *image
    memcpy(eco->original_im_data, im_data, sizeof(unsigned int) * eco->w * 
eco->h);
 
    eco->frame = elm_frame_add(parent);
-   elm_object_text_set(eco->frame, "Adjust Color Levels");
-   evas_object_size_hint_weight_set(eco->frame, 0.2, EVAS_HINT_EXPAND);
+   elm_object_text_set(eco->frame, _("Adjust Color Levels"));
+   evas_object_size_hint_weight_set(eco->frame, 0.3, EVAS_HINT_EXPAND);
    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);
diff --git a/src/bin/ephoto_cropper.c b/src/bin/ephoto_cropper.c
index 4bfdf5b..67980c5 100644
--- a/src/bin/ephoto_cropper.c
+++ b/src/bin/ephoto_cropper.c
@@ -11,15 +11,141 @@ struct _Ephoto_Cropper
    Evas_Object *image;
    Evas_Object *cropper;
    Evas_Object *layout;
+   Evas_Object *cropw;
+   Evas_Object *croph;
    int startx;
    int starty;
    int offsetx;
    int offsety;
-   int resizing;
+   int resizing; 
+   int sliding;
 };
 
-static void _apply_crop(void *data, Evas_Object *obj EINA_UNUSED, void 
*event_info EINA_UNUSED);
-static void _cancel_crop(void *data, Evas_Object *obj EINA_UNUSED, void 
*event_info EINA_UNUSED);
+static void
+_calculate_cropper_size(void *data, Evas_Object *obj EINA_UNUSED, const char 
*emission EINA_UNUSED, const char *source EINA_UNUSED)
+{
+   Ephoto_Cropper *ec = data;
+
+   if (!ec->sliding)
+     {
+        Edje_Message_Int_Set *msg;
+        char buf[PATH_MAX];
+        int w, h, cw, ch, iw, ih, nw, nh;
+        double scalew, scaleh;
+
+        evas_object_geometry_get(ec->layout, 0, 0, &w, &h);
+        edje_object_part_geometry_get(elm_layout_edje_get(ec->layout),
+                                      "ephoto.swallow.cropper", 0, 0, &cw, 
&ch);
+        evas_object_image_size_get(elm_image_object_get(ec->image), &iw, &ih);
+
+        scalew = (double)cw/(double)w;
+        scaleh = (double)ch/(double)h;
+
+        nw = iw*scalew;
+        nh = ih*scaleh;
+
+        elm_slider_value_set(ec->cropw, nw);
+        elm_slider_value_set(ec->croph, nh); 
+
+        msg = alloca(sizeof(Edje_Message_Int_Set) + (3*sizeof(int)));
+        msg->count = 3;
+        msg->val[0] = 11;
+        msg->val[1] = nw;
+        msg->val[2] = nh;
+        edje_object_message_send(elm_layout_edje_get(ec->layout), 
EDJE_MESSAGE_INT_SET, 1, msg);
+     }
+}
+
+static void
+_cropper_changed_width(void *data, Evas_Object *obj EINA_UNUSED, void 
*event_info EINA_UNUSED)
+{
+   Ephoto_Cropper *ec = data;
+   Edje_Message_Int_Set *msg;
+   int mw, cx, cw, ch, nw, nh, lx, lw, iw;
+   double scalew;
+
+   ec->sliding = 1;
+
+   mw = elm_slider_value_get(ec->cropw);
+
+   evas_object_geometry_get(ec->cropper, &cx, 0, &cw, &ch);
+   evas_object_geometry_get(ec->layout, &lx, 0, &lw, 0);
+   evas_object_image_size_get(elm_image_object_get(ec->image), &iw, 0);
+
+   scalew = (double)lw/(double)iw;
+   nw = mw * scalew;
+   nh = ch;
+
+   msg = alloca(sizeof(Edje_Message_Int_Set) + (3*sizeof(int)));
+   msg->count = 3;
+   if ((nw+cx) >= (lx+lw))
+     {
+        msg->val[0] = 8;
+        nw = cw-nw;
+     }
+   else
+     {
+        msg->val[0] = 4;
+        nw -= cw;
+     }
+   msg->val[1] = nw;
+   msg->val[2] = 0;
+   edje_object_message_send(elm_layout_edje_get(ec->layout), 
EDJE_MESSAGE_INT_SET, 1, msg);
+
+   ec->sliding = 0;
+}
+
+static void
+_cropper_changed_height(void *data, Evas_Object *obj EINA_UNUSED, void 
*event_info EINA_UNUSED)
+{
+   Ephoto_Cropper *ec = data;
+   Edje_Message_Int_Set *msg;
+   int mh, ch, cy, nh, lh, ly, ih;
+   double scaleh;
+
+   ec->sliding = 1;
+
+   mh = elm_slider_value_get(ec->croph);
+
+   evas_object_geometry_get(ec->cropper, 0, &cy, 0, &ch);
+   evas_object_geometry_get(ec->layout, 0, &ly, 0, &lh);
+   evas_object_image_size_get(elm_image_object_get(ec->image), 0, &ih);
+
+   scaleh = (double)lh/(double)ih;
+   nh = mh * scaleh;
+
+   msg = alloca(sizeof(Edje_Message_Int_Set) + (3*sizeof(int)));
+   msg->count = 3;
+   if ((nh+cy) >= (ly+lh))
+     {
+        msg->val[0] = 2;
+        nh = ch-nh;
+     }
+   else
+     {
+        msg->val[0] = 6;
+        nh -= ch;
+     }
+   msg->val[1] = 0;
+   msg->val[2] = nh;
+   edje_object_message_send(elm_layout_edje_get(ec->layout), 
EDJE_MESSAGE_INT_SET, 1, msg);
+
+   ec->sliding = 0;
+}
+
+static void
+_reset_crop(void *data, Evas_Object *obj EINA_UNUSED, void *event_info 
EINA_UNUSED)
+{
+   Ephoto_Cropper *ec = data;
+   Edje_Message_Int_Set *msg;
+
+   msg = alloca(sizeof(Edje_Message_Int_Set) + (3*sizeof(int)));
+   msg->count = 3;
+   msg->val[0] = 10;
+   msg->val[1] = 0;
+   msg->val[2] = 0;
+   edje_object_message_send(elm_layout_edje_get(ec->layout), 
EDJE_MESSAGE_INT_SET, 1, msg);
+}
 
 static void
 _apply_crop(void *data, Evas_Object *obj EINA_UNUSED, void *event_info 
EINA_UNUSED)
@@ -89,32 +215,6 @@ _cancel_crop(void *data, Evas_Object *obj EINA_UNUSED, void 
*event_info EINA_UNU
 }
 
 static void
-_calculate_cropper_size(Ephoto_Cropper *ec)
-{
-   Edje_Message_Int_Set *msg;
-   int w, h, cw, ch, iw, ih, nw, nh;
-   double scalew, scaleh;
-
-   evas_object_geometry_get(ec->layout, 0, 0, &w, &h);
-   edje_object_part_geometry_get(elm_layout_edje_get(ec->layout), 
-                                 "ephoto.swallow.cropper", 0, 0, &cw, &ch);
-   evas_object_image_size_get(elm_image_object_get(ec->image), &iw, &ih);
-
-   scalew = (double)cw/(double)w;
-   scaleh = (double)ch/(double)h;
-
-   nw = iw*scalew;
-   nh = ih*scaleh;
-
-   msg = alloca(sizeof(Edje_Message_Int_Set) + (3*sizeof(int)));
-   msg->count = 3;
-   msg->val[0] = 10;
-   msg->val[1] = nw;
-   msg->val[2] = nh;
-   edje_object_message_send(elm_layout_edje_get(ec->layout), 
EDJE_MESSAGE_INT_SET, 1, msg);
-}
-
-static void
 _cropper_both_mouse_move(void *data, Evas_Object *obj EINA_UNUSED, const char 
*emission EINA_UNUSED, const char *source)
 {
    Ephoto_Cropper *ec = data;
@@ -153,7 +253,6 @@ _cropper_both_mouse_move(void *data, Evas_Object *obj 
EINA_UNUSED, const char *e
    msg->val[1] = nx;
    msg->val[2] = ny;
    edje_object_message_send(elm_layout_edje_get(ec->layout), 
EDJE_MESSAGE_INT_SET, 1, msg);
-   _calculate_cropper_size(ec);
 }
 
 static void
@@ -164,7 +263,6 @@ _cropper_both_mouse_up(void *data, Evas_Object *obj 
EINA_UNUSED, const char *emi
    edje_object_signal_callback_del_full(ec->cropper, "mouse,move", source, 
_cropper_both_mouse_move, ec);
    edje_object_signal_callback_del_full(ec->cropper, "mouse,up,1", source, 
_cropper_both_mouse_up, ec);
    ec->resizing = 0;
-   _calculate_cropper_size(ec);
 }
 
 static void
@@ -213,7 +311,6 @@ _cropper_horiz_mouse_move(void *data, Evas_Object *obj 
EINA_UNUSED, const char *
    msg->val[1] = nx;
    msg->val[2] = 0;
    edje_object_message_send(elm_layout_edje_get(ec->layout), 
EDJE_MESSAGE_INT_SET, 1, msg);
-   _calculate_cropper_size(ec);
 }
 
 static void
@@ -224,7 +321,6 @@ _cropper_horiz_mouse_up(void *data, Evas_Object *obj 
EINA_UNUSED, const char *em
    edje_object_signal_callback_del_full(ec->cropper, "mouse,move", source, 
_cropper_horiz_mouse_move, ec);
    edje_object_signal_callback_del_full(ec->cropper, "mouse,up,1", source, 
_cropper_horiz_mouse_up, ec);
    ec->resizing = 0;
-   _calculate_cropper_size(ec);
 }
 
 static void
@@ -273,7 +369,6 @@ _cropper_vert_mouse_move(void *data, Evas_Object *obj 
EINA_UNUSED, const char *e
    msg->val[1] = 0;
    msg->val[2] = ny;
    edje_object_message_send(elm_layout_edje_get(ec->layout), 
EDJE_MESSAGE_INT_SET, 1, msg);
-   _calculate_cropper_size(ec);
 }
 
 static void
@@ -284,7 +379,6 @@ _cropper_vert_mouse_up(void *data, Evas_Object *obj 
EINA_UNUSED, const char *emi
    edje_object_signal_callback_del_full(ec->cropper, "mouse,move", source, 
_cropper_vert_mouse_move, ec);
    edje_object_signal_callback_del_full(ec->cropper, "mouse,up,1", source, 
_cropper_vert_mouse_up, ec);
    ec->resizing = 0;
-   _calculate_cropper_size(ec);
 }
 
 static void
@@ -422,7 +516,6 @@ _image_resize(void *data, Evas *e EINA_UNUSED, Evas_Object 
*obj EINA_UNUSED, voi
    msg->val[1] = 0;
    msg->val[2] = 0;
    edje_object_message_send(elm_layout_edje_get(ec->layout), 
EDJE_MESSAGE_INT_SET, 1, msg);
-   _calculate_cropper_size(ec);
 }
 
 static void
@@ -435,8 +528,9 @@ _cropper_del(void *data, Evas *e EINA_UNUSED, Evas_Object 
*obj EINA_UNUSED, void
 void
 ephoto_cropper_add(Evas_Object *main, Evas_Object *parent, Evas_Object 
*image_parent, Evas_Object *image)
 {
-   Evas_Object *vbox, *ic, *button; //, *cropw, *croph, *label;
+   Evas_Object *vbox, *ic, *button;
    Ephoto_Cropper *ec;
+   int w, h;
 
    EINA_SAFETY_ON_NULL_GOTO(image, error);
 
@@ -449,6 +543,8 @@ ephoto_cropper_add(Evas_Object *main, Evas_Object *parent, 
Evas_Object *image_pa
    ec->image_parent = image_parent;
    ec->image = image;
 
+   evas_object_image_size_get(elm_image_object_get(image), &w, &h);
+
    ec->box = elm_box_add(image_parent);
    elm_box_homogeneous_set(ec->box, EINA_TRUE);
    elm_box_horizontal_set(ec->box, EINA_TRUE);
@@ -471,6 +567,7 @@ ephoto_cropper_add(Evas_Object *main, Evas_Object *parent, 
Evas_Object *image_pa
 
    ec->cropper = edje_object_add(evas_object_evas_get(ec->layout));
    edje_object_file_set(ec->cropper, PACKAGE_DATA_DIR "/themes/crop.edj", 
"ephoto,image,cropper");
+   edje_object_signal_callback_add(elm_layout_edje_get(ec->layout), 
"cropper,changed", "ephoto.swallow.cropper", _calculate_cropper_size, ec);
    elm_layout_content_set(ec->layout, "ephoto.swallow.cropper", ec->cropper);
    evas_object_show(ec->cropper);
 
@@ -488,8 +585,8 @@ ephoto_cropper_add(Evas_Object *main, Evas_Object *parent, 
Evas_Object *image_pa
    evas_object_event_callback_add(ec->box, EVAS_CALLBACK_DEL, _cropper_del, 
ec);
 
    ec->frame = elm_frame_add(parent);
-   elm_object_text_set(ec->frame, "Crop Image");
-   evas_object_size_hint_weight_set(ec->frame, 0.2, EVAS_HINT_EXPAND);
+   elm_object_text_set(ec->frame, _("Crop Image"));
+   evas_object_size_hint_weight_set(ec->frame, 0.3, EVAS_HINT_EXPAND);
    evas_object_size_hint_align_set(ec->frame, EVAS_HINT_FILL, EVAS_HINT_FILL);
    elm_box_pack_end(parent, ec->frame);
    evas_object_data_set(ec->frame, "ec", ec);
@@ -502,15 +599,41 @@ ephoto_cropper_add(Evas_Object *main, Evas_Object 
*parent, Evas_Object *image_pa
    elm_object_content_set(ec->frame, vbox);
    evas_object_show(vbox);
 
-   /*cropw = elm_entry_add(vbox);
-   elm_entry_single_line_set(cropw, EINA_TRUE);
-   elm_entry_scrollable_set(cropw, EINA_TRUE);
-   elm_scroller_policy_set(cropw, ELM_SCROLLER_POLICY_OFF, 
ELM_SCROLLER_POLICY_OFF);
-   evas_object_size_hint_weight_set(cropw, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
-   evas_object_size_hint_align_set(cropw, EVAS_HINT_FILL, EVAS_HINT_FILL);
-   elm_box_pack_end(vbox, cropw);
-   evas_object_smart_callback_add(cropw, "activated", NULL, ec);
-   evas_object_show(cropw);*/
+   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, "changed", 
_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_step_set(ec->croph, 1);
+   elm_slider_unit_format_set(ec->croph, "%1.0f");
+   elm_object_text_set(ec->croph, _("Height"));
+   evas_object_size_hint_weight_set(ec->croph, EVAS_HINT_EXPAND, 
EVAS_HINT_FILL);
+   evas_object_size_hint_align_set(ec->croph, EVAS_HINT_FILL, 0.5);
+   elm_box_pack_end(vbox, ec->croph);
+   evas_object_smart_callback_add(ec->croph, "changed", 
_cropper_changed_height, ec);
+   evas_object_show(ec->croph);
+
+   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, "edit-undo");
+
+   button = elm_button_add(vbox);
+   elm_object_text_set(button, _("Reset"));
+   elm_object_part_content_set(button, "icon", ic);
+   evas_object_smart_callback_add(button, "clicked", _reset_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);
diff --git a/src/bin/ephoto_hsv.c b/src/bin/ephoto_hsv.c
index 17e01ee..8fabc1d 100644
--- a/src/bin/ephoto_hsv.c
+++ b/src/bin/ephoto_hsv.c
@@ -310,8 +310,8 @@ void ephoto_hsv_add(Evas_Object *main, Evas_Object *parent, 
Evas_Object *image)
    memcpy(ehsv->original_im_data, im_data, sizeof(unsigned int) * ehsv->w * 
ehsv->h);
 
    ehsv->frame = elm_frame_add(parent);
-   elm_object_text_set(ehsv->frame, "Hue/Saturation/Value");
-   evas_object_size_hint_weight_set(ehsv->frame, 0.2, EVAS_HINT_EXPAND);
+   elm_object_text_set(ehsv->frame, _("Hue/Saturation/Value"));
+   evas_object_size_hint_weight_set(ehsv->frame, 0.3, EVAS_HINT_EXPAND);
    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);

-- 


Reply via email to