GEIS  2.0
Gesture Engine Interface Support

Gesture state information. More...

Data Structures

class  GeisGroup
 A collection of gesture frames. More...
 
class  GeisGroupSet
 A collection of GeisGroups. More...
 
class  GeisTouch
 An instance of a touch. More...
 
class  GeisTouchId
 Relates a touch in a frame to a touch object in a set. More...
 
class  GeisTouchSet
 A collection of GeisTouch. More...
 
class  GeisFrame
 A collection of information describing the state of a gesture. More...
 

Functions

GeisStatus geis_gesture_accept (Geis geis, GeisGroup group, GeisGestureId gesture_id)
 Marks a gesture as accepted. More...
 
GeisStatus geis_gesture_reject (Geis geis, GeisGroup group, GeisGestureId gesture_id)
 Marks a gesture as rejected. More...
 
GeisSize geis_groupset_group_count (GeisGroupSet groupset)
 Gets the number of gesture groups in a groupset. More...
 
GeisGroup geis_groupset_group (GeisGroupSet groupset, GeisSize index)
 Gets an indicated gesture group from a groupset. More...
 
GeisInteger geis_group_id (GeisGroup group)
 Gets the identifier of a gesture group. More...
 
GeisSize geis_group_frame_count (GeisGroup group)
 Gets the number of gesture frames in a gesture group. More...
 
GeisFrame geis_group_frame (GeisGroup group, GeisSize index)
 Gets an indicated gesture frame from a gesture group. More...
 
void geis_group_reject (GeisGroup group)
 Marks a gesture group as rejected. More...
 
GeisSize geis_touchset_touch_count (GeisTouchSet touchset)
 Gets the number of touches in a touchset. More...
 
GeisTouch geis_touchset_touch (GeisTouchSet touchset, GeisSize index)
 Gets an indicated touch from a touchset. More...
 
GeisTouch geis_touchset_touch_by_id (GeisTouchSet touchset, GeisTouchId touchid)
 Gets an identified touch from a touchset. More...
 
GeisTouchId geis_touch_id (GeisTouch touch)
 Gets the identifier of a touch. More...
 
GeisSize geis_touch_attr_count (GeisTouch touch)
 Gets the number of attrs associated with a touch. More...
 
GeisAttr geis_touch_attr (GeisTouch touch, GeisSize index)
 Gets an indicated attr from a touch. More...
 
GeisAttr geis_touch_attr_by_name (GeisTouch touch, GeisString name)
 Gets a named attr from a touch. More...
 
GeisGestureId geis_frame_id (GeisFrame frame)
 Gets the identifier of a gesture frame. More...
 
GeisBoolean geis_frame_is_class (GeisFrame frame, GeisGestureClass gesture_class)
 Indicates if a gesture frame belongs to a gesture class. More...
 
GeisSize geis_frame_attr_count (GeisFrame frame)
 Gets the number of attrs associated with a gesture frame. More...
 
GeisAttr geis_frame_attr (GeisFrame frame, GeisSize index)
 Gets an indicated attr from a gesture frame. More...
 
GeisAttr geis_frame_attr_by_name (GeisFrame frame, GeisString name)
 Gets a named attr from a gesture frame. More...
 
GeisFloat * geis_frame_matrix (GeisFrame frame)
 Gets the current transform matrix of a gesture. More...
 
GeisSize geis_frame_touchid_count (GeisFrame frame)
 Gets the number of touches making up a gesture for the frame. More...
 
GeisTouchId geis_frame_touchid (GeisFrame frame, GeisSize index)
 Gets the ID of the indicated touch within the gesture frame. More...
 

Gesture Frame Event Attributes

A gesture event (GEIS_EVENT_GESTURE_BEGIN, GEIS_EVENT_GESTURE_UPDATE, GEIS_EVENT_GESTURE_END) should have two GEIS_ATTR_TYPE_POINTER attributes, one containing a GeisGroupSet and one containing a GeisTouchSet.

