jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=5af499b01b6448cd669d35330e6981e8a87ed43c

commit 5af499b01b6448cd669d35330e6981e8a87ed43c
Author: smohanty <[email protected]>
Date:   Mon Sep 25 15:25:42 2017 +0900

    evas/gesture: Added gesture and tap gesture implementation.
---
 src/Makefile_Evas.am                              |  2 +
 src/lib/evas/gesture/efl_gesture.c                | 36 ++++++++++
 src/lib/evas/gesture/efl_gesture_recognizer_tap.c | 84 +++++++++++++++++++++++
 src/lib/evas/gesture/efl_gesture_tap.c            | 31 +++++++++
 4 files changed, 153 insertions(+)

diff --git a/src/Makefile_Evas.am b/src/Makefile_Evas.am
index f88d17788e..7ef134ef05 100644
--- a/src/Makefile_Evas.am
+++ b/src/Makefile_Evas.am
@@ -266,6 +266,8 @@ lib/evas/canvas/efl_animation_object_group.c \
 lib/evas/canvas/efl_animation_object_group_parallel.c \
 lib/evas/canvas/efl_animation_object_group_sequential.c \
 lib/evas/gesture/efl_gesture_touch.c \
+lib/evas/gesture/efl_gesture.c \
+lib/evas/gesture/efl_gesture_tap.c \
 $(NULL)
 
 EXTRA_DIST2 += \
