forked from enlightenment/efl
efl/gesture: rework custom gesture recognizer methodology
this needs to return the actual gesture class type so that custom gesture events can implement their own properties if necessary Reviewed-by: woochan lee <wc0917.lee@samsung.com> Differential Revision: https://phab.enlightenment.org/D11322
This commit is contained in:
parent
f917f75c56
commit
93abc9cbeb
|
@ -1,4 +1,5 @@
|
|||
import eina_types;
|
||||
parse efl_canvas_gesture_recognizer;
|
||||
|
||||
class @beta Efl.Canvas.Gesture_Custom extends Efl.Canvas.Gesture
|
||||
{
|
||||
|
@ -9,7 +10,8 @@ class @beta Efl.Canvas.Gesture_Custom extends Efl.Canvas.Gesture
|
|||
Application developers receive these objects inside a gesture event and do not typically need to create their own.
|
||||
|
||||
Custom gesture recognizers which implement their own gesture properties (e.g., gesture momentum or angle) must
|
||||
inherit this class.
|
||||
inherit this class, and their recognizers must implement the @Efl.Canvas.Gesture_Recognizer.type property to return
|
||||
this class.
|
||||
]]
|
||||
c_prefix: efl_gesture_custom;
|
||||
methods {
|
||||
|
|
|
@ -39,60 +39,25 @@ static Efl_Canvas_Gesture *
|
|||
static const Efl_Event_Description *
|
||||
_gesture_recognizer_event_type_get(const Efl_Canvas_Gesture_Recognizer *recognizer)
|
||||
{
|
||||
Efl_Canvas_Gesture_Recognizer_Type type = efl_gesture_recognizer_type_get(recognizer);
|
||||
const Efl_Class *type = efl_gesture_recognizer_type_get(recognizer);
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case EFL_GESTURE_RECOGNIZER_TYPE_TAP:
|
||||
return EFL_EVENT_GESTURE_TAP;
|
||||
case EFL_GESTURE_RECOGNIZER_TYPE_DOUBLE_TAP:
|
||||
return EFL_EVENT_GESTURE_DOUBLE_TAP;
|
||||
case EFL_GESTURE_RECOGNIZER_TYPE_TRIPLE_TAP:
|
||||
return EFL_EVENT_GESTURE_TRIPLE_TAP;
|
||||
case EFL_GESTURE_RECOGNIZER_TYPE_LONG_TAP:
|
||||
return EFL_EVENT_GESTURE_LONG_TAP;
|
||||
case EFL_GESTURE_RECOGNIZER_TYPE_MOMENTUM:
|
||||
return EFL_EVENT_GESTURE_MOMENTUM;
|
||||
case EFL_GESTURE_RECOGNIZER_TYPE_FLICK:
|
||||
return EFL_EVENT_GESTURE_FLICK;
|
||||
case EFL_GESTURE_RECOGNIZER_TYPE_ZOOM:
|
||||
return EFL_EVENT_GESTURE_ZOOM;
|
||||
case EFL_GESTURE_RECOGNIZER_TYPE_CUSTOM:
|
||||
return EFL_EVENT_GESTURE_CUSTOM;
|
||||
default: break;
|
||||
}
|
||||
return NULL;
|
||||
if (type == EFL_CANVAS_GESTURE_TAP_CLASS)
|
||||
return EFL_EVENT_GESTURE_TAP;
|
||||
if (type == EFL_CANVAS_GESTURE_DOUBLE_TAP_CLASS)
|
||||
return EFL_EVENT_GESTURE_DOUBLE_TAP;
|
||||
if (type == EFL_CANVAS_GESTURE_TRIPLE_TAP_CLASS)
|
||||
return EFL_EVENT_GESTURE_TRIPLE_TAP;
|
||||
if (type == EFL_CANVAS_GESTURE_LONG_TAP_CLASS)
|
||||
return EFL_EVENT_GESTURE_LONG_TAP;
|
||||
if (type == EFL_CANVAS_GESTURE_MOMENTUM_CLASS)
|
||||
return EFL_EVENT_GESTURE_MOMENTUM;
|
||||
if (type == EFL_CANVAS_GESTURE_FLICK_CLASS)
|
||||
return EFL_EVENT_GESTURE_FLICK;
|
||||
if (type == EFL_CANVAS_GESTURE_ZOOM_CLASS)
|
||||
return EFL_EVENT_GESTURE_ZOOM;
|
||||
return EFL_EVENT_GESTURE_CUSTOM;
|
||||
}
|
||||
|
||||
static const Efl_Class *
|
||||
_gesture_recognizer_class_type_get(const Efl_Canvas_Gesture_Recognizer *recognizer)
|
||||
{
|
||||
Efl_Canvas_Gesture_Recognizer_Type type = efl_gesture_recognizer_type_get(recognizer);
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case EFL_GESTURE_RECOGNIZER_TYPE_TAP:
|
||||
return EFL_CANVAS_GESTURE_TAP_CLASS;
|
||||
case EFL_GESTURE_RECOGNIZER_TYPE_DOUBLE_TAP:
|
||||
return EFL_CANVAS_GESTURE_DOUBLE_TAP_CLASS;
|
||||
case EFL_GESTURE_RECOGNIZER_TYPE_TRIPLE_TAP:
|
||||
return EFL_CANVAS_GESTURE_TRIPLE_TAP_CLASS;
|
||||
case EFL_GESTURE_RECOGNIZER_TYPE_LONG_TAP:
|
||||
return EFL_CANVAS_GESTURE_LONG_TAP_CLASS;
|
||||
case EFL_GESTURE_RECOGNIZER_TYPE_MOMENTUM:
|
||||
return EFL_CANVAS_GESTURE_MOMENTUM_CLASS;
|
||||
case EFL_GESTURE_RECOGNIZER_TYPE_FLICK:
|
||||
return EFL_CANVAS_GESTURE_FLICK_CLASS;
|
||||
case EFL_GESTURE_RECOGNIZER_TYPE_ZOOM:
|
||||
return EFL_CANVAS_GESTURE_ZOOM_CLASS;
|
||||
case EFL_GESTURE_RECOGNIZER_TYPE_CUSTOM:
|
||||
return EFL_CANVAS_GESTURE_CUSTOM_CLASS;
|
||||
default: break;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
_cleanup_object(Eina_Array *arr)
|
||||
{
|
||||
|
@ -503,7 +468,7 @@ _get_state(Efl_Canvas_Gesture_Manager_Data *pd,
|
|||
}
|
||||
}
|
||||
|
||||
gesture = efl_add(_gesture_recognizer_class_type_get(recognizer), recognizer);
|
||||
gesture = efl_add(efl_gesture_recognizer_type_get(recognizer), recognizer);
|
||||
if (!gesture)
|
||||
return 0;
|
||||
|
||||
|
|
|
@ -14,11 +14,11 @@ abstract @beta Efl.Canvas.Gesture_Recognizer extends Efl.Object
|
|||
c_prefix: efl_gesture_recognizer;
|
||||
methods {
|
||||
@property type @pure_virtual {
|
||||
[[This property returns the type of gesture recognized by this recognizer.
|
||||
[[This property returns the class type of gesture recognized by this recognizer.
|
||||
It must be implemented for the recognizer to function.]]
|
||||
get {}
|
||||
values {
|
||||
type: Efl.Canvas.Gesture_Recognizer_Type; [[The gesture type to recognize.]]
|
||||
type: const(Efl.Class); [[The gesture type to recognize.]]
|
||||
}
|
||||
}
|
||||
recognize @pure_virtual {
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
|
||||
#define MY_CLASS EFL_CANVAS_GESTURE_RECOGNIZER_CUSTOM_CLASS
|
||||
|
||||
EOLIAN static Efl_Canvas_Gesture_Recognizer_Type
|
||||
EOLIAN static const Efl_Class *
|
||||
_efl_canvas_gesture_recognizer_custom_efl_canvas_gesture_recognizer_type_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_Recognizer_Custom_Data *pd EINA_UNUSED)
|
||||
{
|
||||
return EFL_GESTURE_RECOGNIZER_TYPE_CUSTOM;
|
||||
return EFL_CANVAS_GESTURE_CUSTOM_CLASS;
|
||||
}
|
||||
|
||||
EOLIAN static Eo *
|
||||
|
|
|
@ -4,10 +4,10 @@
|
|||
|
||||
#define TAP_TIME_OUT 0.33
|
||||
|
||||
EOLIAN static Efl_Canvas_Gesture_Recognizer_Type
|
||||
EOLIAN static const Efl_Class *
|
||||
_efl_canvas_gesture_recognizer_double_tap_efl_canvas_gesture_recognizer_type_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_Recognizer_Double_Tap_Data *pd EINA_UNUSED)
|
||||
{
|
||||
return EFL_GESTURE_RECOGNIZER_TYPE_DOUBLE_TAP;
|
||||
return EFL_CANVAS_GESTURE_DOUBLE_TAP_CLASS;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
|
|
|
@ -22,10 +22,10 @@ _reset_recognizer(Efl_Canvas_Gesture_Recognizer_Flick_Data *pd)
|
|||
pd->touched = EINA_FALSE;
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Canvas_Gesture_Recognizer_Type
|
||||
EOLIAN static const Efl_Class *
|
||||
_efl_canvas_gesture_recognizer_flick_efl_canvas_gesture_recognizer_type_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_Recognizer_Flick_Data *pd EINA_UNUSED)
|
||||
{
|
||||
return EFL_GESTURE_RECOGNIZER_TYPE_FLICK;
|
||||
return EFL_CANVAS_GESTURE_FLICK_CLASS;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -4,10 +4,10 @@
|
|||
|
||||
#define EFL_GESTURE_LONG_TAP_TIME_OUT 1.2
|
||||
|
||||
EOLIAN static Efl_Canvas_Gesture_Recognizer_Type
|
||||
EOLIAN static const Efl_Class *
|
||||
_efl_canvas_gesture_recognizer_long_tap_efl_canvas_gesture_recognizer_type_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_Recognizer_Long_Tap_Data *pd EINA_UNUSED)
|
||||
{
|
||||
return EFL_GESTURE_RECOGNIZER_TYPE_LONG_TAP;
|
||||
return EFL_CANVAS_GESTURE_LONG_TAP_CLASS;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
|
|
|
@ -7,10 +7,10 @@
|
|||
#define THUMBSCROLL_MOMENTUM_THRESHOLD 100.0
|
||||
#define EFL_GESTURE_MINIMUM_MOMENTUM 0.001
|
||||
|
||||
EOLIAN static Efl_Canvas_Gesture_Recognizer_Type
|
||||
EOLIAN static const Efl_Class *
|
||||
_efl_canvas_gesture_recognizer_momentum_efl_canvas_gesture_recognizer_type_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_Recognizer_Momentum_Data *pd EINA_UNUSED)
|
||||
{
|
||||
return EFL_GESTURE_RECOGNIZER_TYPE_MOMENTUM;
|
||||
return EFL_CANVAS_GESTURE_MOMENTUM_CLASS;
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -6,10 +6,10 @@
|
|||
// may using dobule tap timeout value?
|
||||
#define EFL_GESTURE_RECOGNIZER_TYPE_TAP_TIME_OUT 0.33
|
||||
|
||||
EOLIAN static Efl_Canvas_Gesture_Recognizer_Type
|
||||
EOLIAN static const Efl_Class *
|
||||
_efl_canvas_gesture_recognizer_tap_efl_canvas_gesture_recognizer_type_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_Recognizer_Tap_Data *pd EINA_UNUSED)
|
||||
{
|
||||
return EFL_GESTURE_RECOGNIZER_TYPE_TAP;
|
||||
return EFL_CANVAS_GESTURE_TAP_CLASS;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
|
|
|
@ -4,10 +4,10 @@
|
|||
|
||||
#define TAP_TIME_OUT 0.33
|
||||
|
||||
EOLIAN static Efl_Canvas_Gesture_Recognizer_Type
|
||||
EOLIAN static const Efl_Class *
|
||||
_efl_canvas_gesture_recognizer_triple_tap_efl_canvas_gesture_recognizer_type_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_Recognizer_Triple_Tap_Data *pd EINA_UNUSED)
|
||||
{
|
||||
return EFL_GESTURE_RECOGNIZER_TYPE_TRIPLE_TAP;
|
||||
return EFL_CANVAS_GESTURE_TRIPLE_TAP_CLASS;
|
||||
}
|
||||
|
||||
EOLIAN static void
|
||||
|
|
|
@ -125,10 +125,10 @@ _zoom_compute(Efl_Canvas_Gesture_Recognizer_Zoom_Data *pd,
|
|||
return rt;
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Canvas_Gesture_Recognizer_Type
|
||||
EOLIAN static const Efl_Class *
|
||||
_efl_canvas_gesture_recognizer_zoom_efl_canvas_gesture_recognizer_type_get(const Eo *obj EINA_UNUSED, Efl_Canvas_Gesture_Recognizer_Zoom_Data *pd EINA_UNUSED)
|
||||
{
|
||||
return EFL_GESTURE_RECOGNIZER_TYPE_ZOOM;
|
||||
return EFL_CANVAS_GESTURE_ZOOM_CLASS;
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Canvas_Gesture_Recognizer_Result
|
||||
|
|
Loading…
Reference in New Issue