Data Structures

struct  _Elm_Gesture_Taps_Info
 Struct holds taps info for user. More...
struct  _Elm_Gesture_Momentum_Info
 Struct holds momentum info for user x1 and y1 are not necessarily in sync x1 holds x value of x direction starting point and same holds for y1. More...
struct  _Elm_Gesture_Line_Info
 Struct holds line info for user. More...
struct  _Elm_Gesture_Zoom_Info
 Struct holds zoom info for user. More...
struct  _Elm_Gesture_Rotate_Info
 Struct holds rotation info for user. More...

Typedefs

typedef enum _Elm_Gesture_Type Elm_Gesture_Type
 Convenient macro around _Elm_Gesture_Type.
typedef enum _Elm_Gesture_State Elm_Gesture_State
 Convenient macro around _Elm_Gesture_State.
typedef struct
_Elm_Gesture_Taps_Info 
Elm_Gesture_Taps_Info
 holds taps info for user
typedef struct
_Elm_Gesture_Momentum_Info 
Elm_Gesture_Momentum_Info
 holds momentum info for user
typedef struct
_Elm_Gesture_Line_Info 
Elm_Gesture_Line_Info
 Holds line info for user.
typedef struct
_Elm_Gesture_Zoom_Info 
Elm_Gesture_Zoom_Info
 Holds zoom info for user.
typedef struct
_Elm_Gesture_Rotate_Info 
Elm_Gesture_Rotate_Info
 Holds rotation info for user.
typedef Evas_Event_Flags(* Elm_Gesture_Event_Cb )(void *data, void *event_info)
 User callback used to stream gesture info from gesture layer.

Enumerations

enum  _Elm_Gesture_Type { ,
  ELM_GESTURE_N_TAPS,
  ELM_GESTURE_N_LONG_TAPS,
  ELM_GESTURE_N_DOUBLE_TAPS,
  ELM_GESTURE_N_TRIPLE_TAPS,
  ELM_GESTURE_MOMENTUM,
  ELM_GESTURE_N_LINES,
  ELM_GESTURE_N_FLICKS,
  ELM_GESTURE_ZOOM,
  ELM_GESTURE_ROTATE
}
 Enum of supported gesture types. More...
enum  _Elm_Gesture_State {
  ELM_GESTURE_STATE_UNDEFINED = -1,
  ELM_GESTURE_STATE_START,
  ELM_GESTURE_STATE_MOVE,
  ELM_GESTURE_STATE_END,
  ELM_GESTURE_STATE_ABORT
}
 Enum of gesture states. More...

Functions

void elm_gesture_layer_cb_set (Evas_Object *obj, Elm_Gesture_Type idx, Elm_Gesture_State cb_type, Elm_Gesture_Event_Cb cb, void *data)
 Use function to set callbacks to be notified about change of state of gesture.
Eina_Bool elm_gesture_layer_hold_events_get (const Evas_Object *obj)
 Call this function to get repeat-events settings.
void elm_gesture_layer_hold_events_set (Evas_Object *obj, Eina_Bool hold_events)
 This function is to make gesture-layer repeat events.
void elm_gesture_layer_zoom_step_set (Evas_Object *obj, double step)
 This function sets step-value for zoom action.
double elm_gesture_layer_zoom_step_get (const Evas_Object *obj)
 This function returns step-value for zoom action.
void elm_gesture_layer_rotate_step_set (Evas_Object *obj, double step)
 This function sets step-value for rotate action.
double elm_gesture_layer_rotate_step_get (const Evas_Object *obj)
 This function returns step-value for rotate action.
Eina_Bool elm_gesture_layer_attach (Evas_Object *obj, Evas_Object *target)
 Attach a given gesture layer widget to an Evas object, thus setting the widget's target.
Evas_Object * elm_gesture_layer_add (Evas_Object *parent)
 Call this function to construct a new gesture-layer object.

Detailed Description

gesture_layer_inheritance_tree.png

Gesture Layer Usage:

Use Gesture Layer to detect gestures. The advantage is that you don't have to implement gesture detection, just set callbacks of gesture state. By using gesture layer we make standard interface.

In order to use Gesture Layer you start with elm_gesture_layer_add with a parent object parameter. Next 'activate' gesture layer with a elm_gesture_layer_attach call. Usually with same object as target (2nd parameter).

Now you need to tell gesture layer what gestures you follow. This is done with elm_gesture_layer_cb_set call. By setting the callback you actually saying to gesture layer: I would like to know when the gesture Elm_Gesture_Type switches to state Elm_Gesture_State.

Next, you need to implement the actual action that follows the input in your callback.

Note that if you like to stop being reported about a gesture, just set all callbacks referring this gesture to NULL. (again with elm_gesture_layer_cb_set)

The information reported by gesture layer to your callback is depending on Elm_Gesture_Type : Elm_Gesture_Taps_Info is the info reported for tap gestures: ELM_GESTURE_N_TAPS, ELM_GESTURE_N_LONG_TAPS, ELM_GESTURE_N_DOUBLE_TAPS, ELM_GESTURE_N_TRIPLE_TAPS.

Elm_Gesture_Momentum_Info is info reported for momentum gestures: ELM_GESTURE_MOMENTUM.

Elm_Gesture_Line_Info is the info reported for line gestures: (this also contains Elm_Gesture_Momentum_Info internal structure) ELM_GESTURE_N_LINES, ELM_GESTURE_N_FLICKS. Note that we consider a flick as a line-gesture that should be completed in flick-time-limit as defined in Elementary Config.

