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...
 

Variables

uint32_t win_type
 Selects the implementation-specific window type. More...
 
void * win_info
 Additional info dependent on the window type. More...
 
GeisInputCallback added
 Receives new input device notices. More...
 
GeisInputCallback changed
 Receives modified input device notices. More...
 
GeisInputCallback removed
 Receives removes input device notices. More...
 
GeisString name
 The name of the gesture attribute. More...
 
GeisAttrType type
 The data type of the gesture attribute. More...
 
GeisBoolean   boolean_val
 
GeisFloat   float_val
 
GeisInteger   integer_val
 
GeisString   string_val
 
union {
   GeisBoolean   boolean_val
 
   GeisFloat   float_val
 
   GeisInteger   integer_val
 
   GeisString   string_val
 
}; 
 The value of the attributes. More...
 
GeisGestureCallback added
 Invoked when a new gesture type has been defined. More...
 
GeisGestureCallback removed
 Invoked when a defined gesture type is no longer available. More...
 
GeisGestureCallback start
 Invoked when a new gesture starts. More...
 
GeisGestureCallback update
 Invoked when a gesture has changed values. More...
 
GeisGestureCallback finish
 Invoked when a gesture finishes. 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.

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...
 
#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

◆ GEIS_EVENT_ATTRIBUTE_CONSTRUCTION_FINISHED

#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.

◆ GEIS_EVENT_ATTRIBUTE_GROUPSET

#define GEIS_EVENT_ATTRIBUTE_GROUPSET

The event attribute containing a pointer to a GeisGroupSet.

Examples
geis2.c.

◆ GEIS_EVENT_ATTRIBUTE_TOUCHSET

#define GEIS_EVENT_ATTRIBUTE_TOUCHSET

The event attribute containing a pointer to a GeisTouchSet.

Examples
geis2.c.

◆ GEIS_TOUCH_ATTRIBUTE_ID

#define GEIS_TOUCH_ATTRIBUTE_ID

Identifies the touch.

◆ GEIS_TOUCH_ATTRIBUTE_X

#define GEIS_TOUCH_ATTRIBUTE_X

The X coordinate of the touch.

◆ GEIS_TOUCH_ATTRIBUTE_Y

#define GEIS_TOUCH_ATTRIBUTE_Y

The Y coordinate of the touch.

Function Documentation

◆ geis_frame_attr()

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.
Examples
geis2.c.

◆ geis_frame_attr_by_name()

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:

◆ geis_frame_attr_count()

GeisSize geis_frame_attr_count ( GeisFrame  frame)

Gets the number of attrs associated with a gesture frame.

Parameters
[in]frameThe gesture frame.
Examples
geis2.c.

◆ geis_frame_id()

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.
Examples
geis2.c.

◆ geis_frame_is_class()

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.

◆ geis_frame_matrix()

GeisFloat * geis_frame_matrix ( GeisFrame  frame)

Gets the current transform matrix of a gesture.

Parameters
[in]frameThe gesture frame.

◆ geis_frame_touchid()

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.
Examples
geis2.c.

◆ geis_frame_touchid_count()

GeisSize geis_frame_touchid_count ( GeisFrame  frame)

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

Parameters
[in]frameThe gesture frame.
Examples
geis2.c.

◆ geis_gesture_accept()

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

◆ geis_gesture_reject()

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

◆ geis_group_frame()

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.
Examples
geis2.c.

◆ geis_group_frame_count()

GeisSize geis_group_frame_count ( GeisGroup  group)

Gets the number of gesture frames in a gesture group.

Parameters
[in]groupThe gesture group.
Examples
geis2.c.

◆ geis_group_id()

GeisInteger geis_group_id ( GeisGroup  group)

Gets the identifier of a gesture group.

Parameters
[in]groupThe gesture group.
Examples
geis2.c.

◆ geis_group_reject()

void geis_group_reject ( GeisGroup  group)

Marks a gesture group as rejected.

Parameters
[in]groupThe gesture group to reject.

◆ geis_groupset_group()

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.
Examples
geis2.c.

◆ geis_groupset_group_count()

GeisSize geis_groupset_group_count ( GeisGroupSet  groupset)

Gets the number of gesture groups in a groupset.

Parameters
[in]groupsetThe groupset.
Examples
geis2.c.

◆ geis_touch_attr()

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.
Examples
geis2.c.

◆ geis_touch_attr_by_name()

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.

◆ geis_touch_attr_count()

GeisSize geis_touch_attr_count ( GeisTouch  touch)

Gets the number of attrs associated with a touch.

Parameters
[in]touchThe touch.
Examples
geis2.c.

◆ geis_touch_id()

GeisTouchId geis_touch_id ( GeisTouch  touch)

Gets the identifier of a touch.

Parameters
[in]touchThe touch.

◆ geis_touchset_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.

◆ geis_touchset_touch_by_id()

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.

Examples
geis2.c.

◆ geis_touchset_touch_count()

GeisSize geis_touchset_touch_count ( GeisTouchSet  touchset)

Gets the number of touches in a touchset.

Parameters
[in]touchsetThe touchset,

Variable Documentation

◆ @2

__extension__ { ... }

The value of the attributes.

◆ added [1/2]

Receives new input device notices.

◆ added [2/2]

Invoked when a new gesture type has been defined.

◆ changed

Receives modified input device notices.

◆ finish

Invoked when a gesture finishes.

◆ name

GeisString name

The name of the gesture attribute.

◆ removed [1/2]

Receives removes input device notices.

◆ removed [2/2]

Invoked when a defined gesture type is no longer available.

◆ start

Invoked when a new gesture starts.

◆ type

The data type of the gesture attribute.

◆ update

Invoked when a gesture has changed values.

◆ win_info

void* win_info

Additional info dependent on the window type.

◆ win_type

uint32_t win_type

Selects the implementation-specific window type.

GeisFrame::geis_frame_attr_by_name
GeisAttr geis_frame_attr_by_name(GeisFrame frame, GeisString name)
Gets a named attr from a gesture frame.
GEIS_GESTURE_ATTRIBUTE_ANGLE
#define GEIS_GESTURE_ATTRIBUTE_ANGLE
Angle covered by a gesture since it has started, in radians, counterclockwise.
Definition: geis.h:334