X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Finput%2Fgesturedetector.h;h=8804dd1abc76a073439a1dae8d8fb64bd33cc4ce;hb=b99a9eb342d0f6ba5509c6d9f8ab0b0b5d5d2979;hp=f39fdce98e609f5b345d02efdcb9c9a5fe8be9c7;hpb=598786409491a119ba761eca53c5eb2d94a4d9e8;p=libs%2Fgui.git diff --git a/source/input/gesturedetector.h b/source/input/gesturedetector.h index f39fdce..8804dd1 100644 --- a/source/input/gesturedetector.h +++ b/source/input/gesturedetector.h @@ -1,6 +1,7 @@ #ifndef MSP_INPUT_GESTUREDETECTOR_H_ #define MSP_INPUT_GESTUREDETECTOR_H_ +#include #include "device.h" namespace Msp { @@ -13,8 +14,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 }; @@ -25,13 +28,10 @@ provided for each type of gesture. Axes 0 and 1 indicate the starting position of the gesture; axes 2 and 3 track its progress. The progress axis may exhibit absolute values greater than one. */ -class GestureDetector: public Device +class MSPGUI_API GestureDetector: public Device { private: - enum - { - MAX_POINTS = 3 - }; + static constexpr size_t MAX_POINTS = 3; struct TouchPoint { @@ -47,17 +47,17 @@ private: Touchscreen &touchscreen; TouchPoint points[MAX_POINTS]; - Gesture current_gesture; - 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); @@ -72,7 +72,7 @@ private: }; -unsigned gesture_points(Gesture); +MSPGUI_API unsigned gesture_points(Gesture); } // namespace Input } // namespace Msp