rimmed pushed a commit to branch master.

http://git.enlightenment.org/tools/eflete.git/commit/?id=1b17133c88768f7b0f7d5d4dee4fca0121ba16da

commit 1b17133c88768f7b0f7d5d4dee4fca0121ba16da
Author: Vyacheslav Reutskiy <v.reuts...@samsung.com>
Date:   Tue Mar 22 13:58:09 2016 +0200

    container: take into account the zoom factor in the calculation
    
    Change-Id: Ia48bc053a6ecd3516e1336cf5a4a8275baeaf0e0
---
 src/bin/ui/workspace/container.c | 70 +++++++++++++++++++++++++++++++---------
 src/bin/ui/workspace/container.h | 21 ++++++++++++
 2 files changed, 76 insertions(+), 15 deletions(-)

diff --git a/src/bin/ui/workspace/container.c b/src/bin/ui/workspace/container.c
index a05c2d9..f444834 100644
--- a/src/bin/ui/workspace/container.c
+++ b/src/bin/ui/workspace/container.c
@@ -70,6 +70,8 @@ struct _Container_Smart_Data
    } handler_BR;
    double aspect;
    Eina_Stringshare *style;
+   double zoom;
+   Container_Geom zoom1;
    Evas_Coord downx;
    Evas_Coord downy;
    Evas_Coord dx, dy;
@@ -133,7 +135,7 @@ _mouse_move_hBR_cb(void *data,
    sd->downx = ev->cur.canvas.x;
    sd->downy = ev->cur.canvas.y;
 
-   evas_object_smart_callback_call(o, SIG_HANDLER_BR_MOVE, &sd->size);
+   evas_object_smart_callback_call(o, SIG_HANDLER_BR_MOVE, &sd->zoom1);
    evas_object_smart_changed(o);
 }
 
@@ -208,6 +210,7 @@ _container_smart_add(Evas_Object *o)
    priv->size.h = 0;
    priv->handler_BR_pressed = false;
    priv->aspect = -1.0;
+   priv->zoom = 1.0;
 
    evas_object_smart_member_add(priv->container, o);
    evas_object_smart_member_add(priv->handler_BR.obj, o);
@@ -289,15 +292,16 @@ _container_smart_calculate(Evas_Object *o)
    Evas_Coord cw, ch;
    Evas_Coord hrb_x, hrb_y;
    Groupview_Geom *geom = NULL;
+   int divisior = 1;
    char buff[16];
 
    CONTAINER_DATA_GET(o, sd)
    evas_object_geometry_get(o, &x, &y, &w, &h);
 
    /* 1. calculate the container size */
-   sd->size.w += sd->dx;
+   sd->size.w += sd->zoom * (int)(sd->dx / sd->zoom);
    if (sd->aspect < 0)
-     sd->size.h += sd->dy;
+     sd->size.h += sd->zoom * (int)(sd->dy / sd->zoom);
    else
      sd->size.h = sd->size.w / sd->aspect;
 
@@ -323,15 +327,15 @@ _container_smart_calculate(Evas_Object *o)
    if (sd->size.w < 0) sd->size.w = 0;
    if (sd->size.h < 0) sd->size.h = 0;
 
-   if ((sd->con_size_min.w > 0) && (sd->size.w < sd->con_size_min.w))
-     sd->size.w = sd->con_size_min.w;
-   if ((sd->con_size_min.h > 0) && (sd->size.h < sd->con_size_min.h))
-     sd->size.h = sd->con_size_min.h;
+   if ((sd->con_size_min.w > 0) && (sd->size.w < sd->con_size_min.w * 
sd->zoom))
+     sd->size.w = sd->con_size_min.w * sd->zoom;
+   if ((sd->con_size_min.h > 0) && (sd->size.h < sd->con_size_min.h * 
sd->zoom))
+     sd->size.h = sd->con_size_min.h * sd->zoom;
 
