gvr::GestureApi

#include <gvr_gesture.h>

This is a convenience C++ wrapper for the Gesture C API.

Summary

This wrapper strategy prevents ABI compatibility issues between compilers by ensuring that the interface between client code and the implementation code in libgvr_gesture.so is a pure C interface. The translation from C++ calls to C calls provided by this wrapper runs entirely in the client's binary and is compiled by the client's compiler.

If you are using multiple controllers, you will need to create multiple GestureApi objects, one for each controller.

Methods in this class are only documented insofar as the C++ wrapping logic is concerned; for information about the method itself, please refer to the corresponding function in the C API.

Example API usage:

Initialization:

GestureApi gesture_api;

Usage:

// Get the controller state from client
ControllerState* controller_state = ...

// Detect the gestures.
gesture_api.Update(controller_state);

// Get the number of detected gestures
int num_gestures = gesture_api.GetGestureCount();

for (int i = 0; i < num_gestures; i ++) {
  Gesture* gesture_ptr = gesture_api.GetGesture(i);
  switch (gesture_api.GetGestureType(gesture_ptr)) {
    case GVR_GESTURE_SWIPE:
      // Handle swipe gesture.
      break;
    case GVR_GESTURE_SCROLL_START:
      // Handle the start of a sequence of scroll gestures.
      break;
    case GVR_GESTURE_SCROLL_UPDATE:
      // Handle an update in a sequence of scroll gestures.
      break;
    case GVR_GESTURE_SCROLL_END:
      // Handle the end of a sequence of scroll gestures.
      break;
    default:
      // Unexpected gesture type.
      break;
   }
}

Inheritance

Inherits from: gvr::WrapperBase< gvr_gesture_context, gvr_gesture_context_destroy >

Constructors and Destructors

GestureApi()
Creates a GestureApi object.

Public functions

GetButtonLongPress(const ControllerState *controller_state, ControllerButton button)
bool
Returns whether long press on the given controller button is detected.
GetDisplacement(const Gesture *gesture)
Returns gesture displacement.
GetGesture(int index)
const Gesture *
Returns the gesture at given index.
GetGestureCount()
int
Returns the number of gestures detected.
GetGestureDirection(const Gesture *gesture)
Returns the direction of current gesture.
GetGestureType(const Gesture *gesture)
Returns the type of the given gesture.
GetVelocity(const Gesture *gesture)
Returns gesture velocity.
Restart()
void
Restarts gesture detection.
Update(const ControllerState *controller_state)
void
Updates gesture context based on current controller state.

Public functions

GestureApi

 GestureApi()

Creates a GestureApi object.

It is properly initialized and can handle gesture detection immediately.

GetButtonLongPress

bool GetButtonLongPress(
  const ControllerState *controller_state,
  ControllerButton button
)

Returns whether long press on the given controller button is detected.

For more information, see gvr_get_button_long_press().

GetDisplacement

gvr_vec2f GetDisplacement(
  const Gesture *gesture
)

Returns gesture displacement.

For more information, see gvr_gesture_get_displacement().

GetGesture

const Gesture * GetGesture(
  int index
)

Returns the gesture at given index.

For more information, see gvr_gesture_get().

GetGestureCount

int GetGestureCount()

Returns the number of gestures detected.

For more information, see gvr_gesture_get_count().

GetGestureDirection

GestureDirection GetGestureDirection(
  const Gesture *gesture
)

Returns the direction of current gesture.

For more information, see gvr_gesture_get_direction().

GetGestureType

GestureType GetGestureType(
  const Gesture *gesture
)

Returns the type of the given gesture.

For more information, see gvr_gesture_get_type().

GetVelocity

gvr_vec2f GetVelocity(
  const Gesture *gesture
)

Returns gesture velocity.

For more information, see gvr_gesture_get_velocity().

Restart

void Restart()

Restarts gesture detection.

For more information, see gvr_gesture_restart().

Update

void Update(
  const ControllerState *controller_state
)

Updates gesture context based on current controller state.

For more information, see gvr_gesture_update().