Elm test: Use momentum gesture in glayer test.

SVN revision: 64806
This commit is contained in:
Tom Hacohen 2011-11-06 09:22:50 +00:00
parent ee08b97b4d
commit 2d619d99ff
1 changed files with 51 additions and 12 deletions

View 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;