summaryrefslogtreecommitdiff
path: root/src/managers/input/trackpad/gestures/FullscreenGesture.hpp
blob: dd125e5bda276bdf7f9f556ff5bdf40018624234 (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
30
31
32
33
#pragma once

#include "ITrackpadGesture.hpp"

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

class CFullscreenTrackpadGesture : public ITrackpadGesture {
  public:
    CFullscreenTrackpadGesture(const std::string_view& mode);
    virtual ~CFullscreenTrackpadGesture() = default;

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

  private:
    PHLWINDOWREF m_window;

    Vector2D     m_posFrom, m_posTo, m_sizeFrom, m_sizeTo;

    float        m_lastDelta = 0;

    enum eMode : uint8_t {
        MODE_FULLSCREEN = 0,
        MODE_MAXIMIZE,
    };

    eMode           m_mode         = MODE_FULLSCREEN;
    eFullscreenMode m_originalMode = FSMODE_NONE;

    eFullscreenMode fsModeForMode(eMode mode);
};