From e1665be85c1c7d426a194f604f593b0ec9b9c337 Mon Sep 17 00:00:00 2001 From: tasn Date: Sun, 6 Nov 2011 09:22:50 +0000 Subject: [PATCH] Elm test: Use momentum gesture in glayer test. 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 | 63 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 51 insertions(+), 12 deletions(-) diff --git a/src/bin/test_gesture_layer.c b/src/bin/test_gesture_layer.c index ecc8daa..2b7d4c2 100644 --- a/src/bin/test_gesture_layer.c +++ b/src/bin/test_gesture_layer.c @@ -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; -- 2.7.4