For example: If four fingers are being simultaneously moved over a touchpad or touchscreen surface, Geis could start generating gesture events containing two groups: One group having a single frame from a four-fingers gesture of some class and a second group having two frames, each from a different two-fingers gesture (like one from a Rotate and the other from a Pinch gesture). This means that geis could interpret the movements of those four touch points as both a single four-fingers gesture and as two separate two-fingers gestures.

There can be only a single frame per gesture in a gesture event. I.e. no two frames will return the same GeisGestureId in the same gesture event.

#define GEIS_EVENT_ATTRIBUTE_GROUPSET
 The event attribute containing a pointer to a GeisGroupSet. More...
 
#define GEIS_EVENT_ATTRIBUTE_TOUCHSET
 The event attribute containing a pointer to a GeisTouchSet. More...
 
#define GEIS_EVENT_ATTRIBUTE_CONSTRUCTION_FINISHED
 Event attribute containing a boolean. More...
 

Touch Attributes

Each touch has zero or more attributes associated with it. Differing hardware is capable of reporting differing sets of touch attributes, so there is no guarantee that any or all of the defined touch attributes will bre present.

If the touch comes from a direct device (see GEIS_DEVICE_ATTRIBUTE_DIRECT_TOUCH) its position (x and y attributes) will be in window coordinates, otherwise it will be in the input device's own coordinate system.

#define GEIS_TOUCH_ATTRIBUTE_ID
 Identifies the touch. More...
 
#define GEIS_TOUCH_ATTRIBUTE_X
 The X coordinate of the touch. More...
 
#define GEIS_TOUCH_ATTRIBUTE_Y
 The Y coordinate of the touch. More...
 

Detailed Description

Gesture state information.

Gesture frames, and their associated groups and touches, convey information about the current state of recognized gestures.

Macro Definition Documentation

#define GEIS_EVENT_ATTRIBUTE_CONSTRUCTION_FINISHED

Event attribute containing a boolean.

This property allows the client to determine if all the possible gestures from the set of touches in this event have already been presented. When this value is true, the client will have received all the information needed to make a gesture accept and reject decision based on potentially overlapping gestures. An example is when both one and two touch gestures are subscribed on the same window with the same gesture classes and thresholds. When this property is true for one touch gesture events, the client can be sure there are no other touches unless a two touch gesture event has already been sent. Another example is when you subscribe for three touches Touch and four touches Drag. As soon as a third finger is detected a three touches Touch gesture will begin, but you cannot be sure a fourth finger isn't coming right after (that can eventually cause a four touches Drag) until this property is true.

#define GEIS_EVENT_ATTRIBUTE_GROUPSET

The event attribute containing a pointer to a GeisGroupSet.

#define GEIS_EVENT_ATTRIBUTE_TOUCHSET

The event attribute containing a pointer to a GeisTouchSet.

#define GEIS_TOUCH_ATTRIBUTE_ID

Identifies the touch.

#define GEIS_TOUCH_ATTRIBUTE_X

The X coordinate of the touch.

#define GEIS_TOUCH_ATTRIBUTE_Y

The Y coordinate of the touch.

Function Documentation

GeisAttr geis_frame_attr ( GeisFrame  frame,
GeisSize  index 
)

Gets an indicated attr from a gesture frame.

Parameters
[in]frameThe gesture frame.
[in]indexIndicates which attr to retrieve.
GeisAttr geis_frame_attr_by_name ( GeisFrame  frame,
GeisString  name 
)

Gets a named attr from a gesture frame.

Parameters
[in]frameThe gesture frame.
[in]nameNames the attr to retrieve, such as one of the GEIS_GESTURE_ATTRIBUTE_* constants.
Returns
the named attr if it is present, NULL otherwise.

Usage example:

GeisSize geis_frame_attr_count ( GeisFrame  frame)

Gets the number of attrs associated with a gesture frame.

Parameters
[in]frameThe gesture frame.
GeisGestureId geis_frame_id ( GeisFrame  frame)

Gets the identifier of a gesture frame.

Parameters
[in]framethe gesture frame.
Returns
the identifier of the gesture to which the given frame belongs.
GeisBoolean geis_frame_is_class ( GeisFrame  frame,
GeisGestureClass  gesture_class 
)

Indicates if a gesture frame belongs to a gesture class.

