summaryrefslogtreecommitdiff
path: root/src/managers/input/trackpad/gestures/CursorZoomGesture.hpp
blob: 3def907ff6840708020a1ea5fa1e9c5d5100c65e (plain)
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
#pragma once

#include "ITrackpadGesture.hpp"

#include "../../../../desktop/DesktopTypes.hpp"

class CCursorZoomTrackpadGesture : public ITrackpadGesture {
  public:
    CCursorZoomTrackpadGesture(const std::string& zoomLevel, const std::string& mode);
    virtual ~CCursorZoomTrackpadGesture() = default;

    virtual void begin(const ITrackpadGesture::STrackpadGestureBegin& e);
    virtual void update(const ITrackpadGesture::STrackpadGestureUpdate& e);
    virtual void end(const ITrackpadGesture::STrackpadGestureEnd& e);

  private:
    float              m_zoomValue = 1.0;
    inline static bool m_zoomed    = false;
    PHLMONITORREF      m_monitor;
    float              m_zoomBegin = 1.0;

    enum eMode : uint8_t {
        MODE_TOGGLE = 0,
        MODE_MULT,
        MODE_LIVE,
    };

    eMode m_mode = MODE_TOGGLE;
};