[clutter/wip/touchpad-gestures: 1/2] event: Add pinch/swipe gesture event types and structs



commit 5a946446fc2df5b61bb5ccc554922dd83be23cc8
Author: Carlos Garnacho <carlosg gnome org>
Date:   Fri May 22 18:30:09 2015 +0200

    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(+), 0 deletions(-)
---
diff --git a/clutter/clutter-enums.h b/clutter/clutter-enums.h
index 859579d..1226943 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 26d5611..1fcd0e4 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 9e39693..330e900 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 5fc12c9..1346b57 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;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]