1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QQUICKVALUETYPES_P_H
5#define QQUICKVALUETYPES_P_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <qqml.h>
19#include <private/qtquickglobal_p.h>
20#include <private/qqmlvaluetype_p.h>
21
22#include <QtGui/QColor>
23#include <QtGui/QColorSpace>
24#include <QtGui/QVector2D>
25#include <QtGui/QVector3D>
26#include <QtGui/QVector4D>
27#include <QtGui/QQuaternion>
28#include <QtGui/QMatrix4x4>
29#include <QtGui/QFont>
30
31QT_BEGIN_NAMESPACE
32
33class Q_QUICK_EXPORT QQuickColorValueType : public QColor
34{
35 Q_PROPERTY(qreal r READ r WRITE setR FINAL)
36 Q_PROPERTY(qreal g READ g WRITE setG FINAL)
37 Q_PROPERTY(qreal b READ b WRITE setB FINAL)
38 Q_PROPERTY(qreal a READ a WRITE setA FINAL)
39 Q_PROPERTY(qreal hsvHue READ hsvHue WRITE setHsvHue FINAL)
40 Q_PROPERTY(qreal hsvSaturation READ hsvSaturation WRITE setHsvSaturation FINAL)
41 Q_PROPERTY(qreal hsvValue READ hsvValue WRITE setHsvValue FINAL)
42 Q_PROPERTY(qreal hslHue READ hslHue WRITE setHslHue FINAL)
43 Q_PROPERTY(qreal hslSaturation READ hslSaturation WRITE setHslSaturation FINAL)
44 Q_PROPERTY(qreal hslLightness READ hslLightness WRITE setHslLightness FINAL)
45 Q_PROPERTY(bool valid READ isValid FINAL)
46 Q_GADGET
47 QML_ADDED_IN_VERSION(2, 0)
48 QML_FOREIGN(QColor)
49 QML_VALUE_TYPE(color)
50 QML_EXTENDED(QQuickColorValueType)
51 QML_STRUCTURED_VALUE
52
53public:
54 static QVariant create(const QJSValue &params);
55
56 Q_INVOKABLE QQuickColorValueType() = default;
57 Q_INVOKABLE QQuickColorValueType(const QColor &color) : QColor(color) {}
58 Q_INVOKABLE QQuickColorValueType(const QString &string);
59 Q_INVOKABLE QString toString() const;
60
61 Q_INVOKABLE QColor alpha(qreal value) const;
62 Q_INVOKABLE QColor lighter(qreal factor = 1.5) const;
63 Q_INVOKABLE QColor darker(qreal factor = 2.0) const;
64 Q_INVOKABLE QColor tint(const QColor &tintColor) const;
65
66 qreal r() const;
67 qreal g() const;
68 qreal b() const;
69 qreal a() const;
70 qreal hsvHue() const;
71 qreal hsvSaturation() const;
72 qreal hsvValue() const;
73 qreal hslHue() const;
74 qreal hslSaturation() const;
75 qreal hslLightness() const;
76 bool isValid() const;
77 void setR(qreal);
78 void setG(qreal);
79 void setB(qreal);
80 void setA(qreal);
81 void setHsvHue(qreal);
82 void setHsvSaturation(qreal);
83 void setHsvValue(qreal);
84 void setHslHue(qreal);
85 void setHslSaturation(qreal);
86 void setHslLightness(qreal);
87};
88
89class Q_QUICK_EXPORT QQuickVector2DValueType : public QVector2D
90{
91 Q_PROPERTY(qreal x READ x WRITE setX FINAL)
92 Q_PROPERTY(qreal y READ y WRITE setY FINAL)
93 Q_GADGET
94 QML_ADDED_IN_VERSION(2, 0)
95 QML_FOREIGN(QVector2D)
96 QML_VALUE_TYPE(vector2d)
97 QML_EXTENDED(QQuickVector2DValueType)
98 QML_STRUCTURED_VALUE
99
100public:
101 static QVariant create(const QJSValue &params);
102
103 Q_INVOKABLE QQuickVector2DValueType() = default;
104 Q_INVOKABLE QQuickVector2DValueType(const QVector2D &vector2D) : QVector2D(vector2D) {}
105 Q_INVOKABLE QString toString() const;
106
107 qreal x() const;
108 qreal y() const;
109 void setX(qreal);
110 void setY(qreal);
111
112 Q_INVOKABLE qreal dotProduct(const QVector2D &vec) const;
113 Q_INVOKABLE QVector2D times(const QVector2D &vec) const;
114 Q_INVOKABLE QVector2D times(qreal scalar) const;
115 Q_INVOKABLE QVector2D plus(const QVector2D &vec) const;
116 Q_INVOKABLE QVector2D minus(const QVector2D &vec) const;
117 Q_INVOKABLE QVector2D normalized() const;
118 Q_INVOKABLE qreal length() const;
119 Q_INVOKABLE QVector3D toVector3d() const;
120 Q_INVOKABLE QVector4D toVector4d() const;
121 Q_INVOKABLE bool fuzzyEquals(const QVector2D &vec, qreal epsilon) const;
122 Q_INVOKABLE bool fuzzyEquals(const QVector2D &vec) const;
123};
124
125class Q_QUICK_EXPORT QQuickVector3DValueType : public QVector3D
126{
127 Q_PROPERTY(qreal x READ x WRITE setX FINAL)
128 Q_PROPERTY(qreal y READ y WRITE setY FINAL)
129 Q_PROPERTY(qreal z READ z WRITE setZ FINAL)
130 Q_GADGET
131 QML_ADDED_IN_VERSION(2, 0)
132 QML_FOREIGN(QVector3D)
133 QML_VALUE_TYPE(vector3d)
134 QML_EXTENDED(QQuickVector3DValueType)
135 QML_STRUCTURED_VALUE
136
137public:
138 static QVariant create(const QJSValue &params);
139
140 Q_INVOKABLE QQuickVector3DValueType() = default;
141 Q_INVOKABLE QQuickVector3DValueType(const QVector3D &vector3D) : QVector3D(vector3D) {}
142 Q_INVOKABLE QString toString() const;
143
144 qreal x() const;
145 qreal y() const;
146 qreal z() const;
147 void setX(qreal);
148 void setY(qreal);
149 void setZ(qreal);
150
151 Q_INVOKABLE QVector3D crossProduct(const QVector3D &vec) const;
152 Q_INVOKABLE qreal dotProduct(const QVector3D &vec) const;
153 Q_INVOKABLE QVector3D times(const QMatrix4x4 &m) const;
154 Q_INVOKABLE QVector3D times(const QVector3D &vec) const;
155 Q_INVOKABLE QVector3D times(qreal scalar) const;
156 Q_INVOKABLE QVector3D plus(const QVector3D &vec) const;
157 Q_INVOKABLE QVector3D minus(const QVector3D &vec) const;
158 Q_INVOKABLE QVector3D normalized() const;
159 Q_INVOKABLE qreal length() const;
160 Q_INVOKABLE QVector2D toVector2d() const;
161 Q_INVOKABLE QVector4D toVector4d() const;
162 Q_INVOKABLE bool fuzzyEquals(const QVector3D &vec, qreal epsilon) const;
163 Q_INVOKABLE bool fuzzyEquals(const QVector3D &vec) const;
164};
165
166class Q_QUICK_EXPORT QQuickVector4DValueType : public QVector4D
167{
168 Q_PROPERTY(qreal x READ x WRITE setX FINAL)
169 Q_PROPERTY(qreal y READ y WRITE setY FINAL)
170 Q_PROPERTY(qreal z READ z WRITE setZ FINAL)
171 Q_PROPERTY(qreal w READ w WRITE setW FINAL)
172 Q_GADGET
173 QML_ADDED_IN_VERSION(2, 0)
174 QML_FOREIGN(QVector4D)
175 QML_VALUE_TYPE(vector4d)
176 QML_EXTENDED(QQuickVector4DValueType)
177 QML_STRUCTURED_VALUE
178
179public:
180 static QVariant create(const QJSValue &params);
181
182 Q_INVOKABLE QQuickVector4DValueType() = default;
183 Q_INVOKABLE QQuickVector4DValueType(const QVector4D &vector4d) : QVector4D(vector4d) {}
184 Q_INVOKABLE QString toString() const;
185
186 qreal x() const;
187 qreal y() const;
188 qreal z() const;
189 qreal w() const;
190 void setX(qreal);
191 void setY(qreal);
192 void setZ(qreal);
193 void setW(qreal);
194
195 Q_INVOKABLE qreal dotProduct(const QVector4D &vec) const;
196 Q_INVOKABLE QVector4D times(const QVector4D &vec) const;
197 Q_INVOKABLE QVector4D times(const QMatrix4x4 &m) const;
198 Q_INVOKABLE QVector4D times(qreal scalar) const;
199 Q_INVOKABLE QVector4D plus(const QVector4D &vec) const;
200 Q_INVOKABLE QVector4D minus(const QVector4D &vec) const;
201 Q_INVOKABLE QVector4D normalized() const;
202 Q_INVOKABLE qreal length() const;
203 Q_INVOKABLE QVector2D toVector2d() const;
204 Q_INVOKABLE QVector3D toVector3d() const;
205 Q_INVOKABLE bool fuzzyEquals(const QVector4D &vec, qreal epsilon) const;
206 Q_INVOKABLE bool fuzzyEquals(const QVector4D &vec) const;
207};
208
209class Q_QUICK_EXPORT QQuickQuaternionValueType : public QQuaternion
210{
211 Q_PROPERTY(qreal scalar READ scalar WRITE setScalar FINAL)
212 Q_PROPERTY(qreal x READ x WRITE setX FINAL)
213 Q_PROPERTY(qreal y READ y WRITE setY FINAL)
214 Q_PROPERTY(qreal z READ z WRITE setZ FINAL)
215 Q_GADGET
216 QML_ADDED_IN_VERSION(2, 0)
217 QML_FOREIGN(QQuaternion)
218 QML_VALUE_TYPE(quaternion)
219 QML_EXTENDED(QQuickQuaternionValueType)
220 QML_STRUCTURED_VALUE
221
222public:
223 static QVariant create(const QJSValue &params);
224
225 Q_INVOKABLE QQuickQuaternionValueType() = default;
226 Q_INVOKABLE QQuickQuaternionValueType(const QQuaternion &quat) : QQuaternion(quat) {}
227 Q_INVOKABLE QString toString() const;
228
229 qreal scalar() const;
230 qreal x() const;
231 qreal y() const;
232 qreal z() const;
233 void setScalar(qreal);
234 void setX(qreal);
235 void setY(qreal);
236 void setZ(qreal);
237
238 Q_INVOKABLE qreal dotProduct(const QQuaternion &q) const;
239 Q_INVOKABLE QQuaternion times(const QQuaternion &q) const;
240 Q_INVOKABLE QVector3D times(const QVector3D &vec) const;
241 Q_INVOKABLE QQuaternion times(qreal factor) const;
242 Q_INVOKABLE QQuaternion plus(const QQuaternion &q) const;
243 Q_INVOKABLE QQuaternion minus(const QQuaternion &q) const;
244
245 Q_INVOKABLE QQuaternion normalized() const;
246 Q_INVOKABLE QQuaternion inverted() const;
247 Q_INVOKABLE QQuaternion conjugated() const;
248 Q_INVOKABLE qreal length() const;
249
250 Q_INVOKABLE QVector3D toEulerAngles() const;
251 Q_INVOKABLE QVector4D toVector4d() const;
252
253 Q_INVOKABLE bool fuzzyEquals(const QQuaternion &q, qreal epsilon) const;
254 Q_INVOKABLE bool fuzzyEquals(const QQuaternion &q) const;
255};
256
257class Q_QUICK_EXPORT QQuickMatrix4x4ValueType : public QMatrix4x4
258{
259 Q_PROPERTY(qreal m11 READ m11 WRITE setM11 FINAL)
260 Q_PROPERTY(qreal m12 READ m12 WRITE setM12 FINAL)
261 Q_PROPERTY(qreal m13 READ m13 WRITE setM13 FINAL)
262 Q_PROPERTY(qreal m14 READ m14 WRITE setM14 FINAL)
263 Q_PROPERTY(qreal m21 READ m21 WRITE setM21 FINAL)
264 Q_PROPERTY(qreal m22 READ m22 WRITE setM22 FINAL)
265 Q_PROPERTY(qreal m23 READ m23 WRITE setM23 FINAL)
266 Q_PROPERTY(qreal m24 READ m24 WRITE setM24 FINAL)
267 Q_PROPERTY(qreal m31 READ m31 WRITE setM31 FINAL)
268 Q_PROPERTY(qreal m32 READ m32 WRITE setM32 FINAL)
269 Q_PROPERTY(qreal m33 READ m33 WRITE setM33 FINAL)
270 Q_PROPERTY(qreal m34 READ m34 WRITE setM34 FINAL)
271 Q_PROPERTY(qreal m41 READ m41 WRITE setM41 FINAL)
272 Q_PROPERTY(qreal m42 READ m42 WRITE setM42 FINAL)
273 Q_PROPERTY(qreal m43 READ m43 WRITE setM43 FINAL)
274 Q_PROPERTY(qreal m44 READ m44 WRITE setM44 FINAL)
275 Q_GADGET
276 QML_ADDED_IN_VERSION(2, 0)
277 QML_FOREIGN(QMatrix4x4)
278 QML_VALUE_TYPE(matrix4x4)
279 QML_EXTENDED(QQuickMatrix4x4ValueType)
280 QML_STRUCTURED_VALUE
281
282public:
283 static QVariant create(const QJSValue &params);
284
285 Q_INVOKABLE QQuickMatrix4x4ValueType() = default;
286
287 qreal m11() const { return (*this)(0, 0); }
288 qreal m12() const { return (*this)(0, 1); }
289 qreal m13() const { return (*this)(0, 2); }
290 qreal m14() const { return (*this)(0, 3); }
291 qreal m21() const { return (*this)(1, 0); }
292 qreal m22() const { return (*this)(1, 1); }
293 qreal m23() const { return (*this)(1, 2); }
294 qreal m24() const { return (*this)(1, 3); }
295 qreal m31() const { return (*this)(2, 0); }
296 qreal m32() const { return (*this)(2, 1); }
297 qreal m33() const { return (*this)(2, 2); }
298 qreal m34() const { return (*this)(2, 3); }
299 qreal m41() const { return (*this)(3, 0); }
300 qreal m42() const { return (*this)(3, 1); }
301 qreal m43() const { return (*this)(3, 2); }
302 qreal m44() const { return (*this)(3, 3); }
303
304 void setM11(qreal value) { (*this)(0, 0) = value; }
305 void setM12(qreal value) { (*this)(0, 1) = value; }
306 void setM13(qreal value) { (*this)(0, 2) = value; }
307 void setM14(qreal value) { (*this)(0, 3) = value; }
308 void setM21(qreal value) { (*this)(1, 0) = value; }
309 void setM22(qreal value) { (*this)(1, 1) = value; }
310 void setM23(qreal value) { (*this)(1, 2) = value; }
311 void setM24(qreal value) { (*this)(1, 3) = value; }
312 void setM31(qreal value) { (*this)(2, 0) = value; }
313 void setM32(qreal value) { (*this)(2, 1) = value; }
314 void setM33(qreal value) { (*this)(2, 2) = value; }
315 void setM34(qreal value) { (*this)(2, 3) = value; }
316 void setM41(qreal value) { (*this)(3, 0) = value; }
317 void setM42(qreal value) { (*this)(3, 1) = value; }
318 void setM43(qreal value) { (*this)(3, 2) = value; }
319 void setM44(qreal value) { (*this)(3, 3) = value; }
320
321 Q_INVOKABLE void translate(const QVector3D &t) { QMatrix4x4::translate(vector: t); }
322 Q_INVOKABLE void rotate(float angle, const QVector3D &axis) { QMatrix4x4::rotate(angle, vector: axis); }
323 Q_INVOKABLE void rotate(const QQuaternion &q) { QMatrix4x4::rotate(quaternion: q); }
324 Q_INVOKABLE void scale(float s) { QMatrix4x4::scale(factor: s); }
325 Q_INVOKABLE void scale(float sx, float sy, float sz) { QMatrix4x4::scale(x: sx, y: sy, z: sz); }
326 Q_INVOKABLE void scale(const QVector3D &s) { QMatrix4x4::scale(vector: s); }
327 Q_INVOKABLE void lookAt(const QVector3D &eye, const QVector3D &center, const QVector3D &up)
328 {
329 QMatrix4x4::lookAt(eye, center, up);
330 }
331
332 Q_INVOKABLE QMatrix4x4 times(const QMatrix4x4 &m) const;
333 Q_INVOKABLE QVector4D times(const QVector4D &vec) const;
334 Q_INVOKABLE QVector3D times(const QVector3D &vec) const;
335 Q_INVOKABLE QMatrix4x4 times(qreal factor) const;
336 Q_INVOKABLE QMatrix4x4 plus(const QMatrix4x4 &m) const;
337 Q_INVOKABLE QMatrix4x4 minus(const QMatrix4x4 &m) const;
338
339 Q_INVOKABLE QVector4D row(int n) const;
340 Q_INVOKABLE QVector4D column(int m) const;
341
342 Q_INVOKABLE qreal determinant() const;
343 Q_INVOKABLE QMatrix4x4 inverted() const;
344 Q_INVOKABLE QMatrix4x4 transposed() const;
345
346 Q_INVOKABLE QPointF map(const QPointF p) const;
347 Q_INVOKABLE QRectF mapRect(const QRectF r) const;
348
349 Q_INVOKABLE bool fuzzyEquals(const QMatrix4x4 &m, qreal epsilon) const;
350 Q_INVOKABLE bool fuzzyEquals(const QMatrix4x4 &m) const;
351};
352
353class Q_QUICK_EXPORT QQuickPlanarTransform : public QObject
354{
355 Q_OBJECT
356 QML_SINGLETON
357 QML_NAMED_ELEMENT(PlanarTransform)
358 QML_ADDED_IN_VERSION(6, 8)
359
360public:
361 explicit QQuickPlanarTransform(QObject *parent = nullptr);
362
363 Q_INVOKABLE static QMatrix4x4 identity();
364 Q_INVOKABLE static QMatrix4x4 fromAffineMatrix(float scaleX, float shearY,
365 float shearX, float scaleY,
366 float translateX, float translateY);
367 Q_INVOKABLE static QMatrix4x4 fromTranslate(float translateX, float translateY);
368 Q_INVOKABLE static QMatrix4x4 fromScale(float scaleX, float scaleY,
369 float originX = 0, float originY = 0);
370 Q_INVOKABLE static QMatrix4x4 fromRotate(float angle,float originX = 0, float originY = 0);
371 Q_INVOKABLE static QMatrix4x4 fromShear(float shearX, float shearY,
372 float originX = 0, float originY = 0);
373};
374
375namespace QQuickFontEnums
376{
377Q_NAMESPACE_EXPORT(Q_QUICK_EXPORT)
378
379QML_NAMED_ELEMENT(Font)
380QML_ADDED_IN_VERSION(2, 0)
381
382enum FontWeight { Thin = QFont::Thin,
383 ExtraLight = QFont::ExtraLight,
384 Light = QFont::Light,
385 Normal = QFont::Normal,
386 Medium = QFont::Medium,
387 DemiBold = QFont::DemiBold,
388 Bold = QFont::Bold,
389 ExtraBold = QFont::ExtraBold,
390 Black = QFont::Black };
391Q_ENUM_NS(FontWeight)
392enum Capitalization { MixedCase = QFont::MixedCase,
393 AllUppercase = QFont::AllUppercase,
394 AllLowercase = QFont::AllLowercase,
395 SmallCaps = QFont::SmallCaps,
396 Capitalize = QFont::Capitalize };
397Q_ENUM_NS(Capitalization)
398
399enum HintingPreference {
400 PreferDefaultHinting = QFont::PreferDefaultHinting,
401 PreferNoHinting = QFont::PreferNoHinting,
402 PreferVerticalHinting = QFont::PreferVerticalHinting,
403 PreferFullHinting = QFont::PreferFullHinting
404};
405Q_ENUM_NS(HintingPreference)
406
407enum Style {
408 StyleNormal = QFont::StyleNormal,
409 StyleItalic = QFont::StyleItalic,
410 StyleOblique = QFont::StyleOblique,
411};
412Q_ENUM_NS(Style)
413};
414
415class Q_QUICK_EXPORT QQuickFontValueType : public QFont
416{
417 Q_GADGET
418
419 Q_PROPERTY(QString family READ family WRITE setFamily FINAL)
420 Q_PROPERTY(QString styleName READ styleName WRITE setStyleName FINAL)
421 Q_PROPERTY(bool bold READ bold WRITE setBold FINAL)
422 Q_PROPERTY(int weight READ weight WRITE setWeight FINAL)
423 Q_PROPERTY(bool italic READ italic WRITE setItalic FINAL)
424 Q_PROPERTY(bool underline READ underline WRITE setUnderline FINAL)
425 Q_PROPERTY(bool overline READ overline WRITE setOverline FINAL)
426 Q_PROPERTY(bool strikeout READ strikeout WRITE setStrikeout FINAL)
427 Q_PROPERTY(qreal pointSize READ pointSize WRITE setPointSize FINAL)
428 Q_PROPERTY(int pixelSize READ pixelSize WRITE setPixelSize FINAL)
429 Q_PROPERTY(QQuickFontEnums::Capitalization capitalization READ capitalization WRITE setCapitalization FINAL)
430 Q_PROPERTY(qreal letterSpacing READ letterSpacing WRITE setLetterSpacing FINAL)
431 Q_PROPERTY(qreal wordSpacing READ wordSpacing WRITE setWordSpacing FINAL)
432 Q_PROPERTY(QQuickFontEnums::HintingPreference hintingPreference READ hintingPreference WRITE setHintingPreference FINAL)
433 Q_PROPERTY(bool kerning READ kerning WRITE setKerning FINAL)
434 Q_PROPERTY(bool preferShaping READ preferShaping WRITE setPreferShaping FINAL)
435 Q_PROPERTY(QVariantMap features READ features WRITE setFeatures FINAL)
436 Q_PROPERTY(QVariantMap variableAxes READ variableAxes WRITE setVariableAxes FINAL)
437 Q_PROPERTY(bool contextFontMerging READ contextFontMerging WRITE setContextFontMerging FINAL)
438 Q_PROPERTY(bool preferTypoLineMetrics READ preferTypoLineMetrics WRITE setPreferTypoLineMetrics FINAL)
439
440 QML_VALUE_TYPE(font)
441 QML_FOREIGN(QFont)
442 QML_ADDED_IN_VERSION(2, 0)
443 QML_EXTENDED(QQuickFontValueType)
444 QML_STRUCTURED_VALUE
445
446public:
447 static QVariant create(const QJSValue &value);
448
449 Q_INVOKABLE QQuickFontValueType() = default;
450 Q_INVOKABLE QQuickFontValueType(const QFont &font) : QFont(font) {}
451 Q_INVOKABLE QString toString() const;
452
453 QString family() const;
454 void setFamily(const QString &);
455
456 QString styleName() const;
457 void setStyleName(const QString &);
458
459 bool bold() const;
460 void setBold(bool b);
461
462 int weight() const;
463 void setWeight(int);
464
465 bool italic() const;
466 void setItalic(bool b);
467
468 bool underline() const;
469 void setUnderline(bool b);
470
471 bool overline() const;
472 void setOverline(bool b);
473
474 bool strikeout() const;
475 void setStrikeout(bool b);
476
477 qreal pointSize() const;
478 void setPointSize(qreal size);
479
480 int pixelSize() const;
481 void setPixelSize(int size);
482
483 QQuickFontEnums::Capitalization capitalization() const;
484 void setCapitalization(QQuickFontEnums::Capitalization);
485
486 qreal letterSpacing() const;
487 void setLetterSpacing(qreal spacing);
488
489 qreal wordSpacing() const;
490 void setWordSpacing(qreal spacing);
491
492 QQuickFontEnums::HintingPreference hintingPreference() const;
493 void setHintingPreference(QQuickFontEnums::HintingPreference);
494
495 bool kerning() const;
496 void setKerning(bool b);
497
498 bool preferShaping() const;
499 void setPreferShaping(bool b);
500
501 QVariantMap features() const;
502 void setFeatures(const QVariantMap &features);
503
504 QVariantMap variableAxes() const;
505 void setVariableAxes(const QVariantMap &variableAxes);
506
507 bool contextFontMerging() const;
508 void setContextFontMerging(bool b);
509
510 bool preferTypoLineMetrics() const;
511 void setPreferTypoLineMetrics(bool b);
512};
513
514namespace QQuickColorSpaceEnums
515{
516Q_NAMESPACE_EXPORT(Q_QUICK_EXPORT)
517QML_NAMED_ELEMENT(ColorSpace)
518QML_ADDED_IN_VERSION(2, 15)
519Q_CLASSINFO("RegisterEnumClassesUnscoped", "false")
520
521enum NamedColorSpace {
522 Unknown = 0,
523 SRgb,
524 SRgbLinear,
525 AdobeRgb,
526 DisplayP3,
527 ProPhotoRgb
528};
529Q_ENUM_NS(NamedColorSpace)
530
531enum class Primaries {
532 Custom = 0,
533 SRgb,
534 AdobeRgb,
535 DciP3D65,
536 ProPhotoRgb
537};
538Q_ENUM_NS(Primaries)
539enum class TransferFunction {
540 Custom = 0,
541 Linear,
542 Gamma,
543 SRgb,
544 ProPhotoRgb
545};
546Q_ENUM_NS(TransferFunction)
547}
548
549class Q_QUICK_EXPORT QQuickColorSpaceValueType : public QColorSpace
550{
551 Q_GADGET
552
553 Q_PROPERTY(QQuickColorSpaceEnums::NamedColorSpace namedColorSpace READ namedColorSpace WRITE setNamedColorSpace FINAL)
554 Q_PROPERTY(QQuickColorSpaceEnums::Primaries primaries READ primaries WRITE setPrimaries FINAL)
555 Q_PROPERTY(QQuickColorSpaceEnums::TransferFunction transferFunction READ transferFunction WRITE setTransferFunction FINAL)
556 Q_PROPERTY(float gamma READ gamma WRITE setGamma FINAL)
557
558 QML_ANONYMOUS
559 QML_FOREIGN(QColorSpace)
560 QML_ADDED_IN_VERSION(2, 15)
561 QML_EXTENDED(QQuickColorSpaceValueType)
562 QML_STRUCTURED_VALUE
563
564public:
565 static QVariant create(const QJSValue &params);
566
567 QQuickColorSpaceEnums::NamedColorSpace namedColorSpace() const noexcept;
568 void setNamedColorSpace(QQuickColorSpaceEnums::NamedColorSpace namedColorSpace);
569 QQuickColorSpaceEnums::Primaries primaries() const noexcept;
570 void setPrimaries(QQuickColorSpaceEnums::Primaries primariesId);
571 QQuickColorSpaceEnums::TransferFunction transferFunction() const noexcept;
572 void setTransferFunction(QQuickColorSpaceEnums::TransferFunction transferFunction);
573 float gamma() const noexcept;
574 void setGamma(float gamma);
575};
576
577QT_END_NAMESPACE
578
579#endif // QQUICKVALUETYPES_P_H
580

source code of qtdeclarative/src/quick/util/qquickvaluetypes_p.h