X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Finput%2Fgesturedetector.h;h=0b31fd8c1c23aff34aad6914c0d23634566a6cdd;hb=479298192e3e5b71a402f79520c90372a4c4b504;hp=a6186fdef815dce6fa56956bd8261360b1632f3f;hpb=1b33313502f837e2b0d02d3f2d129c85a8c66064;p=libs%2Fgui.git diff --git a/source/input/gesturedetector.h b/source/input/gesturedetector.h index a6186fd..0b31fd8 100644 --- a/source/input/gesturedetector.h +++ b/source/input/gesturedetector.h @@ -13,8 +13,10 @@ enum Gesture GESTURE_NONE, GESTURE_TAP, GESTURE_TAP_2, + GESTURE_TAP_3, GESTURE_DRAG, GESTURE_DRAG_2, + GESTURE_DRAG_3, GESTURE_PINCH, GESTURE_ROTATE }; @@ -28,10 +30,7 @@ absolute values greater than one. class GestureDetector: public Device { private: - enum - { - MAX_POINTS = 3 - }; + static constexpr size_t MAX_POINTS = 3; struct TouchPoint { @@ -47,18 +46,17 @@ private: Touchscreen &touchscreen; TouchPoint points[MAX_POINTS]; - Gesture current_gesture; - unsigned active_points; - Gesture pending_tap; - bool invalid_gesture; - float threshold_x_sq; - float threshold_y_sq; + Gesture current_gesture = GESTURE_NONE; + Gesture pending_tap = GESTURE_NONE; + bool invalid_gesture = false; + float threshold_x_sq = 1.0f; + float threshold_y_sq = 1.0f; public: GestureDetector(Touchscreen &); - virtual std::string get_button_name(unsigned) const; - virtual std::string get_axis_name(unsigned) const; + std::string get_button_name(unsigned) const override; + std::string get_axis_name(unsigned) const override; private: void touch_down(unsigned); @@ -66,11 +64,15 @@ private: void touch_move(unsigned, float, float); void start_gesture(); void set_gesture_location(unsigned); + void set_gesture_delta(unsigned); void update_progress(); void end_gesture(); void window_resized(unsigned, unsigned); }; + +unsigned gesture_points(Gesture); + } // namespace Input } // namespace Msp