ref: fc5424cb72e477c5f1bbfaeddb5c50b851a965ae
src/touchhandler/TouchHandler.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
#include "touchhandler/TouchHandler.h" using namespace Pinetime::Controllers; using namespace Pinetime::Applications; namespace { TouchEvents ConvertGesture(Pinetime::Drivers::Cst816S::Gestures gesture) { switch (gesture) { case Pinetime::Drivers::Cst816S::Gestures::SingleTap: return TouchEvents::Tap; case Pinetime::Drivers::Cst816S::Gestures::LongPress: return TouchEvents::LongTap; case Pinetime::Drivers::Cst816S::Gestures::DoubleTap: return TouchEvents::DoubleTap; case Pinetime::Drivers::Cst816S::Gestures::SlideRight: return TouchEvents::SwipeRight; case Pinetime::Drivers::Cst816S::Gestures::SlideLeft: return TouchEvents::SwipeLeft; case Pinetime::Drivers::Cst816S::Gestures::SlideDown: return TouchEvents::SwipeDown; case Pinetime::Drivers::Cst816S::Gestures::SlideUp: return TouchEvents::SwipeUp; case Pinetime::Drivers::Cst816S::Gestures::None: default: return TouchEvents::None; } } } Pinetime::Applications::TouchEvents TouchHandler::GestureGet() { auto returnGesture = gesture; gesture = Pinetime::Applications::TouchEvents::None; return returnGesture; } bool TouchHandler::ProcessTouchInfo(Drivers::Cst816S::TouchInfos info) { if (!info.isValid) { return false; } // Only a single gesture per touch if (info.gesture != Pinetime::Drivers::Cst816S::Gestures::None) { if (gestureReleased) { if (info.gesture == Pinetime::Drivers::Cst816S::Gestures::SlideDown || info.gesture == Pinetime::Drivers::Cst816S::Gestures::SlideLeft || info.gesture == Pinetime::Drivers::Cst816S::Gestures::SlideUp || info.gesture == Pinetime::Drivers::Cst816S::Gestures::SlideRight || info.gesture == Pinetime::Drivers::Cst816S::Gestures::LongPress) { if (info.touching) { gesture = ConvertGesture(info.gesture); gestureReleased = false; } } else { gesture = ConvertGesture(info.gesture); } } } if (!info.touching) { gestureReleased = true; } currentTouchPoint = {info.x, info.y, info.touching}; return true; } |