LMMS
Loading...
Searching...
No Matches
juce_PointerState.h
Go to the documentation of this file.
1/*
2 ==============================================================================
3
4 This file is part of the JUCE library.
5 Copyright (c) 2022 - Raw Material Software Limited
6
7 JUCE is an open source library subject to commercial or open-source
8 licensing.
9
10 By using JUCE, you agree to the terms of both the JUCE 7 End-User License
11 Agreement and JUCE Privacy Policy.
12
13 End User License Agreement: www.juce.com/juce-7-licence
14 Privacy Policy: www.juce.com/juce-privacy-policy
15
16 Or: You may also use this code under the terms of the GPL v3 (see
17 www.gnu.org/licenses).
18
19 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
20 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
21 DISCLAIMED.
22
23 ==============================================================================
24*/
25
26namespace juce
27{
28
29#ifndef DOXYGEN
30
32{
34 {
35 return std::tie (position, pressure, orientation, rotation, tiltX, tiltY);
36 }
37
38public:
39 PointerState() = default;
40
41 bool operator== (const PointerState& other) const noexcept { return tie() == other.tie(); }
42 bool operator!= (const PointerState& other) const noexcept { return tie() != other.tie(); }
43
46 JUCE_NODISCARD PointerState withPressure (float x) const noexcept { return with (&PointerState::pressure, x); }
48 JUCE_NODISCARD PointerState withRotation (float x) const noexcept { return with (&PointerState::rotation, x); }
49 JUCE_NODISCARD PointerState withTiltX (float x) const noexcept { return with (&PointerState::tiltX, x); }
50 JUCE_NODISCARD PointerState withTiltY (float x) const noexcept { return with (&PointerState::tiltY, x); }
51
58
59 bool isPressureValid() const noexcept { return 0.0f <= pressure && pressure <= 1.0f; }
60 bool isOrientationValid() const noexcept { return 0.0f <= orientation && orientation <= MathConstants<float>::twoPi; }
61 bool isRotationValid() const noexcept { return 0.0f <= rotation && rotation <= MathConstants<float>::twoPi; }
62 bool isTiltValid (bool isX) const noexcept
63 {
64 return isX ? (-1.0f <= tiltX && tiltX <= 1.0f)
65 : (-1.0f <= tiltY && tiltY <= 1.0f);
66 }
67
68private:
69 template <typename Value>
70 PointerState with (Value PointerState::* member, Value item) const
71 {
72 auto copy = *this;
73 copy.*member = std::move (item);
74 return copy;
75 }
76};
77
78inline auto makeMouseEvent (MouseInputSource source,
79 const PointerState& ps,
80 ModifierKeys modifiers,
81 Component* eventComponent,
82 Component* originator,
83 Time eventTime,
84 Point<float> mouseDownPos,
85 Time mouseDownTime,
86 int numberOfClicks,
87 bool mouseWasDragged)
88{
89 return MouseEvent (source,
90 ps.position,
91 modifiers,
92 ps.pressure,
93 ps.orientation,
94 ps.rotation,
95 ps.tiltX,
96 ps.tiltY,
97 eventComponent,
98 originator,
99 eventTime,
100 mouseDownPos,
101 mouseDownTime,
102 numberOfClicks,
103 mouseWasDragged);
104}
105
106
107#endif
108
109} // namespace juce
#define copy(x)
Definition ADnoteParameters.cpp:1011
#define noexcept
Definition DistrhoDefines.h:72
Definition juce_Component.h:36
Definition juce_ModifierKeys.h:41
Definition juce_MouseEvent.h:39
Definition juce_MouseInputSource.h:52
static constexpr float defaultRotation
Definition juce_MouseInputSource.h:233
static constexpr float defaultTiltX
Definition juce_MouseInputSource.h:236
static constexpr float defaultTiltY
Definition juce_MouseInputSource.h:237
static constexpr float defaultOrientation
Definition juce_MouseInputSource.h:230
static constexpr float defaultPressure
Definition juce_MouseInputSource.h:227
Definition juce_Point.h:42
Definition juce_PointerState.h:32
PointerState with(Value PointerState::*member, Value item) const
Definition juce_PointerState.h:70
float rotation
Definition juce_PointerState.h:55
JUCE_NODISCARD PointerState withOrientation(float x) const noexcept
Definition juce_PointerState.h:47
JUCE_NODISCARD PointerState withTiltY(float x) const noexcept
Definition juce_PointerState.h:50
float tiltX
Definition juce_PointerState.h:56
PointerState()=default
JUCE_NODISCARD PointerState withTiltX(float x) const noexcept
Definition juce_PointerState.h:49
JUCE_NODISCARD PointerState withPositionOffset(Point< float > x) const noexcept
Definition juce_PointerState.h:44
auto tie() const noexcept
Definition juce_PointerState.h:33
float orientation
Definition juce_PointerState.h:54
Point< float > position
Definition juce_PointerState.h:52
bool isTiltValid(bool isX) const noexcept
Definition juce_PointerState.h:62
JUCE_NODISCARD PointerState withRotation(float x) const noexcept
Definition juce_PointerState.h:48
float pressure
Definition juce_PointerState.h:53
bool isRotationValid() const noexcept
Definition juce_PointerState.h:61
JUCE_NODISCARD PointerState withPressure(float x) const noexcept
Definition juce_PointerState.h:46
float tiltY
Definition juce_PointerState.h:57
bool isPressureValid() const noexcept
Definition juce_PointerState.h:59
bool isOrientationValid() const noexcept
Definition juce_PointerState.h:60
JUCE_NODISCARD PointerState withPosition(Point< float > x) const noexcept
Definition juce_PointerState.h:45
Definition juce_Time.h:37
Definition juce_Value.h:51
unsigned x[BMAX+1]
Definition inflate.c:1586
#define JUCE_NODISCARD
Definition juce_CompilerSupport.h:108
Definition carla_juce.cpp:31
auto makeMouseEvent(MouseInputSource source, const PointerState &ps, ModifierKeys modifiers, Component *eventComponent, Component *originator, Time eventTime, Point< float > mouseDownPos, Time mouseDownTime, int numberOfClicks, bool mouseWasDragged)
Definition juce_PointerState.h:78
#define const
Definition zconf.h:137