diff --git a/src/lib/evas/gesture/efl_gesture.c 
b/src/lib/evas/gesture/efl_gesture.c
new file mode 100644
index 0000000000..1ea99936e3
--- /dev/null
+++ b/src/lib/evas/gesture/efl_gesture.c
@@ -0,0 +1,36 @@
+#include "efl_gesture_private.h"
+
+#define MY_CLASS EFL_GESTURE_CLASS
+
+EOLIAN static const Efl_Event_Description *
+ _efl_gesture_type_get(Eo *obj EINA_UNUSED, Efl_Gesture_Data *pd)
+{
+   return pd->type;
+}
+
+EOLIAN static Efl_Gesture_State
+_efl_gesture_state_get(Eo *obj EINA_UNUSED, Efl_Gesture_Data *pd)
+{
+   return pd->state;
+}
+
+EOLIAN static void
+_efl_gesture_state_set(Eo *obj EINA_UNUSED, Efl_Gesture_Data *pd, 
Efl_Gesture_State state)
+{
+   pd->state = state;
+}
+
+EOLIAN static void
+_efl_gesture_hotspot_set(Eo *obj EINA_UNUSED, Efl_Gesture_Data *pd, 
Eina_Vector2 hotspot)
+{
+   pd->hotspot = hotspot;
+}
+
+
+EOLIAN static Eina_Vector2
+_efl_gesture_hotspot_get(Eo *obj EINA_UNUSED, Efl_Gesture_Data *pd)
+{
+   return pd->hotspot;
+}
+
+#include "efl_gesture.eo.c"
\ No newline at end of file
diff --git a/src/lib/evas/gesture/efl_gesture_recognizer_tap.c 
b/src/lib/evas/gesture/efl_gesture_recognizer_tap.c
new file mode 100644
index 0000000000..e89106c5e5
--- /dev/null
+++ b/src/lib/evas/gesture/efl_gesture_recognizer_tap.c
@@ -0,0 +1,84 @@
+#include "efl_gesture_private.h"
+
+#define MY_CLASS EFL_GESTURE_RECOGNIZER_TAP_CLASS
+
+typedef struct _Efl_Gesture_Recognizer_Tap_Data
+{
+
+} Efl_Gesture_Recognizer_Tap_Data;
+
+EOLIAN static Efl_Object *
+_efl_gesture_recognizer_tap_efl_object_constructor(Eo *obj, 
Efl_Gesture_Recognizer_Tap_Data *pd EINA_UNUSED)
+{
+   obj = efl_constructor(efl_super(obj, MY_CLASS));
+   return obj;
+}
+
+EOLIAN static void
+_efl_gesture_recognizer_tap_efl_object_destructor(Eo *obj EINA_UNUSED, 
Efl_Gesture_Recognizer_Tap_Data *pd EINA_UNUSED)
+{
+   efl_destructor(efl_super(obj, MY_CLASS));
+}
+
+EOLIAN static Efl_Gesture *
+_efl_gesture_recognizer_tap_efl_gesture_recognizer_create(Eo *obj EINA_UNUSED, 
Efl_Gesture_Recognizer_Tap_Data *pd EINA_UNUSED,
+                                                                Efl_Object 
*target EINA_UNUSED)
+{
+   return efl_add(EFL_GESTURE_TAP_CLASS, NULL);
+}
+
+EOLIAN static Efl_Gesture_Recognizer_Result
+_efl_gesture_recognizer_tap_efl_gesture_recognizer_recognize(Eo *obj 
EINA_UNUSED,
+                                                                   
Efl_Gesture_Recognizer_Tap_Data *pd EINA_UNUSED,
+                                                                   Efl_Gesture 
*gesture, Efl_Object *watched EINA_UNUSED,
+                                                                   
Efl_Gesture_Touch *event EINA_UNUSED)
+{
+    double dist_x, dist_y, length, x, y;
+    Efl_Gesture_Recognizer_Result result = EFL_GESTURE_CANCEL;
+
+    switch (efl_gesture_touch_state_get(event))
+      {
+         case EFL_GESTURE_TOUCH_BEGIN:
+           {
+              efl_gesture_touch_start_point(event, &x, &y);
+              efl_gesture_tap_position_set(gesture, EINA_POSITION2D(x, y));
+              efl_gesture_hotspot_set(gesture, EINA_POSITION2D(x, y));
+              result = EFL_GESTURE_TRIGGER;
+              break;
+           }
+         case EFL_GESTURE_TOUCH_UPDATE:
+         case EFL_GESTURE_TOUCH_END:
+           {
+              if (efl_gesture_state_get(gesture) != EFL_GESTURE_NONE &&
+                  !efl_gesture_touch_multi_touch_get(event))
+                {
+                   efl_gesture_touch_distance(event, 0, &dist_x, &dist_y);
+                   length = abs(dist_x) + abs(dist_y);
+                   if (length <= 50)
+                     {
+                        if (efl_gesture_touch_state_get(event) == 
EFL_GESTURE_TOUCH_END)
+                          result = EFL_GESTURE_FINISH;
+                        else
+                          result = EFL_GESTURE_TRIGGER;
+                     }
+                }
+              break;
+           }
+          default:
+             break;
+      }
+   return result;
+}
+
+EOLIAN static void
+_efl_gesture_recognizer_tap_efl_gesture_recognizer_reset(Eo *obj,
+                                                              
Efl_Gesture_Recognizer_Tap_Data *pd EINA_UNUSED,
+                                                              Efl_Gesture 
*gesture)
+{
+   Efl_Gesture_Tap_Data *tap;
+   tap = efl_data_scope_get(gesture, EFL_GESTURE_TAP_CLASS);
+   tap->pos = EINA_POSITION2D(0, 0);
+   efl_gesture_recognizer_reset(efl_super(obj, MY_CLASS), gesture);
+}
+
+#include "efl_gesture_recognizer_tap.eo.c"
\ No newline at end of file
diff --git a/src/lib/evas/gesture/efl_gesture_tap.c 
b/src/lib/evas/gesture/efl_gesture_tap.c
new file mode 100644
index 0000000000..50dbcf31f3
--- /dev/null
+++ b/src/lib/evas/gesture/efl_gesture_tap.c
@@ -0,0 +1,31 @@
+#include "efl_gesture_private.h"
+
+#define MY_CLASS EFL_GESTURE_TAP_CLASS
+
+
+EOLIAN static void
+_efl_gesture_tap_position_set(Eo *obj EINA_UNUSED, Efl_Gesture_Tap_Data *pd, 
Eina_Vector2 pos)
+{
+   pd->pos = pos;
+}
+
+EOLIAN static Eina_Vector2
+_efl_gesture_tap_position_get(Eo *obj EINA_UNUSED, Efl_Gesture_Tap_Data *pd)
+{
+   return pd->pos;
+}
+
+EOLIAN static Efl_Object *
+_efl_gesture_tap_efl_object_constructor(Eo *obj, Efl_Gesture_Tap_Data *pd 
EINA_UNUSED)
+{
+   Efl_Gesture_Data *gd;
+
+   obj = efl_constructor(efl_super(obj, MY_CLASS));
+
+   gd = efl_data_scope_get(obj, EFL_GESTURE_CLASS);
+   gd->type = EFL_EVENT_GESTURE_TAP;
+
+   return obj;
+}
+
+#include "efl_gesture_tap.eo.c"
\ No newline at end of file

-- 


Reply via email to