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