43 lines
No EOL
1.5 KiB
C++
43 lines
No EOL
1.5 KiB
C++
#pragma once
|
|
|
|
#include "../../../../devices/IPointer.hpp"
|
|
#include "../GestureTypes.hpp"
|
|
|
|
class ITrackpadGesture {
|
|
public:
|
|
virtual ~ITrackpadGesture() = default;
|
|
|
|
struct STrackpadGestureBegin {
|
|
// this has update because we wait for the delta
|
|
const IPointer::SSwipeUpdateEvent* swipe = nullptr;
|
|
const IPointer::SPinchUpdateEvent* pinch = nullptr;
|
|
eTrackpadGestureDirection direction = TRACKPAD_GESTURE_DIR_NONE;
|
|
float scale = 1.F;
|
|
};
|
|
|
|
struct STrackpadGestureUpdate {
|
|
const IPointer::SSwipeUpdateEvent* swipe = nullptr;
|
|
const IPointer::SPinchUpdateEvent* pinch = nullptr;
|
|
eTrackpadGestureDirection direction = TRACKPAD_GESTURE_DIR_NONE;
|
|
float scale = 1.F;
|
|
};
|
|
|
|
struct STrackpadGestureEnd {
|
|
const IPointer::SSwipeEndEvent* swipe = nullptr;
|
|
const IPointer::SPinchEndEvent* pinch = nullptr;
|
|
eTrackpadGestureDirection direction = TRACKPAD_GESTURE_DIR_NONE;
|
|
float scale = 1.F;
|
|
};
|
|
|
|
virtual void begin(const STrackpadGestureBegin& e);
|
|
virtual void update(const STrackpadGestureUpdate& e) = 0;
|
|
virtual void end(const STrackpadGestureEnd& e) = 0;
|
|
|
|
virtual float distance(const STrackpadGestureBegin& e);
|
|
virtual float distance(const STrackpadGestureUpdate& e);
|
|
|
|
virtual bool isDirectionSensitive();
|
|
|
|
protected:
|
|
float m_lastPinchScale = 1.F, m_scale = 1.F;
|
|
}; |