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;
|
import eina_types;
|
||||||
|
parse efl_canvas_gesture_recognizer;
|
||||||
|
|
||||||
class @beta Efl.Canvas.Gesture_Custom extends Efl.Canvas.Gesture
|
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.
|
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
|
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;
|
c_prefix: efl_gesture_custom;
|
||||||
methods {
|
methods {
|
||||||
|
|
|
@ -39,60 +39,25 @@ static Efl_Canvas_Gesture *
|
||||||
static const Efl_Event_Description *
|
static const Efl_Event_Description *
|
||||||
_gesture_recognizer_event_type_get(const Efl_Canvas_Gesture_Recognizer *recognizer)
|
_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)
|
if (type == EFL_CANVAS_GESTURE_TAP_CLASS)
|
||||||
{
|
return EFL_EVENT_GESTURE_TAP;
|
||||||
case EFL_GESTURE_RECOGNIZER_TYPE_TAP:
|
if (type == EFL_CANVAS_GESTURE_DOUBLE_TAP_CLASS)
|
||||||
return EFL_EVENT_GESTURE_TAP;
|
return EFL_EVENT_GESTURE_DOUBLE_TAP;
|
||||||
case EFL_GESTURE_RECOGNIZER_TYPE_DOUBLE_TAP:
|
if (type == EFL_CANVAS_GESTURE_TRIPLE_TAP_CLASS)
|
||||||
return EFL_EVENT_GESTURE_DOUBLE_TAP;
|
return EFL_EVENT_GESTURE_TRIPLE_TAP;
|
||||||
case EFL_GESTURE_RECOGNIZER_TYPE_TRIPLE_TAP:
|
if (type == EFL_CANVAS_GESTURE_LONG_TAP_CLASS)
|
||||||
return EFL_EVENT_GESTURE_TRIPLE_TAP;
|
return EFL_EVENT_GESTURE_LONG_TAP;
|
||||||
case EFL_GESTURE_RECOGNIZER_TYPE_LONG_TAP:
|
if (type == EFL_CANVAS_GESTURE_MOMENTUM_CLASS)
|
||||||
return EFL_EVENT_GESTURE_LONG_TAP;
|
return EFL_EVENT_GESTURE_MOMENTUM;
|
||||||
case EFL_GESTURE_RECOGNIZER_TYPE_MOMENTUM:
|
if (type == EFL_CANVAS_GESTURE_FLICK_CLASS)
|
||||||
return EFL_EVENT_GESTURE_MOMENTUM;
|
return EFL_EVENT_GESTURE_FLICK;
|
||||||
case EFL_GESTURE_RECOGNIZER_TYPE_FLICK:
|
if (type == EFL_CANVAS_GESTURE_ZOOM_CLASS)
|
||||||
return EFL_EVENT_GESTURE_FLICK;
|
return EFL_EVENT_GESTURE_ZOOM;
|
||||||
case EFL_GESTURE_RECOGNIZER_TYPE_ZOOM:
|
return EFL_EVENT_GESTURE_CUSTOM;
|
||||||
return EFL_EVENT_GESTURE_ZOOM;
|
|
||||||
case EFL_GESTURE_RECOGNIZER_TYPE_CUSTOM:
|
|
||||||
return EFL_EVENT_GESTURE_CUSTOM;
|
|
||||||
default: break;
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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
|
static void
|
||||||
_cleanup_object(Eina_Array *arr)
|
_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)
|
if (!gesture)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
|
|
@ -14,11 +14,11 @@ abstract @beta Efl.Canvas.Gesture_Recognizer extends Efl.Object
|
||||||
c_prefix: efl_gesture_recognizer;
|
c_prefix: efl_gesture_recognizer;
|
||||||
methods {
|
methods {
|
||||||
@property type @pure_virtual {
|
@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.]]
|
It must be implemented for the recognizer to function.]]
|
||||||
get {}
|
get {}
|
||||||
values {
|
values {
|
||||||
type: Efl.Canvas.Gesture_Recognizer_Type; [[The gesture type to recognize.]]
|
type: const(Efl.Class); [[The gesture type to recognize.]]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
recognize @pure_virtual {
|
recognize @pure_virtual {
|
||||||
|
|
|
@ -2,10 +2,10 @@
|
||||||
|
|
||||||
#define MY_CLASS EFL_CANVAS_GESTURE_RECOGNIZER_CUSTOM_CLASS
|
#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)
|
_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 *
|
EOLIAN static Eo *
|
||||||
|
|
|
@ -4,10 +4,10 @@
|
||||||
|
|
||||||
#define TAP_TIME_OUT 0.33
|
#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)
|
_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
|
EOLIAN static void
|
||||||
|
|
|
@ -22,10 +22,10 @@ _reset_recognizer(Efl_Canvas_Gesture_Recognizer_Flick_Data *pd)
|
||||||
pd->touched = EINA_FALSE;
|
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)
|
_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
|
static void
|
||||||
|
|
|
@ -4,10 +4,10 @@
|
||||||
|
|
||||||
#define EFL_GESTURE_LONG_TAP_TIME_OUT 1.2
|
#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)
|
_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
|
EOLIAN static void
|
||||||
|
|
|
@ -7,10 +7,10 @@
|
||||||
#define THUMBSCROLL_MOMENTUM_THRESHOLD 100.0
|
#define THUMBSCROLL_MOMENTUM_THRESHOLD 100.0
|
||||||
#define EFL_GESTURE_MINIMUM_MOMENTUM 0.001
|
#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)
|
_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
|
static void
|
||||||
|
|
|
@ -6,10 +6,10 @@
|
||||||
// may using dobule tap timeout value?
|
// may using dobule tap timeout value?
|
||||||
#define EFL_GESTURE_RECOGNIZER_TYPE_TAP_TIME_OUT 0.33
|
#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)
|
_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
|
static Eina_Bool
|
||||||
|
|
|
@ -4,10 +4,10 @@
|
||||||
|
|
||||||
#define TAP_TIME_OUT 0.33
|
#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)
|
_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
|
EOLIAN static void
|
||||||
|
|
|
@ -125,10 +125,10 @@ _zoom_compute(Efl_Canvas_Gesture_Recognizer_Zoom_Data *pd,
|
||||||
return rt;
|
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)
|
_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
|
EOLIAN static Efl_Canvas_Gesture_Recognizer_Result
|
||||||
|
|
Loading…
Reference in New Issue