[PATCH weston v3 5/5] clients: Add pointer pinch gesture support to weston-image
Carlos Garnacho
carlosg at gnome.org
Fri Jul 31 06:59:55 PDT 2015
It will allow zooming in/out the loaded image.
Signed-off-by: Carlos Garnacho <carlosg at gnome.org>
---
clients/image.c | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
diff --git a/clients/image.c b/clients/image.c
index d28f221..b4339b8 100644
--- a/clients/image.c
+++ b/clients/image.c
@@ -61,6 +61,7 @@ struct image {
bool initialized;
cairo_matrix_t matrix;
+ float last_scale;
};
static double
@@ -330,6 +331,35 @@ axis_handler(struct widget *widget, struct input *input, uint32_t time,
}
static void
+pinch_begin_handler(struct widget *widget,
+ struct input *input,
+ uint32_t time,
+ uint32_t n_fingers,
+ void *data)
+{
+ struct image *image = data;
+
+ image->last_scale = 1;
+}
+
+static void
+pinch_update_handler(struct widget *widget,
+ struct input *input,
+ uint32_t time,
+ float dx,
+ float dy,
+ float scale,
+ float rotation_delta,
+ void *data)
+{
+ struct image *image = data;
+
+ zoom(image, scale / image->last_scale);
+ window_schedule_redraw(image->window);
+ image->last_scale = scale;
+}
+
+static void
fullscreen_handler(struct window *window, void *data)
{
struct image *image = data;
@@ -400,6 +430,11 @@ image_create(struct display *display, const char *filename,
widget_set_button_handler(image->widget, button_handler);
widget_set_axis_handler(image->widget, axis_handler);
window_set_key_handler(image->window, key_handler);
+ widget_set_pointer_gesture_pinch_begin_handler(image->widget,
+ pinch_begin_handler);
+ widget_set_pointer_gesture_pinch_update_handler(image->widget,
+ pinch_update_handler);
+
widget_schedule_resize(image->widget, 500, 400);
return image;
--
2.4.3
More information about the wayland-devel
mailing list