summaryrefslogtreecommitdiff
path: root/src/managers/input/trackpad/gestures/ScrollMoveGesture.hpp
blob: 26e51e00903fccf57137b742e900cd1f51dcc2c1 (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
#pragma once

#include "ITrackpadGesture.hpp"

#include <cstdint>

namespace Layout::Tiled {
    struct SColumnData;
}

class CScrollMoveTrackpadGesture : public ITrackpadGesture {
  public:
    CScrollMoveTrackpadGesture()          = default;
    virtual ~CScrollMoveTrackpadGesture() = default;

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

  private:
    bool                           m_wasScrollingLayout = false;
    bool                           m_hasLastUpdate      = false;
    uint32_t                       m_lastUpdateTimeMs   = 0;
    double                         m_velocity           = 0.0;
    double                         m_startedOffset      = 0.0;
    WP<Layout::Tiled::SColumnData> m_startedColumn      = nullptr;
};