Elm_Gesture_Zoom_Info is the info reported for ELM_GESTURE_ZOOM gesture.

Elm_Gesture_Rotate_Info is the info reported for ELM_GESTURE_ROTATE gesture.

Gesture Layer Tweaks:

Note that line, flick, gestures can start without the need to remove fingers from surface. When user fingers rests on same-spot gesture is ended and starts again when fingers moved.

Setting glayer_continues_enable to false in Elementary Config will change this behavior so gesture starts when user touches (a *DOWN event) touch-surface and ends when no fingers touches surface (a *UP event).

Supported elm_object common APIs.


Typedef Documentation

User callback used to stream gesture info from gesture layer.

Parameters:
datauser data
event_infogesture report info Returns a flag field to be applied on the causing event. You should probably return EVAS_EVENT_FLAG_ON_HOLD if your widget acted upon the event, in an irreversible way.

Enumeration Type Documentation

Enum of gesture states.

Enumerator:
ELM_GESTURE_STATE_UNDEFINED 

Gesture not STARTed.

ELM_GESTURE_STATE_START 

Gesture STARTed.

ELM_GESTURE_STATE_MOVE 

Gesture is ongoing.

ELM_GESTURE_STATE_END 

Gesture completed.

ELM_GESTURE_STATE_ABORT 

Ongoing gesture was ABORTed.

Enum of supported gesture types.

Enumerator:
ELM_GESTURE_N_TAPS 

N fingers single taps.

ELM_GESTURE_N_LONG_TAPS 

N fingers single long-taps.

ELM_GESTURE_N_DOUBLE_TAPS 

N fingers double-single taps.

ELM_GESTURE_N_TRIPLE_TAPS 

N fingers triple-single taps.

ELM_GESTURE_MOMENTUM 

Reports momentum in the direction of move.

ELM_GESTURE_N_LINES 

N fingers line gesture.

ELM_GESTURE_N_FLICKS 

N fingers flick gesture.

ELM_GESTURE_ZOOM 

Zoom.

ELM_GESTURE_ROTATE 

Rotate.


Function Documentation

Evas_Object* elm_gesture_layer_add ( Evas_Object *  parent)

Call this function to construct a new gesture-layer object.

Parameters:
parentThe gesture layer's parent widget.
Returns:
A new gesture layer object.

This does not activate the gesture layer. You have to call elm_gesture_layer_attach() in order to 'activate' gesture-layer.

Referenced by elm_photocam_gesture_enabled_set().

Eina_Bool elm_gesture_layer_attach ( Evas_Object *  obj,
Evas_Object *  target 
)

Attach a given gesture layer widget to an Evas object, thus setting the widget's target.

Parameters:
objA gesture layer to attach an object to.
targetObject to attach to obj (target)

A gesture layer target may be whichever Evas object one chooses. This will be object obj will listen all mouse and key events from, to report the gestures made upon it back.

Returns:
EINA_TRUE, on success, EINA_FALSE otherwise.

Referenced by elm_photocam_gesture_enabled_set().

void elm_gesture_layer_cb_set ( Evas_Object *  obj,
Elm_Gesture_Type  idx,
Elm_Gesture_State  cb_type,
Elm_Gesture_Event_Cb  cb,
void *  data 
)

Use function to set callbacks to be notified about change of state of gesture.

When a user registers a callback with this function this means this gesture has to be tested.

When ALL callbacks for a gesture are set to NULL it means user isn't interested in gesture-state and it will not be tested.

Parameters:
objgesture-layer.
idxThe gesture you would like to track its state.
cbcallback function pointer.
cb_typewhat event this callback tracks: START, MOVE, END, ABORT.
datauser info to be sent to callback (usually, Smart Data)

References ELM_GESTURE_STATE_UNDEFINED.

Referenced by elm_photocam_gesture_enabled_set().

Eina_Bool elm_gesture_layer_hold_events_get ( const Evas_Object *  obj)

Call this function to get repeat-events settings.

Parameters:
objgesture-layer.
Returns:
repeat events settings.
See also:
elm_gesture_layer_hold_events_set()
void elm_gesture_layer_hold_events_set ( Evas_Object *  obj,
Eina_Bool  hold_events 
)

This function is to make gesture-layer repeat events.

Set this if you like to get the raw events only if gestures were not detected. Clear this if you like gesture layer to forward events as testing gestures.

Parameters:
objgesture layer.
hold_eventshold events or not.
double elm_gesture_layer_rotate_step_get ( const Evas_Object *  obj)

This function returns step-value for rotate action.

Parameters:
objgesture-layer.
Returns:
rotate step value.
void elm_gesture_layer_rotate_step_set ( Evas_Object *  obj,
double  step 
)

This function sets step-value for rotate action.

Set step to any positive value. Cancel step setting by setting to 0

Parameters:
objgesture-layer.
stepnew rotate step value.
double elm_gesture_layer_zoom_step_get ( const Evas_Object *  obj)

This function returns step-value for zoom action.

Parameters:
objgesture-layer.
Returns:
zoom step value.
See also:
elm_gesture_layer_zoom_step_set()
void elm_gesture_layer_zoom_step_set ( Evas_Object *  obj,
double  step 
)

This function sets step-value for zoom action.

Set step to any positive value. Cancel step setting by setting to 0

Parameters:
objgesture-layer.
stepnew zoom step value.
See also:
elm_gesture_layer_zoom_step_get()