SOFA plugin: LeapMotion  master
Open source framework for multi-physics simuation
All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
Leap::Gesture Class Reference

#include <Leap.h>

Inheritance diagram for Leap::Gesture:

Detailed Description

The Gesture class represents a recognized movement by the user.

The Leap watches the activity within its field of view for certain movement patterns typical of a user gesture or command. For example, a movement from side to side with the hand can indicate a swipe gesture, while a finger poking forward can indicate a screen tap gesture.

When the Leap recognizes a gesture, it assigns an ID and adds a Gesture object to the frame gesture list. For continuous gestures, which occur over many frames, the Leap updates the gesture by adding a Gesture object having the same ID and updated properties in each subsequent frame.

Important: Recognition for each type of gesture must be enabled using the Controller::enableGesture() function; otherwise no gestures are recognized or reported.

Subclasses of Gesture define the properties for the specific movement patterns recognized by the Leap.

The Gesture subclasses for include:

Circle and swipe gestures are continuous and these objects can have a state of start, update, and stop.

The screen tap gesture is a discrete gesture. The Leap only creates a single ScreenTapGesture object appears for each tap and it always has a stop state.

Get valid Gesture instances from a Frame object. You can get a list of gestures with the Frame::gestures() method. You can get a list of gestures since a specified frame with the Frame::gestures(const Frame&) method. You can also use the Frame::gesture() method to find a gesture in the current frame using an ID value obtained in a previous frame.

Gesture objects can be invalid. For example, when you get a gesture by ID using Frame::gesture(), and there is no gesture with that ID in the current frame, then gesture() returns an Invalid Gesture object (rather than a null value). Always check object validity in situations where a gesture might be invalid.

The following keys can be used with the Config class to configure the gesture recognizer:

Key string Value type Default value Units
Gesture.Circle.MinRadius float 5.0 mm
Gesture.Circle.MinArc float 1.5*pi radians
Gesture.Swipe.MinLength float 150 mm
Gesture.Swipe.MinVelocity float 1000 mm/s
Gesture.KeyTap.MinDownVelocity float 50 mm/s
Gesture.KeyTap.HistorySeconds float 0.1 s
Gesture.KeyTap.MinDistance float 5.0 mm
Gesture.ScreenTap.MinForwardVelocity float 50 mm/s
Gesture.ScreenTap.HistorySeconds float 0.1 s
Gesture.ScreenTap.MinDistance float 3.0 mm

Public Member Functions

 Gesture (GestureImplementation *)
 
LEAP_EXPORT Gesture ()
 
LEAP_EXPORT Gesture (const Gesture &rhs)
 
LEAP_EXPORT Type type () const
 
LEAP_EXPORT State state () const
 
LEAP_EXPORT int32_t id () const
 
LEAP_EXPORT int64_t duration () const
 
LEAP_EXPORT float durationSeconds () const
 
LEAP_EXPORT Frame frame () const
 
LEAP_EXPORT HandList hands () const
 
LEAP_EXPORT PointableList pointables () const
 
LEAP_EXPORT bool isValid () const
 
LEAP_EXPORT bool operator== (const Gesture &rhs) const
 
LEAP_EXPORT bool operator!= (const Gesture &rhs) const
 
LEAP_EXPORT std::string toString () const
 

Static Public Member Functions

static LEAP_EXPORT const Gestureinvalid ()
 

Additional Inherited Members

- Protected Attributes inherited from Leap::Interface
class SharedObject * m_object
 
- Protected Member Functions inherited from Leap::Interface
LEAP_EXPORT Interface (void *owner)
 
LEAP_EXPORT Interface (Implementation *reference, void *owner)
 
LEAP_EXPORT Interface (const Interface &rhs)
 
LEAP_EXPORT Interfaceoperator= (const Interface &rhs)
 
virtual LEAP_EXPORT ~Interface ()
 
template<typename T >
T * get () const
 

Constructor details

◆ Gesture() [1/3]

Leap::Gesture::Gesture ( GestureImplementation *  )

◆ Gesture() [2/3]

LEAP_EXPORT Leap::Gesture::Gesture ( )

Constructs a new Gesture object.

An uninitialized Gesture object is considered invalid. Get valid instances of the Gesture class, which will be one of the Gesture subclasses, from a Frame object.

◆ Gesture() [3/3]

