Loading [MathJax]/jax/output/HTML-CSS/config.js
ttx 0.1.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
mouse_click_tracker.h
Go to the documentation of this file.
1#pragma once
2
3#include "dius/steady_clock.h"
4#include "ttx/mouse.h"
5#include "ttx/mouse_event.h"
6
7namespace ttx {
9public:
10 using Duration = dius::SteadyClock::Duration;
11 using TimePoint = dius::SteadyClock::TimePoint;
12
13 explicit MouseClickTracker(u32 max_clicks, Duration threshold = di::chrono::Milliseconds(200))
14 : m_max_clicks(max_clicks), m_threshold(threshold) {}
15
22 auto track(MouseEvent const& event, TimePoint now = dius::SteadyClock::now()) -> u32;
23
24private:
25 struct Prev {
26 MouseButton last_button { MouseButton::None };
27 TimePoint time {};
28 u32 consecutive_clicks { 0 };
29 };
30
31 di::Optional<Prev> m_prev;
32 u32 m_max_clicks { 0 };
33 Duration const m_threshold {};
34};
35}
MouseClickTracker(u32 max_clicks, Duration threshold=di::chrono::Milliseconds(200))
Definition mouse_click_tracker.h:13
dius::SteadyClock::Duration Duration
Definition mouse_click_tracker.h:10
dius::SteadyClock::TimePoint TimePoint
Definition mouse_click_tracker.h:11
auto track(MouseEvent const &event, TimePoint now=dius::SteadyClock::now()) -> u32
Track a mouse event and return the number of consecutive clicks.
Definition mouse_click_tracker.cpp:6
Definition mouse_event.h:23
Definition clipboard.h:10
MouseButton
Definition mouse.h:11
@ None
Definition mouse.h:12