1 /*
2  * DQt - D bindings for the Qt Toolkit
3  *
4  * GNU Lesser General Public License Usage
5  * This file may be used under the terms of the GNU Lesser
6  * General Public License version 3 as published by the Free Software
7  * Foundation and appearing in the file LICENSE.LGPL3 included in the
8  * packaging of this file. Please review the following information to
9  * ensure the GNU Lesser General Public License version 3 requirements
10  * will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
11  */
12 module qt.widgets.gesture;
13 extern(C++):
14 
15 import qt.config;
16 import qt.helpers;
17 version(QT_NO_GESTURES){}else
18 {
19     import qt.core.coreevent;
20     import qt.core.flags;
21     import qt.core.global;
22     import qt.core.list;
23     import qt.core.map;
24     import qt.core.namespace;
25     import qt.core.object;
26     import qt.core.point;
27     import qt.widgets.widget;
28 }
29 
30 version(QT_NO_GESTURES){}else
31 {
32 
33 /+ Q_DECLARE_METATYPE(Qt::GestureState)
34 Q_DECLARE_METATYPE(Qt::GestureType) +/
35 
36 
37 
38 extern(C++, class) struct QGesturePrivate;
39 /// Binding for C++ class [QGesture](https://doc.qt.io/qt-6/qgesture.html).
40 class /+ Q_WIDGETS_EXPORT +/ QGesture : QObject
41 {
42     mixin(Q_OBJECT);
43     /+ Q_DECLARE_PRIVATE(QGesture) +/
44 
45     /+ Q_PROPERTY(Qt::GestureState state READ state)
46     Q_PROPERTY(Qt::GestureType gestureType READ gestureType)
47     Q_PROPERTY(QGesture::GestureCancelPolicy gestureCancelPolicy READ gestureCancelPolicy
48                WRITE setGestureCancelPolicy)
49     Q_PROPERTY(QPointF hotSpot READ hotSpot WRITE setHotSpot RESET unsetHotSpot)
50     Q_PROPERTY(bool hasHotSpot READ hasHotSpot) +/
51 
52 public:
53     /+ explicit +/this(QObject parent = null);
54     ~this();
55 
56     final /+ Qt:: +/qt.core.namespace.GestureType gestureType() const;
57 
58     final /+ Qt:: +/qt.core.namespace.GestureState state() const;
59 
60     final QPointF hotSpot() const;
61     final void setHotSpot(ref const(QPointF) value);
62     final bool hasHotSpot() const;
63     final void unsetHotSpot();
64 
65     enum GestureCancelPolicy {
66         CancelNone = 0,
67         CancelAllInContext
68     }
69 
70     final void setGestureCancelPolicy(GestureCancelPolicy policy);
71     final GestureCancelPolicy gestureCancelPolicy() const;
72 
73 protected:
74     this(ref QGesturePrivate dd, QObject parent);
75 
76 private:
77     /+ friend class QGestureEvent; +/
78     /+ friend class QGestureRecognizer; +/
79     /+ friend class QGestureManager; +/
80     /+ friend class QGraphicsScenePrivate; +/
81     mixin(CREATE_CONVENIENCE_WRAPPERS);
82 }
83 
84 extern(C++, class) struct QPanGesturePrivate;
85 /// Binding for C++ class [QPanGesture](https://doc.qt.io/qt-6/qpangesture.html).
86 class /+ Q_WIDGETS_EXPORT +/ QPanGesture : QGesture
87 {
88     mixin(Q_OBJECT);
89     /+ Q_DECLARE_PRIVATE(QPanGesture) +/
90 
91     /+ Q_PROPERTY(QPointF lastOffset READ lastOffset WRITE setLastOffset)
92     Q_PROPERTY(QPointF offset READ offset WRITE setOffset)
93     Q_PROPERTY(QPointF delta READ delta STORED false)
94     Q_PROPERTY(qreal acceleration READ acceleration WRITE setAcceleration)
95     Q_PRIVATE_PROPERTY(QPanGesture::d_func(), qreal horizontalVelocity READ horizontalVelocity WRITE setHorizontalVelocity)
96     Q_PRIVATE_PROPERTY(QPanGesture::d_func(), qreal verticalVelocity READ verticalVelocity WRITE setVerticalVelocity) +/
97 
98 public:
99     /+ explicit +/this(QObject parent = null);
100     ~this();
101 
102     final QPointF lastOffset() const;
103     final QPointF offset() const;
104     final QPointF delta() const;
105     final qreal acceleration() const;
106 
107     final void setLastOffset(ref const(QPointF) value);
108     final void setOffset(ref const(QPointF) value);
109     final void setAcceleration(qreal value);
110 
111     /+ friend class QPanGestureRecognizer; +/
112     /+ friend class QWinNativePanGestureRecognizer; +/
113     mixin(CREATE_CONVENIENCE_WRAPPERS);
114 }
115 
116 extern(C++, class) struct QPinchGesturePrivate;
117 /// Binding for C++ class [QPinchGesture](https://doc.qt.io/qt-6/qpinchgesture.html).
118 class /+ Q_WIDGETS_EXPORT +/ QPinchGesture : QGesture
119 {
120     mixin(Q_OBJECT);
121     /+ Q_DECLARE_PRIVATE(QPinchGesture) +/
122 
123 public:
124     enum ChangeFlag {
125         ScaleFactorChanged = 0x1,
126         RotationAngleChanged = 0x2,
127         CenterPointChanged = 0x4
128     }
129     /+ Q_FLAG(ChangeFlag) +/
130     /+ Q_DECLARE_FLAGS(ChangeFlags, ChangeFlag) +/
131 alias ChangeFlags = QFlags!(ChangeFlag);    /+ Q_FLAG(ChangeFlags) +/
132 
133     /+ Q_PROPERTY(ChangeFlags totalChangeFlags READ totalChangeFlags WRITE setTotalChangeFlags)
134     Q_PROPERTY(ChangeFlags changeFlags READ changeFlags WRITE setChangeFlags)
135 
136     Q_PROPERTY(qreal totalScaleFactor READ totalScaleFactor WRITE setTotalScaleFactor)
137     Q_PROPERTY(qreal lastScaleFactor READ lastScaleFactor WRITE setLastScaleFactor)
138     Q_PROPERTY(qreal scaleFactor READ scaleFactor WRITE setScaleFactor)
139 
140     Q_PROPERTY(qreal totalRotationAngle READ totalRotationAngle WRITE setTotalRotationAngle)
141     Q_PROPERTY(qreal lastRotationAngle READ lastRotationAngle WRITE setLastRotationAngle)
142     Q_PROPERTY(qreal rotationAngle READ rotationAngle WRITE setRotationAngle)
143 
144     Q_PROPERTY(QPointF startCenterPoint READ startCenterPoint WRITE setStartCenterPoint)
145     Q_PROPERTY(QPointF lastCenterPoint READ lastCenterPoint WRITE setLastCenterPoint)
146     Q_PROPERTY(QPointF centerPoint READ centerPoint WRITE setCenterPoint) +/
147 
148 public:
149     /+ explicit +/this(QObject parent = null);
150     ~this();
151 
152     final ChangeFlags totalChangeFlags() const;
153     final void setTotalChangeFlags(ChangeFlags value);
154 
155     final ChangeFlags changeFlags() const;
156     final void setChangeFlags(ChangeFlags value);
157 
158     final QPointF startCenterPoint() const;
159     final QPointF lastCenterPoint() const;
160     final QPointF centerPoint() const;
161     final void setStartCenterPoint(ref const(QPointF) value);
162     final void setLastCenterPoint(ref const(QPointF) value);
163     final void setCenterPoint(ref const(QPointF) value);
164 
165     final qreal totalScaleFactor() const;
166     final qreal lastScaleFactor() const;
167     final qreal scaleFactor() const;
168     final void setTotalScaleFactor(qreal value);
169     final void setLastScaleFactor(qreal value);
170     final void setScaleFactor(qreal value);
171 
172     final qreal totalRotationAngle() const;
173     final qreal lastRotationAngle() const;
174     final qreal rotationAngle() const;
175     final void setTotalRotationAngle(qreal value);
176     final void setLastRotationAngle(qreal value);
177     final void setRotationAngle(qreal value);
178 
179     /+ friend class QPinchGestureRecognizer; +/
180     mixin(CREATE_CONVENIENCE_WRAPPERS);
181 }
182 /+pragma(inline, true) QFlags!(QPinchGesture.ChangeFlags.enum_type) operator |(QPinchGesture.ChangeFlags.enum_type f1, QPinchGesture.ChangeFlags.enum_type f2)/+noexcept+/{return QFlags!(QPinchGesture.ChangeFlags.enum_type)(f1)|f2;}+/
183 /+pragma(inline, true) QFlags!(QPinchGesture.ChangeFlags.enum_type) operator |(QPinchGesture.ChangeFlags.enum_type f1, QFlags!(QPinchGesture.ChangeFlags.enum_type) f2)/+noexcept+/{return f2|f1;}+/
184 /+pragma(inline, true) QFlags!(QPinchGesture.ChangeFlags.enum_type) operator &(QPinchGesture.ChangeFlags.enum_type f1, QPinchGesture.ChangeFlags.enum_type f2)/+noexcept+/{return QFlags!(QPinchGesture.ChangeFlags.enum_type)(f1)&f2;}+/
185 /+pragma(inline, true) QFlags!(QPinchGesture.ChangeFlags.enum_type) operator &(QPinchGesture.ChangeFlags.enum_type f1, QFlags!(QPinchGesture.ChangeFlags.enum_type) f2)/+noexcept+/{return f2&f1;}+/
186 /+pragma(inline, true) void operator +(QPinchGesture.ChangeFlags.enum_type f1, QPinchGesture.ChangeFlags.enum_type f2)/+noexcept+/;+/
187 /+pragma(inline, true) void operator +(QPinchGesture.ChangeFlags.enum_type f1, QFlags!(QPinchGesture.ChangeFlags.enum_type) f2)/+noexcept+/;+/
188 /+pragma(inline, true) void operator +(int f1, QFlags!(QPinchGesture.ChangeFlags.enum_type) f2)/+noexcept+/;+/
189 /+pragma(inline, true) void operator -(QPinchGesture.ChangeFlags.enum_type f1, QPinchGesture.ChangeFlags.enum_type f2)/+noexcept+/;+/
190 /+pragma(inline, true) void operator -(QPinchGesture.ChangeFlags.enum_type f1, QFlags!(QPinchGesture.ChangeFlags.enum_type) f2)/+noexcept+/;+/
191 /+pragma(inline, true) void operator -(int f1, QFlags!(QPinchGesture.ChangeFlags.enum_type) f2)/+noexcept+/;+/
192 /+pragma(inline, true) QIncompatibleFlag operator |(QPinchGesture.ChangeFlags.enum_type f1, int f2)/+noexcept+/{return QIncompatibleFlag(int(f1)|f2);}+/
193 /+pragma(inline, true) void operator +(int f1, QPinchGesture.ChangeFlags.enum_type f2)/+noexcept+/;+/
194 /+pragma(inline, true) void operator +(QPinchGesture.ChangeFlags.enum_type f1, int f2)/+noexcept+/;+/
195 /+pragma(inline, true) void operator -(int f1, QPinchGesture.ChangeFlags.enum_type f2)/+noexcept+/;+/
196 /+pragma(inline, true) void operator -(QPinchGesture.ChangeFlags.enum_type f1, int f2)/+noexcept+/;+/
197 
198 /+ Q_DECLARE_OPERATORS_FOR_FLAGS(QPinchGesture::ChangeFlags)
199 
200 Q_DECLARE_METATYPE(QPinchGesture::ChangeFlags) +/
201 
202 
203 extern(C++, class) struct QSwipeGesturePrivate;
204 /// Binding for C++ class [QSwipeGesture](https://doc.qt.io/qt-6/qswipegesture.html).
205 class /+ Q_WIDGETS_EXPORT +/ QSwipeGesture : QGesture
206 {
207     mixin(Q_OBJECT);
208     /+ Q_DECLARE_PRIVATE(QSwipeGesture) +/
209 
210     /+ Q_PROPERTY(SwipeDirection horizontalDirection READ horizontalDirection STORED false)
211     Q_PROPERTY(SwipeDirection verticalDirection READ verticalDirection STORED false)
212     Q_PROPERTY(qreal swipeAngle READ swipeAngle WRITE setSwipeAngle)
213     Q_PRIVATE_PROPERTY(QSwipeGesture::d_func(), qreal velocity READ velocity WRITE setVelocity) +/
214 
215 public:
216     enum SwipeDirection { NoDirection, Left, Right, Up, Down }
217     /+ Q_ENUM(SwipeDirection) +/
218 
219     /+ explicit +/this(QObject parent = null);
220     ~this();
221 
222     final SwipeDirection horizontalDirection() const;
223     final SwipeDirection verticalDirection() const;
224 
225     final qreal swipeAngle() const;
226     final void setSwipeAngle(qreal value);
227 
228     /+ friend class QSwipeGestureRecognizer; +/
229     mixin(CREATE_CONVENIENCE_WRAPPERS);
230 }
231 
232 extern(C++, class) struct QTapGesturePrivate;
233 /// Binding for C++ class [QTapGesture](https://doc.qt.io/qt-6/qtapgesture.html).
234 class /+ Q_WIDGETS_EXPORT +/ QTapGesture : QGesture
235 {
236     mixin(Q_OBJECT);
237     /+ Q_DECLARE_PRIVATE(QTapGesture) +/
238 
239     /+ Q_PROPERTY(QPointF position READ position WRITE setPosition) +/
240 
241 public:
242     /+ explicit +/this(QObject parent = null);
243     ~this();
244 
245     final QPointF position() const;
246     final void setPosition(ref const(QPointF) pos);
247 
248     /+ friend class QTapGestureRecognizer; +/
249     mixin(CREATE_CONVENIENCE_WRAPPERS);
250 }
251 
252 extern(C++, class) struct QTapAndHoldGesturePrivate;
253 /// Binding for C++ class [QTapAndHoldGesture](https://doc.qt.io/qt-6/qtapandholdgesture.html).
254 class /+ Q_WIDGETS_EXPORT +/ QTapAndHoldGesture : QGesture
255 {
256     mixin(Q_OBJECT);
257     /+ Q_DECLARE_PRIVATE(QTapAndHoldGesture) +/
258 
259     /+ Q_PROPERTY(QPointF position READ position WRITE setPosition) +/
260 
261 public:
262     /+ explicit +/this(QObject parent = null);
263     ~this();
264 
265     final QPointF position() const;
266     final void setPosition(ref const(QPointF) pos);
267 
268     static void setTimeout(int msecs);
269     static int timeout();
270 
271     /+ friend class QTapAndHoldGestureRecognizer; +/
272     mixin(CREATE_CONVENIENCE_WRAPPERS);
273 }
274 
275 extern(C++, class) struct QGestureEventPrivate;
276 /+
277 /// Binding for C++ class [QGestureEvent](https://doc.qt.io/qt-6/qgestureevent.html).
278 class /+ Q_WIDGETS_EXPORT +/ QGestureEvent : QEvent
279 {
280 public:
281     /+ explicit +/this(ref const(QList!(QGesture)) gestures);
282     ~this();
283 
284     final QList!(QGesture) gestures() const;
285     final QGesture gesture(/+ Qt:: +/qt.core.namespace.GestureType type) const;
286 
287     final QList!(QGesture) activeGestures() const;
288     final QList!(QGesture) canceledGestures() const;
289 
290     /+ using QEvent::setAccepted; +/
291     /+ using QEvent::isAccepted; +/
292     /+ using QEvent::accept; +/
293     /+ using QEvent::ignore; +/
294 
295     final void setAccepted(QGesture , bool);
296     final void accept(QGesture );
297     final void ignore(QGesture );
298     final bool isAccepted(QGesture ) const;
299 
300     final void setAccepted(/+ Qt:: +/qt.core.namespace.GestureType, bool);
301     final void accept(/+ Qt:: +/qt.core.namespace.GestureType);
302     final void ignore(/+ Qt:: +/qt.core.namespace.GestureType);
303     final bool isAccepted(/+ Qt:: +/qt.core.namespace.GestureType) const;
304 
305     final void setWidget(QWidget widget);
306     final QWidget widget() const;
307 
308 /+ #if QT_CONFIG(graphicsview) +/
309     final QPointF mapToGraphicsScene(ref const(QPointF) gesturePoint) const;
310 /+ #endif +/
311 
312 private:
313     QList!(QGesture) m_gestures;
314     QWidget m_widget;
315     QMap!(/+ Qt:: +/qt.core.namespace.GestureType, bool) m_accepted;
316     QMap!(/+ Qt:: +/qt.core.namespace.GestureType, QWidget) m_targetWidgets;
317 
318     /+ friend class QApplication; +/
319     /+ friend class QGestureManager; +/
320     mixin(CREATE_CONVENIENCE_WRAPPERS);
321 }+/
322 
323 /+ #  ifndef QT_NO_DEBUG_STREAM
324 Q_WIDGETS_EXPORT QDebug operator<<(QDebug, const QGesture *);
325 Q_WIDGETS_EXPORT QDebug operator<<(QDebug, const QGestureEvent *);
326 #  endif
327 
328 
329 Q_DECLARE_METATYPE(QGesture::GestureCancelPolicy) +/
330 }
331