enum Gesture
{
GESTURE_NONE,
- GESTURE_SWIPE_DOWN,
- GESTURE_SWIPE_UP,
- GESTURE_SWIPE_LEFT,
- GESTURE_SWIPE_RIGHT,
- GESTURE_PINCH
+ GESTURE_TAP,
+ GESTURE_TAP_2,
+ GESTURE_DRAG,
+ GESTURE_DRAG_2,
+ GESTURE_PINCH,
+ GESTURE_ROTATE
};
/**
Interprets events from a Touchscreen as high-level gestures. One button is
provided for each type of gesture. Axes 0 and 1 indicate the starting position
-of the gesture; axis 2 tracks its progress. The progress axis may exhibit
+of the gesture; axes 2 and 3 track its progress. The progress axis may exhibit
absolute values greater than one.
*/
class GestureDetector: public Device
{
private:
+ enum
+ {
+ MAX_POINTS = 3
+ };
+
struct TouchPoint
{
bool down;
float down_y;
float x;
float y;
+ bool threshold_exceeded;
TouchPoint();
};
Touchscreen &touchscreen;
- TouchPoint points[3];
+ TouchPoint points[MAX_POINTS];
Gesture current_gesture;
unsigned active_points;
+ Gesture pending_tap;
bool invalid_gesture;
float threshold_x_sq;
float threshold_y_sq;
void touch_up(unsigned);
void touch_move(unsigned, float, float);
void start_gesture();
+ void set_gesture_location(unsigned);
void update_progress();
+ void end_gesture();
void window_resized(unsigned, unsigned);
};