TGUI  1.3-dev
Loading...
Searching...
No Matches
TwoFingerScrollDetect.hpp
1
2//
3// TGUI - Texus' Graphical User Interface
4// Copyright (C) 2012-2024 Bruno Van de Velde (vdv_b@tgui.eu)
5//
6// This software is provided 'as-is', without any express or implied warranty.
7// In no event will the authors be held liable for any damages arising from the use of this software.
8//
9// Permission is granted to anyone to use this software for any purpose,
10// including commercial applications, and to alter it and redistribute it freely,
11// subject to the following restrictions:
12//
13// 1. The origin of this software must not be misrepresented;
14// you must not claim that you wrote the original software.
15// If you use this software in a product, an acknowledgment
16// in the product documentation would be appreciated but is not required.
17//
18// 2. Altered source versions must be plainly marked as such,
19// and must not be misrepresented as being the original software.
20//
21// 3. This notice may not be removed or altered from any source distribution.
22//
24
25
26#ifndef TGUI_TWO_FINGER_SCROLL_DETECT_HPP
27#define TGUI_TWO_FINGER_SCROLL_DETECT_HPP
28
29#include <TGUI/Vector2.hpp>
30
31#if !TGUI_EXPERIMENTAL_USE_STD_MODULE
32 #include <cstdint>
33 #include <unordered_map>
34#endif
35
37
38TGUI_MODULE_EXPORT namespace tgui
39{
44 class TGUI_API TwoFingerScrollDetect
45 {
46 public:
47
54 void reportFingerDown(std::intptr_t fingerId, float x, float y);
55
60 void reportFingerUp(std::intptr_t fingerId);
61
68 void reportFingerMotion(std::intptr_t fingerId, float x, float y);
69
74 bool isScrolling() const;
75
81
88 float getDelta(float scale);
89
91 private:
92
97 Vector2f calculateFingerCentroid();
98
100 private:
101
102 std::unordered_map<std::intptr_t, Vector2f> m_fingerPositions;
103 Vector2f m_initialCentroidPosition;
104 Vector2f m_lastCentroidPosition;
105 bool m_trackingActive = true; // When three fingers touch, we stop trying to detect scrolling until all fingers are released again
106 };
107}
108
109#endif // TGUI_TWO_FINGER_SCROLL_DETECT_HPP
Definition TwoFingerScrollDetect.hpp:45
void reportFingerUp(std::intptr_t fingerId)
Informs the detector that a touching finger has moved.
void reportFingerDown(std::intptr_t fingerId, float x, float y)
Informs the detector that a finger began touching.
void reportFingerMotion(std::intptr_t fingerId, float x, float y)
Informs the detector that a finger stopped touching.
bool isScrolling() const
Returns whether two fingers are currently being held down and we have detected it as a scroll event.
Vector2f getTouchPosition() const
Returns the original centroid of the finger positions when the fingers began touching.
float getDelta(float scale)
Returns the amount that the centroid of the finger positions have moved vertically.
Namespace that contains all TGUI functions and classes.
Definition AbsoluteOrRelativeValue.hpp:39