From 0cea6ffca97cb5f1f9ba23685a259088f427ebb5 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Fri, 22 May 2015 18:30:09 +0200 Subject: event: Add pinch/swipe gesture event types and structs --- clutter/clutter-enums.h | 24 +++++++++++++++++++ clutter/clutter-event.c | 64 +++++++++++++++++++++++++++++++++++++++++++++++++ clutter/clutter-event.h | 35 +++++++++++++++++++++++++++ clutter/clutter-main.c | 8 +++++++ 4 files changed, 131 insertions(+) diff --git a/clutter/clutter-enums.h b/clutter/clutter-enums.h index 9dd1b66c0..3f31d80aa 100644 --- a/clutter/clutter-enums.h +++ b/clutter/clutter-enums.h @@ -757,6 +757,22 @@ typedef enum { /*< flags prefix=CLUTTER_EVENT >*/ * event added in 1.10 * @CLUTTER_TOUCH_CANCEL: A touch event sequence has been canceled; * event added in 1.10 + * @CLUTTER_TOUCHPAD_PINCH_BEGIN: A pinch gesture has started; event + * added in 1.24 + * @CLUTTER_TOUCHPAD_PINCH_UPDATE: A pinch gesture has been updated; event + * added in 1.24 + * @CLUTTER_TOUCHPAD_PINCH_END: A pinch gesture has finished; event + * added in 1.24 + * @CLUTTER_TOUCHPAD_PINCH_CANCEL: A pinch gesture was cancelled; event + * added in 1.24 + * @CLUTTER_TOUCHPAD_SWIPE_BEGIN: A swipe gesture has started; event + * added in 1.24 + * @CLUTTER_TOUCHPAD_SWIPE_UPDATE: A swipe gesture has been updated; event + * added in 1.24 + * @CLUTTER_TOUCHPAD_SWIPE_END: A swipe gesture has finished; event + * added in 1.24 + * @CLUTTER_TOUCHPAD_SWIPE_CANCEL: A swipe gesture was cancelled; event + * added in 1.24 * @CLUTTER_EVENT_LAST: Marks the end of the #ClutterEventType enumeration; * added in 1.10 * @@ -782,6 +798,14 @@ typedef enum { /*< prefix=CLUTTER >*/ CLUTTER_TOUCH_UPDATE, CLUTTER_TOUCH_END, CLUTTER_TOUCH_CANCEL, + CLUTTER_TOUCHPAD_PINCH_BEGIN, + CLUTTER_TOUCHPAD_PINCH_UPDATE, + CLUTTER_TOUCHPAD_PINCH_END, + CLUTTER_TOUCHPAD_PINCH_CANCEL, + CLUTTER_TOUCHPAD_SWIPE_BEGIN, + CLUTTER_TOUCHPAD_SWIPE_UPDATE, + CLUTTER_TOUCHPAD_SWIPE_END, + CLUTTER_TOUCHPAD_SWIPE_CANCEL, CLUTTER_EVENT_LAST /* helper */ } ClutterEventType; diff --git a/clutter/clutter-event.c b/clutter/clutter-event.c index 26d561153..1fcd0e470 100644 --- a/clutter/clutter-event.c +++ b/clutter/clutter-event.c @@ -436,6 +436,22 @@ clutter_event_get_position (const ClutterEvent *event, case CLUTTER_SCROLL: clutter_point_init (position, event->scroll.x, event->scroll.y); break; + + case CLUTTER_TOUCHPAD_PINCH_BEGIN: + case CLUTTER_TOUCHPAD_PINCH_UPDATE: + case CLUTTER_TOUCHPAD_PINCH_END: + case CLUTTER_TOUCHPAD_PINCH_CANCEL: + clutter_point_init (position, event->touchpad_pinch.x, + event->touchpad_pinch.y); + break; + + case CLUTTER_TOUCHPAD_SWIPE_BEGIN: + case CLUTTER_TOUCHPAD_SWIPE_UPDATE: + case CLUTTER_TOUCHPAD_SWIPE_END: + case CLUTTER_TOUCHPAD_SWIPE_CANCEL: + clutter_point_init (position, event->touchpad_swipe.x, + event->touchpad_swipe.y); + break; } } @@ -498,6 +514,22 @@ clutter_event_set_coords (ClutterEvent *event, event->scroll.x = x; event->scroll.y = y; break; + + case CLUTTER_TOUCHPAD_PINCH_BEGIN: + case CLUTTER_TOUCHPAD_PINCH_UPDATE: + case CLUTTER_TOUCHPAD_PINCH_END: + case CLUTTER_TOUCHPAD_PINCH_CANCEL: + event->touchpad_pinch.x = x; + event->touchpad_pinch.y = y; + break; + + case CLUTTER_TOUCHPAD_SWIPE_BEGIN: + case CLUTTER_TOUCHPAD_SWIPE_UPDATE: + case CLUTTER_TOUCHPAD_SWIPE_END: + case CLUTTER_TOUCHPAD_SWIPE_CANCEL: + event->touchpad_swipe.x = x; + event->touchpad_swipe.y = y; + break; } } @@ -1097,6 +1129,17 @@ clutter_event_set_device (ClutterEvent *event, case CLUTTER_KEY_RELEASE: event->key.device = device; break; + + case CLUTTER_TOUCHPAD_PINCH_BEGIN: + case CLUTTER_TOUCHPAD_PINCH_UPDATE: + case CLUTTER_TOUCHPAD_PINCH_END: + case CLUTTER_TOUCHPAD_PINCH_CANCEL: + case CLUTTER_TOUCHPAD_SWIPE_BEGIN: + case CLUTTER_TOUCHPAD_SWIPE_UPDATE: + case CLUTTER_TOUCHPAD_SWIPE_END: + case CLUTTER_TOUCHPAD_SWIPE_CANCEL: + /* FIXME */ + break; } } @@ -1171,6 +1214,17 @@ clutter_event_get_device (const ClutterEvent *event) case CLUTTER_KEY_RELEASE: device = event->key.device; break; + + case CLUTTER_TOUCHPAD_PINCH_BEGIN: + case CLUTTER_TOUCHPAD_PINCH_UPDATE: + case CLUTTER_TOUCHPAD_PINCH_END: + case CLUTTER_TOUCHPAD_PINCH_CANCEL: + case CLUTTER_TOUCHPAD_SWIPE_BEGIN: + case CLUTTER_TOUCHPAD_SWIPE_UPDATE: + case CLUTTER_TOUCHPAD_SWIPE_END: + case CLUTTER_TOUCHPAD_SWIPE_CANCEL: + /* FIXME */ + break; } return device; @@ -1608,6 +1662,16 @@ clutter_event_get_axes (const ClutterEvent *event, case CLUTTER_MOTION: retval = event->motion.axes; break; + + case CLUTTER_TOUCHPAD_PINCH_BEGIN: + case CLUTTER_TOUCHPAD_PINCH_UPDATE: + case CLUTTER_TOUCHPAD_PINCH_END: + case CLUTTER_TOUCHPAD_PINCH_CANCEL: + case CLUTTER_TOUCHPAD_SWIPE_BEGIN: + case CLUTTER_TOUCHPAD_SWIPE_UPDATE: + case CLUTTER_TOUCHPAD_SWIPE_END: + case CLUTTER_TOUCHPAD_SWIPE_CANCEL: + break; } if (retval != NULL) diff --git a/clutter/clutter-event.h b/clutter/clutter-event.h index 9e3969349..330e9008f 100644 --- a/clutter/clutter-event.h +++ b/clutter/clutter-event.h @@ -115,6 +115,8 @@ typedef struct _ClutterScrollEvent ClutterScrollEvent; typedef struct _ClutterStageStateEvent ClutterStageStateEvent; typedef struct _ClutterCrossingEvent ClutterCrossingEvent; typedef struct _ClutterTouchEvent ClutterTouchEvent; +typedef struct _ClutterTouchpadPinchEvent ClutterTouchpadPinchEvent; +typedef struct _ClutterTouchpadSwipeEvent ClutterTouchpadSwipeEvent; /** * ClutterAnyEvent: @@ -384,6 +386,37 @@ struct _ClutterTouchEvent ClutterInputDevice *device; }; +struct _ClutterTouchpadPinchEvent +{ + ClutterEventType type; + guint32 time; + ClutterEventFlags flags; + ClutterStage *stage; + ClutterActor *source; + + gfloat x; + gfloat y; + gfloat dx; + gfloat dy; + gfloat angle_delta; + gfloat scale; +}; + +struct _ClutterTouchpadSwipeEvent +{ + ClutterEventType type; + guint32 time; + ClutterEventFlags flags; + ClutterStage *stage; + ClutterActor *source; + + guint n_fingers; + gfloat x; + gfloat y; + gfloat dx; + gfloat dy; +}; + /** * ClutterEvent: * @@ -404,6 +437,8 @@ union _ClutterEvent ClutterStageStateEvent stage_state; ClutterCrossingEvent crossing; ClutterTouchEvent touch; + ClutterTouchpadPinchEvent touchpad_pinch; + ClutterTouchpadSwipeEvent touchpad_swipe; }; /** diff --git a/clutter/clutter-main.c b/clutter/clutter-main.c index 5fc12c93d..1346b5758 100644 --- a/clutter/clutter-main.c +++ b/clutter/clutter-main.c @@ -2290,6 +2290,14 @@ _clutter_process_event_details (ClutterActor *stage, case CLUTTER_BUTTON_PRESS: case CLUTTER_BUTTON_RELEASE: case CLUTTER_SCROLL: + case CLUTTER_TOUCHPAD_PINCH_BEGIN: + case CLUTTER_TOUCHPAD_PINCH_UPDATE: + case CLUTTER_TOUCHPAD_PINCH_END: + case CLUTTER_TOUCHPAD_PINCH_CANCEL: + case CLUTTER_TOUCHPAD_SWIPE_BEGIN: + case CLUTTER_TOUCHPAD_SWIPE_UPDATE: + case CLUTTER_TOUCHPAD_SWIPE_END: + case CLUTTER_TOUCHPAD_SWIPE_CANCEL: { ClutterActor *actor; gfloat x, y; -- cgit v1.2.1