5#ifndef QQMLVALUETYPE_P_H
6#define QQMLVALUETYPE_P_H
19#include <QtQml/private/qqmlproperty_p.h>
21#include <private/qqmlnullablevalue_p.h>
22#include <private/qmetatype_p.h>
24#include <QtCore/qobject.h>
25#include <QtCore/qrect.h>
26#if QT_CONFIG(easingcurve)
27#include <QtCore/qeasingcurve.h>
29#include <QtCore/qvariant.h>
36 QQmlValueType() =
default;
37 QQmlValueType(QMetaType type,
const QMetaObject *staticMetaObject)
38 : m_metaType(type), m_staticMetaObject(staticMetaObject)
42 void *create()
const {
return m_metaType.create(); }
43 void destroy(
void *gadgetPtr)
const { m_metaType.destroy(gadgetPtr); }
45 void construct(
void *gadgetPtr,
const void *copy)
const { m_metaType.construct(gadgetPtr, copy); }
46 void destruct(
void *gadgetPtr)
const { m_metaType.destruct(gadgetPtr); }
48 QMetaType metaType()
const {
return m_metaType; }
49 const QMetaObject *staticMetaObject()
const {
return m_staticMetaObject; }
52#if QT_VERSION >= QT_VERSION_CHECK(7
, 0
, 0
)
53 const QMetaObject *toDynamicMetaObject(QObject *)
const override;
55 QMetaObject *toDynamicMetaObject(QObject *) override;
57 void objectDestroyed(QObject *) override;
58 int metaCall(QObject *obj, QMetaObject::Call type,
int _id,
void **argv) override;
63 const QMetaObject *m_staticMetaObject =
nullptr;
64 QT7_ONLY(
mutable const)
65 QMetaObject *m_dynamicMetaObject =
nullptr;
72 static QQmlGadgetPtrWrapper *instance(QQmlEngine *engine, QMetaType type);
74 QQmlGadgetPtrWrapper(QQmlValueType *valueType, QObject *parent =
nullptr);
75 ~QQmlGadgetPtrWrapper();
77 void read(QObject *obj,
int idx);
78 void write(QObject *obj,
int idx, QQmlPropertyData::WriteFlags flags,
int internalIndex)
const;
79 QVariant value()
const;
80 void setValue(
const QVariant &value);
82 QMetaType metaType()
const {
return valueType()->metaType(); }
83 int metaCall(QMetaObject::Call type,
int id,
void **argv);
85 QMetaProperty property(
int index)
const
87 return valueType()->staticMetaObject()->property(index);
90 QVariant readOnGadget(
const QMetaProperty &property)
const
92 return property.readOnGadget(m_gadgetPtr);
95 void writeOnGadget(
const QMetaProperty &property,
const QVariant &value)
97 property.writeOnGadget(m_gadgetPtr, value);
100 void writeOnGadget(
const QMetaProperty &property, QVariant &&value)
102 property.writeOnGadget(m_gadgetPtr, std::move(value));
106 const QQmlValueType *valueType()
const;
107 void *m_gadgetPtr =
nullptr;
112 Q_PROPERTY(qreal x READ x WRITE setX FINAL)
113 Q_PROPERTY(qreal y READ y WRITE setY FINAL)
115 QML_VALUE_TYPE(point)
117 QML_EXTENDED(QQmlPointFValueType)
121 Q_INVOKABLE QQmlPointFValueType() =
default;
122 Q_INVOKABLE QQmlPointFValueType(
const QPointF &point) : QPointF(point) {}
123 Q_INVOKABLE QQmlPointFValueType(
const QPoint &point) : QPointF(point) {}
124 Q_INVOKABLE QString toString()
const;
133 Q_PROPERTY(
int x READ x WRITE setX FINAL)
134 Q_PROPERTY(
int y READ y WRITE setY FINAL)
138 QML_EXTENDED(QQmlPointValueType)
142 QQmlPointValueType() =
default;
143 Q_INVOKABLE QQmlPointValueType(
const QPoint &point) : QPoint(point) {}
144 Q_INVOKABLE QQmlPointValueType(
const QPointF &point) : QPoint(point.toPoint()) {}
145 Q_INVOKABLE QString toString()
const;
154 Q_PROPERTY(qreal width READ width WRITE setWidth FINAL)
155 Q_PROPERTY(qreal height READ height WRITE setHeight FINAL)
159 QML_EXTENDED(QQmlSizeFValueType)
163 Q_INVOKABLE QQmlSizeFValueType() =
default;
164 Q_INVOKABLE QQmlSizeFValueType(
const QSizeF &size) : QSizeF(size) {}
165 Q_INVOKABLE QQmlSizeFValueType(
const QSize &size) : QSizeF(size) {}
166 Q_INVOKABLE QString toString()
const;
168 qreal height()
const;
169 void setWidth(qreal);
170 void setHeight(qreal);
175 Q_PROPERTY(
int width READ width WRITE setWidth FINAL)
176 Q_PROPERTY(
int height READ height WRITE setHeight FINAL)
180 QML_EXTENDED(QQmlSizeValueType)
184 QQmlSizeValueType() =
default;
185 Q_INVOKABLE QQmlSizeValueType(
const QSize &size) : QSize(size) {}
186 Q_INVOKABLE QQmlSizeValueType(
const QSizeF &size) : QSize(size.toSize()) {}
187 Q_INVOKABLE QString toString()
const;
196 Q_PROPERTY(qreal x READ x WRITE setX FINAL)
197 Q_PROPERTY(qreal y READ y WRITE setY FINAL)
198 Q_PROPERTY(qreal width READ width WRITE setWidth FINAL)
199 Q_PROPERTY(qreal height READ height WRITE setHeight FINAL)
200 Q_PROPERTY(qreal left READ left DESIGNABLE
false FINAL)
201 Q_PROPERTY(qreal right READ right DESIGNABLE
false FINAL)
202 Q_PROPERTY(qreal top READ top DESIGNABLE
false FINAL)
203 Q_PROPERTY(qreal bottom READ bottom DESIGNABLE
false FINAL)
207 QML_EXTENDED(QQmlRectFValueType)
211 Q_INVOKABLE QQmlRectFValueType() =
default;
212 Q_INVOKABLE QQmlRectFValueType(
const QRectF &rect) : QRectF(rect) {}
213 Q_INVOKABLE QQmlRectFValueType(
const QRect &rect) : QRectF(rect) {}
214 Q_INVOKABLE QString toString()
const;
221 qreal height()
const;
222 void setWidth(qreal);
223 void setHeight(qreal);
228 qreal bottom()
const;
233 Q_PROPERTY(
int x READ x WRITE setX FINAL)
234 Q_PROPERTY(
int y READ y WRITE setY FINAL)
235 Q_PROPERTY(
int width READ width WRITE setWidth FINAL)
236 Q_PROPERTY(
int height READ height WRITE setHeight FINAL)
237 Q_PROPERTY(
int left READ left DESIGNABLE
false FINAL)
238 Q_PROPERTY(
int right READ right DESIGNABLE
false FINAL)
239 Q_PROPERTY(
int top READ top DESIGNABLE
false FINAL)
240 Q_PROPERTY(
int bottom READ bottom DESIGNABLE
false FINAL)
244 QML_EXTENDED(QQmlRectValueType)
248 QQmlRectValueType() =
default;
249 Q_INVOKABLE QQmlRectValueType(
const QRect &rect) : QRect(rect) {}
250 Q_INVOKABLE QQmlRectValueType(
const QRectF &rect) : QRect(rect.toRect()) {}
251 Q_INVOKABLE QString toString()
const;
270 Q_PROPERTY(qreal left READ left WRITE setLeft FINAL)
271 Q_PROPERTY(qreal right READ right WRITE setRight FINAL)
272 Q_PROPERTY(qreal top READ top WRITE setTop FINAL)
273 Q_PROPERTY(qreal bottom READ bottom WRITE setBottom FINAL)
276 QML_FOREIGN(QMarginsF)
277 QML_EXTENDED(QQmlMarginsFValueType)
281 QQmlMarginsFValueType() =
default;
282 Q_INVOKABLE QQmlMarginsFValueType(
const QMarginsF &margins) : QMarginsF(margins) {}
283 Q_INVOKABLE QQmlMarginsFValueType(
const QMargins &margins) : QMarginsF(margins) {}
284 Q_INVOKABLE QString toString()
const;
288 qreal bottom()
const;
290 void setRight(qreal);
292 void setBottom(qreal);
297 Q_PROPERTY(
int left READ left WRITE setLeft FINAL)
298 Q_PROPERTY(
int right READ right WRITE setRight FINAL)
299 Q_PROPERTY(
int top READ top WRITE setTop FINAL)
300 Q_PROPERTY(
int bottom READ bottom WRITE setBottom FINAL)
303 QML_FOREIGN(QMargins)
304 QML_EXTENDED(QQmlMarginsValueType)
308 QQmlMarginsValueType() =
default;
309 Q_INVOKABLE QQmlMarginsValueType(
const QMargins &margins) : QMargins(margins) {}
310 Q_INVOKABLE QQmlMarginsValueType(
const QMarginsF &margins) : QMargins(margins.toMargins()) {}
311 Q_INVOKABLE QString toString()
const;
322#if QT_CONFIG(easingcurve)
324class Q_QML_EXPORT QQmlEasing :
public QObject
327 QML_NAMED_ELEMENT(Easing)
332 Linear = QEasingCurve::Linear,
333 InQuad = QEasingCurve::InQuad, OutQuad = QEasingCurve::OutQuad,
334 InOutQuad = QEasingCurve::InOutQuad, OutInQuad = QEasingCurve::OutInQuad,
335 InCubic = QEasingCurve::InCubic, OutCubic = QEasingCurve::OutCubic,
336 InOutCubic = QEasingCurve::InOutCubic, OutInCubic = QEasingCurve::OutInCubic,
337 InQuart = QEasingCurve::InQuart, OutQuart = QEasingCurve::OutQuart,
338 InOutQuart = QEasingCurve::InOutQuart, OutInQuart = QEasingCurve::OutInQuart,
339 InQuint = QEasingCurve::InQuint, OutQuint = QEasingCurve::OutQuint,
340 InOutQuint = QEasingCurve::InOutQuint, OutInQuint = QEasingCurve::OutInQuint,
341 InSine = QEasingCurve::InSine, OutSine = QEasingCurve::OutSine,
342 InOutSine = QEasingCurve::InOutSine, OutInSine = QEasingCurve::OutInSine,
343 InExpo = QEasingCurve::InExpo, OutExpo = QEasingCurve::OutExpo,
344 InOutExpo = QEasingCurve::InOutExpo, OutInExpo = QEasingCurve::OutInExpo,
345 InCirc = QEasingCurve::InCirc, OutCirc = QEasingCurve::OutCirc,
346 InOutCirc = QEasingCurve::InOutCirc, OutInCirc = QEasingCurve::OutInCirc,
347 InElastic = QEasingCurve::InElastic, OutElastic = QEasingCurve::OutElastic,
348 InOutElastic = QEasingCurve::InOutElastic, OutInElastic = QEasingCurve::OutInElastic,
349 InBack = QEasingCurve::InBack, OutBack = QEasingCurve::OutBack,
350 InOutBack = QEasingCurve::InOutBack, OutInBack = QEasingCurve::OutInBack,
351 InBounce = QEasingCurve::InBounce, OutBounce = QEasingCurve::OutBounce,
352 InOutBounce = QEasingCurve::InOutBounce, OutInBounce = QEasingCurve::OutInBounce,
353 InCurve = QEasingCurve::InCurve, OutCurve = QEasingCurve::OutCurve,
354 SineCurve = QEasingCurve::SineCurve, CosineCurve = QEasingCurve::CosineCurve,
355 BezierSpline = QEasingCurve::BezierSpline,
357 Bezier = BezierSpline
361 Q_INVOKABLE qreal valueForProgress(QQmlEasing::Type type, qreal progress)
const;
364struct Q_QML_EXPORT QQmlEasingValueType :
private QEasingCurve
367 QML_VALUE_TYPE(easingCurve)
368 QML_FOREIGN(QEasingCurve)
369 QML_EXTENDED(QQmlEasingValueType)
372 Q_PROPERTY(QQmlEasing::Type type READ type WRITE setType FINAL)
373 Q_PROPERTY(qreal amplitude READ amplitude WRITE setAmplitude FINAL)
374 Q_PROPERTY(qreal overshoot READ overshoot WRITE setOvershoot FINAL)
375 Q_PROPERTY(qreal period READ period WRITE setPeriod FINAL)
376 Q_PROPERTY(QList<qreal> bezierCurve READ bezierCurve WRITE setBezierCurve FINAL)
379 Q_INVOKABLE QQmlEasingValueType() =
default;
380 Q_INVOKABLE QQmlEasingValueType(QQmlEasing::Type type);
381 Q_INVOKABLE QQmlEasingValueType(
const QEasingCurve &easing) : QEasingCurve(easing) {}
383 Q_INVOKABLE qreal valueForProgress(qreal progress);
385 QQmlEasing::Type type()
const;
386 qreal amplitude()
const;
387 qreal overshoot()
const;
388 qreal period()
const;
389 void setType(QQmlEasing::Type);
390 void setAmplitude(qreal);
391 void setOvershoot(qreal);
392 void setPeriod(qreal);
393 void setBezierCurve(
const QList<qreal> &);
394 QList<qreal> bezierCurve()
const;
Combined button and popup list for selecting options.