1 /****************************************************************************
3 ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
4 ** All rights reserved.
5 ** Contact: Nokia Corporation (qt-info@nokia.com)
7 ** This file is part of the QtDeclarative module of the Qt Toolkit.
9 ** $QT_BEGIN_LICENSE:LGPL$
10 ** GNU Lesser General Public License Usage
11 ** This file may be used under the terms of the GNU Lesser General Public
12 ** License version 2.1 as published by the Free Software Foundation and
13 ** appearing in the file LICENSE.LGPL included in the packaging of this
14 ** file. Please review the following information to ensure the GNU Lesser
15 ** General Public License version 2.1 requirements will be met:
16 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
18 ** In addition, as a special exception, Nokia gives you certain additional
19 ** rights. These rights are described in the Nokia Qt LGPL Exception
20 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
22 ** GNU General Public License Usage
23 ** Alternatively, this file may be used under the terms of the GNU General
24 ** Public License version 3.0 as published by the Free Software Foundation
25 ** and appearing in the file LICENSE.GPL included in the packaging of this
26 ** file. Please review the following information to ensure the GNU General
27 ** Public License version 3.0 requirements will be met:
28 ** http://www.gnu.org/copyleft/gpl.html.
31 ** Alternatively, this file may be used in accordance with the terms and
32 ** conditions contained in a signed written agreement between you and Nokia.
40 ****************************************************************************/
42 #ifndef QDECLARATIVEVALUETYPE_P_H
43 #define QDECLARATIVEVALUETYPE_P_H
49 // This file is not part of the Qt API. It exists purely as an
50 // implementation detail. This header file may change from version to
51 // version without notice, or even be removed.
56 #include "qdeclarativeproperty.h"
57 #include "private/qdeclarativeproperty_p.h"
58 #include "private/qdeclarativenullablevalue_p_p.h"
60 #include <QtCore/qobject.h>
61 #include <QtCore/qrect.h>
62 #include <QtCore/qeasingcurve.h>
63 #include <QtCore/qvariant.h>
64 #include <QtGui/qvector2d.h>
65 #include <QtGui/qvector3d.h>
66 #include <QtGui/qvector4d.h>
67 #include <QtGui/qmatrix4x4.h>
68 #include <QtGui/qquaternion.h>
69 #include <QtGui/qfont.h>
70 #include <QtGui/qcolor.h>
74 class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeValueType : public QObject
78 QDeclarativeValueType(QObject *parent = 0);
79 virtual void read(QObject *, int) = 0;
80 virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags flags) = 0;
81 virtual QVariant value() = 0;
82 virtual void setValue(QVariant) = 0;
84 virtual QString toString() const = 0;
85 virtual bool isEqual(const QVariant &value) const = 0;
88 class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeValueTypeFactory
91 QDeclarativeValueTypeFactory();
92 ~QDeclarativeValueTypeFactory();
93 static bool isValueType(int);
94 static QDeclarativeValueType *valueType(int);
96 static void registerBaseTypes(const char *uri, int versionMajor, int versionMinor);
97 static void registerValueTypes();
99 QDeclarativeValueType *operator[](int idx) const {
100 if (idx >= (int)QVariant::UserType) return 0;
101 else return valueTypes[idx];
105 QDeclarativeValueType *valueTypes[QVariant::UserType - 1];
108 class Q_AUTOTEST_EXPORT QDeclarativePointFValueType : public QDeclarativeValueType
110 Q_PROPERTY(qreal x READ x WRITE setX)
111 Q_PROPERTY(qreal y READ y WRITE setY)
114 QDeclarativePointFValueType(QObject *parent = 0);
116 virtual void read(QObject *, int);
117 virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags);
118 virtual QVariant value();
119 virtual void setValue(QVariant value);
120 virtual QString toString() const;
121 virtual bool isEqual(const QVariant &value) const;
132 class Q_AUTOTEST_EXPORT QDeclarativePointValueType : public QDeclarativeValueType
134 Q_PROPERTY(int x READ x WRITE setX)
135 Q_PROPERTY(int y READ y WRITE setY)
138 QDeclarativePointValueType(QObject *parent = 0);
140 virtual void read(QObject *, int);
141 virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags);
142 virtual QVariant value();
143 virtual void setValue(QVariant value);
144 virtual QString toString() const;
145 virtual bool isEqual(const QVariant &value) const;
156 class Q_AUTOTEST_EXPORT QDeclarativeSizeFValueType : public QDeclarativeValueType
158 Q_PROPERTY(qreal width READ width WRITE setWidth)
159 Q_PROPERTY(qreal height READ height WRITE setHeight)
162 QDeclarativeSizeFValueType(QObject *parent = 0);
164 virtual void read(QObject *, int);
165 virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags);
166 virtual QVariant value();
167 virtual void setValue(QVariant value);
168 virtual QString toString() const;
169 virtual bool isEqual(const QVariant &value) const;
172 qreal height() const;
173 void setWidth(qreal);
174 void setHeight(qreal);
180 class Q_AUTOTEST_EXPORT QDeclarativeSizeValueType : public QDeclarativeValueType
182 Q_PROPERTY(int width READ width WRITE setWidth)
183 Q_PROPERTY(int height READ height WRITE setHeight)
186 QDeclarativeSizeValueType(QObject *parent = 0);
188 virtual void read(QObject *, int);
189 virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags);
190 virtual QVariant value();
191 virtual void setValue(QVariant value);
192 virtual QString toString() const;
193 virtual bool isEqual(const QVariant &value) const;
204 class Q_AUTOTEST_EXPORT QDeclarativeRectFValueType : public QDeclarativeValueType
206 Q_PROPERTY(qreal x READ x WRITE setX)
207 Q_PROPERTY(qreal y READ y WRITE setY)
208 Q_PROPERTY(qreal width READ width WRITE setWidth)
209 Q_PROPERTY(qreal height READ height WRITE setHeight)
212 QDeclarativeRectFValueType(QObject *parent = 0);
214 virtual void read(QObject *, int);
215 virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags);
216 virtual QVariant value();
217 virtual void setValue(QVariant value);
218 virtual QString toString() const;
219 virtual bool isEqual(const QVariant &value) const;
227 qreal height() const;
228 void setWidth(qreal);
229 void setHeight(qreal);
235 class Q_AUTOTEST_EXPORT QDeclarativeRectValueType : public QDeclarativeValueType
237 Q_PROPERTY(int x READ x WRITE setX)
238 Q_PROPERTY(int y READ y WRITE setY)
239 Q_PROPERTY(int width READ width WRITE setWidth)
240 Q_PROPERTY(int height READ height WRITE setHeight)
243 QDeclarativeRectValueType(QObject *parent = 0);
245 virtual void read(QObject *, int);
246 virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags);
247 virtual QVariant value();
248 virtual void setValue(QVariant value);
249 virtual QString toString() const;
250 virtual bool isEqual(const QVariant &value) const;
266 class Q_AUTOTEST_EXPORT QDeclarativeVector2DValueType : public QDeclarativeValueType
268 Q_PROPERTY(qreal x READ x WRITE setX)
269 Q_PROPERTY(qreal y READ y WRITE setY)
272 QDeclarativeVector2DValueType(QObject *parent = 0);
274 virtual void read(QObject *, int);
275 virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags);
276 virtual QVariant value();
277 virtual void setValue(QVariant value);
278 virtual QString toString() const;
279 virtual bool isEqual(const QVariant &value) const;
290 class Q_AUTOTEST_EXPORT QDeclarativeVector3DValueType : public QDeclarativeValueType
292 Q_PROPERTY(qreal x READ x WRITE setX)
293 Q_PROPERTY(qreal y READ y WRITE setY)
294 Q_PROPERTY(qreal z READ z WRITE setZ)
297 QDeclarativeVector3DValueType(QObject *parent = 0);
299 virtual void read(QObject *, int);
300 virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags);
301 virtual QVariant value();
302 virtual void setValue(QVariant value);
303 virtual QString toString() const;
304 virtual bool isEqual(const QVariant &value) const;
317 class Q_AUTOTEST_EXPORT QDeclarativeVector4DValueType : public QDeclarativeValueType
319 Q_PROPERTY(qreal x READ x WRITE setX)
320 Q_PROPERTY(qreal y READ y WRITE setY)
321 Q_PROPERTY(qreal z READ z WRITE setZ)
322 Q_PROPERTY(qreal w READ w WRITE setW)
325 QDeclarativeVector4DValueType(QObject *parent = 0);
327 virtual void read(QObject *, int);
328 virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags);
329 virtual QVariant value();
330 virtual void setValue(QVariant value);
331 virtual QString toString() const;
332 virtual bool isEqual(const QVariant &value) const;
347 class Q_AUTOTEST_EXPORT QDeclarativeQuaternionValueType : public QDeclarativeValueType
349 Q_PROPERTY(qreal scalar READ scalar WRITE setScalar)
350 Q_PROPERTY(qreal x READ x WRITE setX)
351 Q_PROPERTY(qreal y READ y WRITE setY)
352 Q_PROPERTY(qreal z READ z WRITE setZ)
355 QDeclarativeQuaternionValueType(QObject *parent = 0);
357 virtual void read(QObject *, int);
358 virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags);
359 virtual QVariant value();
360 virtual void setValue(QVariant value);
361 virtual QString toString() const;
362 virtual bool isEqual(const QVariant &value) const;
364 qreal scalar() const;
368 void setScalar(qreal);
374 QQuaternion quaternion;
377 class Q_AUTOTEST_EXPORT QDeclarativeMatrix4x4ValueType : public QDeclarativeValueType
379 Q_PROPERTY(qreal m11 READ m11 WRITE setM11)
380 Q_PROPERTY(qreal m12 READ m12 WRITE setM12)
381 Q_PROPERTY(qreal m13 READ m13 WRITE setM13)
382 Q_PROPERTY(qreal m14 READ m14 WRITE setM14)
383 Q_PROPERTY(qreal m21 READ m21 WRITE setM21)
384 Q_PROPERTY(qreal m22 READ m22 WRITE setM22)
385 Q_PROPERTY(qreal m23 READ m23 WRITE setM23)
386 Q_PROPERTY(qreal m24 READ m24 WRITE setM24)
387 Q_PROPERTY(qreal m31 READ m31 WRITE setM31)
388 Q_PROPERTY(qreal m32 READ m32 WRITE setM32)
389 Q_PROPERTY(qreal m33 READ m33 WRITE setM33)
390 Q_PROPERTY(qreal m34 READ m34 WRITE setM34)
391 Q_PROPERTY(qreal m41 READ m41 WRITE setM41)
392 Q_PROPERTY(qreal m42 READ m42 WRITE setM42)
393 Q_PROPERTY(qreal m43 READ m43 WRITE setM43)
394 Q_PROPERTY(qreal m44 READ m44 WRITE setM44)
397 QDeclarativeMatrix4x4ValueType(QObject *parent = 0);
399 virtual void read(QObject *, int);
400 virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags);
401 virtual QVariant value();
402 virtual void setValue(QVariant value);
403 virtual QString toString() const;
404 virtual bool isEqual(const QVariant &value) const;
406 qreal m11() const { return matrix(0, 0); }
407 qreal m12() const { return matrix(0, 1); }
408 qreal m13() const { return matrix(0, 2); }
409 qreal m14() const { return matrix(0, 3); }
410 qreal m21() const { return matrix(1, 0); }
411 qreal m22() const { return matrix(1, 1); }
412 qreal m23() const { return matrix(1, 2); }
413 qreal m24() const { return matrix(1, 3); }
414 qreal m31() const { return matrix(2, 0); }
415 qreal m32() const { return matrix(2, 1); }
416 qreal m33() const { return matrix(2, 2); }
417 qreal m34() const { return matrix(2, 3); }
418 qreal m41() const { return matrix(3, 0); }
419 qreal m42() const { return matrix(3, 1); }
420 qreal m43() const { return matrix(3, 2); }
421 qreal m44() const { return matrix(3, 3); }
423 void setM11(qreal value) { matrix(0, 0) = value; }
424 void setM12(qreal value) { matrix(0, 1) = value; }
425 void setM13(qreal value) { matrix(0, 2) = value; }
426 void setM14(qreal value) { matrix(0, 3) = value; }
427 void setM21(qreal value) { matrix(1, 0) = value; }
428 void setM22(qreal value) { matrix(1, 1) = value; }
429 void setM23(qreal value) { matrix(1, 2) = value; }
430 void setM24(qreal value) { matrix(1, 3) = value; }
431 void setM31(qreal value) { matrix(2, 0) = value; }
432 void setM32(qreal value) { matrix(2, 1) = value; }
433 void setM33(qreal value) { matrix(2, 2) = value; }
434 void setM34(qreal value) { matrix(2, 3) = value; }
435 void setM41(qreal value) { matrix(3, 0) = value; }
436 void setM42(qreal value) { matrix(3, 1) = value; }
437 void setM43(qreal value) { matrix(3, 2) = value; }
438 void setM44(qreal value) { matrix(3, 3) = value; }
444 class Q_AUTOTEST_EXPORT QDeclarativeEasingValueType : public QDeclarativeValueType
449 Q_PROPERTY(QDeclarativeEasingValueType::Type type READ type WRITE setType)
450 Q_PROPERTY(qreal amplitude READ amplitude WRITE setAmplitude)
451 Q_PROPERTY(qreal overshoot READ overshoot WRITE setOvershoot)
452 Q_PROPERTY(qreal period READ period WRITE setPeriod)
455 Linear = QEasingCurve::Linear,
456 InQuad = QEasingCurve::InQuad, OutQuad = QEasingCurve::OutQuad,
457 InOutQuad = QEasingCurve::InOutQuad, OutInQuad = QEasingCurve::OutInQuad,
458 InCubic = QEasingCurve::InCubic, OutCubic = QEasingCurve::OutCubic,
459 InOutCubic = QEasingCurve::InOutCubic, OutInCubic = QEasingCurve::OutInCubic,
460 InQuart = QEasingCurve::InQuart, OutQuart = QEasingCurve::OutQuart,
461 InOutQuart = QEasingCurve::InOutQuart, OutInQuart = QEasingCurve::OutInQuart,
462 InQuint = QEasingCurve::InQuint, OutQuint = QEasingCurve::OutQuint,
463 InOutQuint = QEasingCurve::InOutQuint, OutInQuint = QEasingCurve::OutInQuint,
464 InSine = QEasingCurve::InSine, OutSine = QEasingCurve::OutSine,
465 InOutSine = QEasingCurve::InOutSine, OutInSine = QEasingCurve::OutInSine,
466 InExpo = QEasingCurve::InExpo, OutExpo = QEasingCurve::OutExpo,
467 InOutExpo = QEasingCurve::InOutExpo, OutInExpo = QEasingCurve::OutInExpo,
468 InCirc = QEasingCurve::InCirc, OutCirc = QEasingCurve::OutCirc,
469 InOutCirc = QEasingCurve::InOutCirc, OutInCirc = QEasingCurve::OutInCirc,
470 InElastic = QEasingCurve::InElastic, OutElastic = QEasingCurve::OutElastic,
471 InOutElastic = QEasingCurve::InOutElastic, OutInElastic = QEasingCurve::OutInElastic,
472 InBack = QEasingCurve::InBack, OutBack = QEasingCurve::OutBack,
473 InOutBack = QEasingCurve::InOutBack, OutInBack = QEasingCurve::OutInBack,
474 InBounce = QEasingCurve::InBounce, OutBounce = QEasingCurve::OutBounce,
475 InOutBounce = QEasingCurve::InOutBounce, OutInBounce = QEasingCurve::OutInBounce,
476 InCurve = QEasingCurve::InCurve, OutCurve = QEasingCurve::OutCurve,
477 SineCurve = QEasingCurve::SineCurve, CosineCurve = QEasingCurve::CosineCurve
480 QDeclarativeEasingValueType(QObject *parent = 0);
482 virtual void read(QObject *, int);
483 virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags);
484 virtual QVariant value();
485 virtual void setValue(QVariant value);
486 virtual QString toString() const;
487 virtual bool isEqual(const QVariant &value) const;
490 qreal amplitude() const;
491 qreal overshoot() const;
492 qreal period() const;
494 void setAmplitude(qreal);
495 void setOvershoot(qreal);
496 void setPeriod(qreal);
502 class Q_AUTOTEST_EXPORT QDeclarativeFontValueType : public QDeclarativeValueType
506 Q_ENUMS(Capitalization)
508 Q_PROPERTY(QString family READ family WRITE setFamily)
509 Q_PROPERTY(bool bold READ bold WRITE setBold)
510 Q_PROPERTY(FontWeight weight READ weight WRITE setWeight)
511 Q_PROPERTY(bool italic READ italic WRITE setItalic)
512 Q_PROPERTY(bool underline READ underline WRITE setUnderline)
513 Q_PROPERTY(bool overline READ overline WRITE setOverline)
514 Q_PROPERTY(bool strikeout READ strikeout WRITE setStrikeout)
515 Q_PROPERTY(qreal pointSize READ pointSize WRITE setPointSize)
516 Q_PROPERTY(int pixelSize READ pixelSize WRITE setPixelSize)
517 Q_PROPERTY(Capitalization capitalization READ capitalization WRITE setCapitalization)
518 Q_PROPERTY(qreal letterSpacing READ letterSpacing WRITE setLetterSpacing)
519 Q_PROPERTY(qreal wordSpacing READ wordSpacing WRITE setWordSpacing)
522 enum FontWeight { Light = QFont::Light,
523 Normal = QFont::Normal,
524 DemiBold = QFont::DemiBold,
526 Black = QFont::Black };
527 enum Capitalization { MixedCase = QFont::MixedCase,
528 AllUppercase = QFont::AllUppercase,
529 AllLowercase = QFont::AllLowercase,
530 SmallCaps = QFont::SmallCaps,
531 Capitalize = QFont::Capitalize };
533 QDeclarativeFontValueType(QObject *parent = 0);
535 virtual void read(QObject *, int);
536 virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags);
537 virtual QVariant value();
538 virtual void setValue(QVariant value);
539 virtual QString toString() const;
540 virtual bool isEqual(const QVariant &value) const;
542 QString family() const;
543 void setFamily(const QString &);
546 void setBold(bool b);
548 FontWeight weight() const;
549 void setWeight(FontWeight);
552 void setItalic(bool b);
554 bool underline() const;
555 void setUnderline(bool b);
557 bool overline() const;
558 void setOverline(bool b);
560 bool strikeout() const;
561 void setStrikeout(bool b);
563 qreal pointSize() const;
564 void setPointSize(qreal size);
566 int pixelSize() const;
567 void setPixelSize(int size);
569 Capitalization capitalization() const;
570 void setCapitalization(Capitalization);
572 qreal letterSpacing() const;
573 void setLetterSpacing(qreal spacing);
575 qreal wordSpacing() const;
576 void setWordSpacing(qreal spacing);
582 mutable QDeclarativeNullableValue<int> dpi;
587 #endif // QDECLARATIVEVALUETYPE_P_H