Elm test: Use momentum gesture in glayer test.
authortasn <tasn@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sun, 6 Nov 2011 09:22:50 +0000 (09:22 +0000)
committertasn <tasn@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sun, 6 Nov 2011 09:22:50 +0000 (09:22 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@64806 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/bin/test_gesture_layer.c

index ecc8daa..2b7d4c2 100644 (file)
@@ -173,9 +173,6 @@ zoom_start(void *_po, void *event_info)
         po->zoom_out = NULL;
      }
 
-
-   po->dx = p->x - po->bx;
-   po->dy = p->y - po->by;
    /* Give it a "lift" effect right from the start */
    po->base_zoom = BASE_ZOOM * LIFT_FACTOR;
    po->zoom = po->base_zoom;
@@ -192,8 +189,6 @@ zoom_move(void *_po, void *event_info)
    Elm_Gesture_Zoom_Info *p = (Elm_Gesture_Zoom_Info *) event_info;
    printf("zoom move <%d,%d> <%f>\n", p->x, p->y, p->zoom);
    po->zoom = po->base_zoom * p->zoom;
-   po->bx = p->x - po->dx;
-   po->by = p->y - po->dy;
    apply_changes(po);
    return EVAS_EVENT_FLAG_NONE;
 }
@@ -205,6 +200,52 @@ zoom_end(void *_po, void *event_info)
    Elm_Gesture_Zoom_Info *p = (Elm_Gesture_Zoom_Info *) event_info;
    printf("zoom end/abort <%d,%d> <%f>\n", p->x, p->y, p->zoom);
 
+   /* Apply the zoom out animator */
+   po->shadow_zoom = 1.3;
+   po->base_zoom = po->zoom;
+   po->zoom_out = elm_transit_add();
+   elm_transit_duration_set(po->zoom_out, zoom_out_animation_duration);
+   elm_transit_effect_add(po->zoom_out, zoom_out_animation_operation, po, zoom_out_animation_end);
+   elm_transit_go(po->zoom_out);
+   return EVAS_EVENT_FLAG_NONE;
+}
+
+static Evas_Event_Flags
+momentum_start(void *_po, void *event_info)
+{
+   Photo_Object *po = (Photo_Object *) _po;
+   Elm_Gesture_Momentum_Info *p = (Elm_Gesture_Momentum_Info *) event_info;
+   printf("momentum_start <%d,%d>\n", p->x2, p->y2);
+
+   po->dx = p->x2 - po->bx;
+   po->dy = p->y2 - po->by;
+   apply_changes(po);
+
+   return EVAS_EVENT_FLAG_NONE;
+}
+
+static Evas_Event_Flags
+momentum_move(void *_po, void *event_info)
+{
+   Photo_Object *po = (Photo_Object *) _po;
+   Elm_Gesture_Momentum_Info *p = (Elm_Gesture_Momentum_Info *) event_info;
+   printf("momentum move <%d,%d>\n", p->x2, p->y2);
+
+   po->bx = p->x2 - po->dx;
+   po->by = p->y2 - po->dy;
+   apply_changes(po);
+
+   return EVAS_EVENT_FLAG_NONE;
+}
+
+static Evas_Event_Flags
+momentum_end(void *_po, void *event_info)
+{
+   Photo_Object *po = (Photo_Object *) _po;
+   Elm_Gesture_Momentum_Info *p = (Elm_Gesture_Momentum_Info *) event_info;
+   printf("momentum end/abort <%d,%d> <%d,%d>\n", p->x2, p->y2, p->mx, p->my);
+   (void) po;
+   (void) p;
    /* Make sure middle is in the screen, if not, fix it. */
      {
         /* FIXME: Use actual window sizes instead of the hardcoded
@@ -222,14 +263,8 @@ zoom_end(void *_po, void *event_info)
         else if (my > 800)
            po->by = 800 - (po->bh / 2);
      }
+   apply_changes(po);
 
-   /* Apply the zoom out animator */
-   po->shadow_zoom = 1.3;
-   po->base_zoom = po->zoom;
-   po->zoom_out = elm_transit_add();
-   elm_transit_duration_set(po->zoom_out, zoom_out_animation_duration);
-   elm_transit_effect_add(po->zoom_out, zoom_out_animation_operation, po, zoom_out_animation_end);
-   elm_transit_go(po->zoom_out);
    return EVAS_EVENT_FLAG_NONE;
 }
 
@@ -306,6 +341,10 @@ photo_object_add(Evas_Object *parent, Evas_Object *ic, const char *icon, Evas_Co
    elm_gesture_layer_cb_set(po->gl, ELM_GESTURE_ZOOM, ELM_GESTURE_STATE_MOVE, zoom_move, po);
    elm_gesture_layer_cb_set(po->gl, ELM_GESTURE_ZOOM, ELM_GESTURE_STATE_END, zoom_end, po);
    elm_gesture_layer_cb_set(po->gl, ELM_GESTURE_ZOOM, ELM_GESTURE_STATE_ABORT, zoom_end, po);
+   elm_gesture_layer_cb_set(po->gl, ELM_GESTURE_MOMENTUM, ELM_GESTURE_STATE_START, momentum_start, po);
+   elm_gesture_layer_cb_set(po->gl, ELM_GESTURE_MOMENTUM, ELM_GESTURE_STATE_MOVE, momentum_move, po);
+   elm_gesture_layer_cb_set(po->gl, ELM_GESTURE_MOMENTUM, ELM_GESTURE_STATE_END, momentum_end, po);
+   elm_gesture_layer_cb_set(po->gl, ELM_GESTURE_MOMENTUM, ELM_GESTURE_STATE_ABORT, momentum_end, po);
 
    po->rotate = po->base_rotate = angle;
    po->shadow_zoom = 1.3;