Parameters
[in]frameThe gesture frame.
[in]gesture_classThe gesture class.
Returns
true if the gesture can currently be classified by the gesture_class, false otherwise.
GeisFloat * geis_frame_matrix ( GeisFrame  frame)

Gets the current transform matrix of a gesture.

Parameters
[in]frameThe gesture frame.
GeisTouchId geis_frame_touchid ( GeisFrame  frame,
GeisSize  index 
)

Gets the ID of the indicated touch within the gesture frame.

Parameters
[in]frameThe gesture frame.
[in]indexIndicates which touch ID to retrieve.
GeisSize geis_frame_touchid_count ( GeisFrame  frame)

Gets the number of touches making up a gesture for the frame.

Parameters
[in]frameThe gesture frame.
GeisStatus geis_gesture_accept ( Geis  geis,
GeisGroup  group,
GeisGestureId  gesture_id 
)

Marks a gesture as accepted.

Parameters
[in]geisThe GEIS instance.
[in]groupThe gesture group containing the accepted gesture.
[in]gesture_idIdentifies the gesture.
See also
geis_frame_id
GeisStatus geis_gesture_reject ( Geis  geis,
GeisGroup  group,
GeisGestureId  gesture_id 
)

Marks a gesture as rejected.

Parameters
[in]geisThe GEIS instance.
[in]groupThe gesture group containing the rejected gesture.
[in]gesture_idIdentifies the gesture.

After you reject a gesture you no longer get its frames.

See also
geis_frame_id
GeisFrame geis_group_frame ( GeisGroup  group,
GeisSize  index 
)

Gets an indicated gesture frame from a gesture group.

Parameters
[in]groupThe gesture group.
[in]indexIndicates which gesture frame to retrieve.
GeisSize geis_group_frame_count ( GeisGroup  group)

Gets the number of gesture frames in a gesture group.

Parameters
[in]groupThe gesture group.
GeisInteger geis_group_id ( GeisGroup  group)

Gets the identifier of a gesture group.

Parameters
[in]groupThe gesture group.
void geis_group_reject ( GeisGroup  group)

Marks a gesture group as rejected.

Parameters
[in]groupThe gesture group to reject.
GeisGroup geis_groupset_group ( GeisGroupSet  groupset,
GeisSize  index 
)

Gets an indicated gesture group from a groupset.

Parameters
[in]groupsetThe groupset.
[in]indexIndicates which gesture group to retrieve.
GeisSize geis_groupset_group_count ( GeisGroupSet  groupset)

Gets the number of gesture groups in a groupset.

Parameters
[in]groupsetThe groupset.
GeisAttr geis_touch_attr ( GeisTouch  touch,
GeisSize  index 
)

Gets an indicated attr from a touch.

Parameters
[in]touchThe touch.
[in]indexIndicates which attr to retrieve.
GeisAttr geis_touch_attr_by_name ( GeisTouch  touch,
GeisString  name 
)

Gets a named attr from a touch.

Parameters
[in]touchThe touch.
[in]nameNames the attr to retrieve.
Returns
the named attr if it is present, NULL otherwise.
GeisSize geis_touch_attr_count ( GeisTouch  touch)

Gets the number of attrs associated with a touch.

Parameters
[in]touchThe touch.
GeisTouchId geis_touch_id ( GeisTouch  touch)

Gets the identifier of a touch.

Parameters
[in]touchThe touch.
GeisTouch geis_touchset_touch ( GeisTouchSet  touchset,
GeisSize  index 
)

Gets an indicated touch from a touchset.

Parameters
[in]touchsetThe touchset.
[in]indexIndicates which touch to retrieve.
GeisTouch geis_touchset_touch_by_id ( GeisTouchSet  touchset,
GeisTouchId  touchid 
)

Gets an identified touch from a touchset.

Parameters
[in]touchsetThe touchset.
[in]touchidIdentifies a touch.

Returns the identified touch, or NULL if the touchid is not in the touchset.

GeisSize geis_touchset_touch_count ( GeisTouchSet  touchset)

Gets the number of touches in a touchset.

Parameters
[in]touchsetThe touchset,