-   if ((sd->con_size_max.w > -1) && (sd->size.w > sd->con_size_max.w))
-     sd->size.w = sd->con_size_max.w;
-   if ((sd->con_size_max.h > -1) && (sd->size.h > sd->con_size_max.h))
-     sd->size.h = sd->con_size_max.h;
+   if ((sd->con_size_max.w > -1) && (sd->size.w > sd->con_size_max.w * 
sd->zoom))
+     sd->size.w = sd->con_size_max.w * sd->zoom;
+   if ((sd->con_size_max.h > -1) && (sd->size.h > sd->con_size_max.h * 
sd->zoom))
+     sd->size.h = sd->con_size_max.h * sd->zoom;
 
    evas_object_resize(sd->container, sd->size.w, sd->size.h);
 
@@ -354,13 +358,26 @@ _container_smart_calculate(Evas_Object *o)
    ch = (hrb_y + sd->handler_BR.h + (geom ? geom->h : 0) + BASE_PADDING) - y;
    evas_object_size_hint_min_set(o, cw, ch);
 
-   snprintf(buff, 16, "%i %i", sd->size.w, sd->size.h);
+   if (fabs(sd->zoom - 1.0) < DBL_EPSILON)
+     {
+        sd->zoom1.w = sd->size.w;
+        sd->zoom1.h = sd->size.h;
+     }
+   else if (sd->handler_BR_pressed)
+     {
+        sd->zoom1.w = sd->size.w / sd->zoom;
+        sd->zoom1.h = sd->size.h / sd->zoom;
+     }
+   sd->zoom1.x = sd->size.x;
+   sd->zoom1.y = sd->size.y;
+   snprintf(buff, 16, "%i %i", sd->zoom1.w, sd->zoom1.h);
    edje_object_part_text_set(sd->container, TEXT_TOOLTIP, buff);
 
-   evas_object_smart_callback_call(o, SIG_CHANGED, &sd->size);
+   evas_object_smart_callback_call(o, SIG_CHANGED, &sd->zoom1);
 
-   sd->dx = 0;
-   sd->dy = 0;
+   if ((int)sd->zoom > 1) divisior = (int)sd->zoom;
+   sd->dx = sd->dx % divisior;
+   sd->dy = sd->dy % divisior;
 }
 
 /* this need for macro EVAS_SMART_SUBCLASS_NEW */
@@ -457,6 +474,7 @@ container_container_size_set(Evas_Object *obj, int w, int h)
 {
    CONTAINER_DATA_GET(obj, sd);
 
+   INFO ("%d\t%d", w, h);
    if (w <= sd->con_size_min.w) sd->size.w = sd->con_size_min.w;
    else
      {
@@ -473,6 +491,11 @@ container_container_size_set(Evas_Object *obj, int w, int 
h)
         else sd->size.h = h;
      }
 
+   sd->zoom1.w = w;
+   sd->zoom1.h = h;
+   sd->size.w *= sd->zoom;
+   sd->size.h *= sd->zoom;
+
    evas_object_smart_changed(obj);
    return true;
 }
@@ -623,3 +646,20 @@ container_aspect_get(Evas_Object *obj)
 
    return sd->aspect;
 }
+
+void
+container_zoom_factor_set(Evas_Object *obj, double zoom)
+{
+   CONTAINER_DATA_GET(obj, sd);
+
+   sd->zoom = zoom;
+   container_container_size_set(obj, sd->zoom1.w, sd->zoom1.h);
+}
+
+double
+container_zoom_factor_get(Evas_Object *obj)
+{
+   CONTAINER_DATA_GET(obj, sd);
+
+   return sd->zoom;
+}
diff --git a/src/bin/ui/workspace/container.h b/src/bin/ui/workspace/container.h
index d22423f..d7be77e 100644
--- a/src/bin/ui/workspace/container.h
+++ b/src/bin/ui/workspace/container.h
@@ -298,4 +298,25 @@ container_aspect_set(Evas_Object *obj, double aspect);
 double
 container_aspect_get(Evas_Object *obj);
 
+/**
+ * Set the zoom factor, this attribute have effect to resize step.
+ *
+ * @param obj The Container obj,
+ * @param zoom The zoom factor.
+ *
+ * @ingroup Container
+ */
+void
+container_zoom_factor_set(Evas_Object *obj, double zoom);
+
+/**
+ * Get the zoom factor
+ *
+ * @param obj The Container obj.
+ *
+ * @ingroup Container
+ */
+double
+container_zoom_factor_get(Evas_Object *obj);
+
 #endif /* CONTAINER_H */

-- 


Reply via email to