LEAP_EXPORT Leap::Gesture::Gesture ( const Gesture rhs)

Constructs a new copy of an Gesture object.

Function details

◆ duration()

LEAP_EXPORT int64_t Leap::Gesture::duration ( ) const

The elapsed duration of the recognized movement up to the frame containing this Gesture object, in microseconds.

The duration reported for the first Gesture in the sequence (with the STATE_START state) will typically be a small positive number since the movement must progress far enough for the Leap to recognize it as an intentional gesture.

Returns
int64_t the elapsed duration in microseconds.

◆ durationSeconds()

LEAP_EXPORT float Leap::Gesture::durationSeconds ( ) const

The elapsed duration in seconds.

See also
duration()
Returns
float the elapsed duration in seconds.

◆ frame()

LEAP_EXPORT Frame Leap::Gesture::frame ( ) const

The Frame containing this Gesture instance.

Returns
Frame The parent Frame object.

◆ hands()

LEAP_EXPORT HandList Leap::Gesture::hands ( ) const

The list of hands associated with this Gesture, if any.

If no hands are related to this gesture, the list is empty.

Returns
HandList the list of related Hand objects.

◆ id()

LEAP_EXPORT int32_t Leap::Gesture::id ( ) const

The gesture ID.

All Gesture objects belonging to the same recognized movement share the same ID value. Use the ID value with the Frame::gesture() method to find updates related to this Gesture object in subsequent frames.

Returns
int32_t the ID of this Gesture.

◆ invalid()

static LEAP_EXPORT const Gesture& Leap::Gesture::invalid ( )
static

Returns an invalid Gesture object.

You can use the instance returned by this function in comparisons testing whether a given Gesture instance is valid or invalid. (You can also use the Gesture::isValid() function.)

Returns
The invalid Gesture instance.

◆ isValid()

LEAP_EXPORT bool Leap::Gesture::isValid ( ) const

Reports whether this Gesture instance represents a valid Gesture.

An invalid Gesture object does not represent a snapshot of a recognized movement. Invalid Gesture objects are returned when a valid object cannot be provided. For example, when you get an gesture by ID using Frame::gesture(), and there is no gesture with that ID in the current frame, then gesture() returns an Invalid Gesture object (rather than a null value). Always check object validity in situations where an gesture might be invalid.

Returns
bool True, if this is a valid Gesture instance; false, otherwise.

◆ operator!=()

LEAP_EXPORT bool Leap::Gesture::operator!= ( const Gesture rhs) const

Compare Gesture object inequality.

Two Gestures are equal only if they represent the same snapshot of the same recognized movement.

◆ operator==()

LEAP_EXPORT bool Leap::Gesture::operator== ( const Gesture rhs) const

Compare Gesture object equality.

Two Gestures are equal if they represent the same snapshot of the same recognized movement.

◆ pointables()

LEAP_EXPORT PointableList Leap::Gesture::pointables ( ) const

The list of fingers and tools associated with this Gesture, if any.

If no Pointable objects are related to this gesture, the list is empty.

Returns
PointableList the list of related Pointable objects.

◆ state()

LEAP_EXPORT State Leap::Gesture::state ( ) const

The gesture state.

Recognized movements occur over time and have a beginning, a middle, and an end. The 'state()' attribute reports where in that sequence this Gesture object falls.

Returns
Gesture::State A value from the Gesture::State enumeration.

◆ toString()

LEAP_EXPORT std::string Leap::Gesture::toString ( ) const

A string containing a brief, human-readable description of this Gesture.

◆ type()

LEAP_EXPORT Type Leap::Gesture::type ( ) const

The gesture type.

Returns
Gesture::Type A value from the Gesture::Type enumeration.

Enum details

◆ State

The possible gesture states.

Enumerator
STATE_INVALID 

An invalid state

STATE_START 

The gesture is starting. Just enough has happened to recognize it.

STATE_UPDATE 

The gesture is in progress. (Note: not all gestures have updates).

STATE_STOP 

The gesture has completed or stopped.

◆ Type

The supported types of gestures.

Enumerator
TYPE_INVALID 

An invalid type.

TYPE_SWIPE 

A straight line movement by the hand with fingers extended.

TYPE_CIRCLE 

A circular movement by a finger.

TYPE_SCREEN_TAP 

A forward tapping movement by a finger.

TYPE_KEY_TAP 

A downward tapping movement by a finger.