| /**************************************************************************** |
| ** |
| ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). |
| ** All rights reserved. |
| ** Contact: Nokia Corporation (qt-info@nokia.com) |
| ** |
| ** This file is part of the QtDeclarative module of the Qt Toolkit. |
| ** |
| ** $QT_BEGIN_LICENSE:LGPL$ |
| ** GNU Lesser General Public License Usage |
| ** This file may be used under the terms of the GNU Lesser General Public |
| ** License version 2.1 as published by the Free Software Foundation and |
| ** appearing in the file LICENSE.LGPL included in the packaging of this |
| ** file. Please review the following information to ensure the GNU Lesser |
| ** General Public License version 2.1 requirements will be met: |
| ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. |
| ** |
| ** In addition, as a special exception, Nokia gives you certain additional |
| ** rights. These rights are described in the Nokia Qt LGPL Exception |
| ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. |
| ** |
| ** GNU General Public License Usage |
| ** Alternatively, this file may be used under the terms of the GNU General |
| ** Public License version 3.0 as published by the Free Software Foundation |
| ** and appearing in the file LICENSE.GPL included in the packaging of this |
| ** file. Please review the following information to ensure the GNU General |
| ** Public License version 3.0 requirements will be met: |
| ** http://www.gnu.org/copyleft/gpl.html. |
| ** |
| ** Other Usage |
| ** Alternatively, this file may be used in accordance with the terms and |
| ** conditions contained in a signed written agreement between you and Nokia. |
| ** |
| ** |
| ** |
| ** |
| ** |
| ** $QT_END_LICENSE$ |
| ** |
| ****************************************************************************/ |
| |
| #ifndef QDECLARATIVEVALUETYPE_P_H |
| #define QDECLARATIVEVALUETYPE_P_H |
| |
| // |
| // W A R N I N G |
| // ------------- |
| // |
| // This file is not part of the Qt API. It exists purely as an |
| // implementation detail. This header file may change from version to |
| // version without notice, or even be removed. |
| // |
| // We mean it. |
| // |
| |
| #include "qdeclarativeproperty.h" |
| #include "private/qdeclarativeproperty_p.h" |
| #include "private/qdeclarativenullablevalue_p_p.h" |
| |
| #include <QtCore/qobject.h> |
| #include <QtCore/qrect.h> |
| #include <QtCore/qeasingcurve.h> |
| #include <QtCore/qvariant.h> |
| #include <QtGui/qvector2d.h> |
| #include <QtGui/qvector3d.h> |
| #include <QtGui/qvector4d.h> |
| #include <QtGui/qmatrix4x4.h> |
| #include <QtGui/qquaternion.h> |
| #include <QtGui/qfont.h> |
| |
| QT_BEGIN_NAMESPACE |
| |
| class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeValueType : public QObject |
| { |
| Q_OBJECT |
| public: |
| QDeclarativeValueType(QObject *parent = 0); |
| virtual void read(QObject *, int) = 0; |
| virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags flags) = 0; |
| virtual QVariant value() = 0; |
| virtual void setValue(QVariant) = 0; |
| }; |
| |
| class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeValueTypeFactory |
| { |
| public: |
| QDeclarativeValueTypeFactory(); |
| ~QDeclarativeValueTypeFactory(); |
| static bool isValueType(int); |
| static QDeclarativeValueType *valueType(int); |
| |
| static void registerValueTypes(); |
| |
| QDeclarativeValueType *operator[](int idx) const { |
| if (idx >= (int)QVariant::UserType) return 0; |
| else return valueTypes[idx]; |
| } |
| |
| private: |
| QDeclarativeValueType *valueTypes[QVariant::UserType - 1]; |
| }; |
| |
| class Q_AUTOTEST_EXPORT QDeclarativePointFValueType : public QDeclarativeValueType |
| { |
| Q_PROPERTY(qreal x READ x WRITE setX) |
| Q_PROPERTY(qreal y READ y WRITE setY) |
| Q_OBJECT |
| public: |
| QDeclarativePointFValueType(QObject *parent = 0); |
| |
| virtual void read(QObject *, int); |
| virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags); |
| virtual QVariant value(); |
| virtual void setValue(QVariant value); |
| |
| qreal x() const; |
| qreal y() const; |
| void setX(qreal); |
| void setY(qreal); |
| |
| private: |
| QPointF point; |
| }; |
| |
| class Q_AUTOTEST_EXPORT QDeclarativePointValueType : public QDeclarativeValueType |
| { |
| Q_PROPERTY(int x READ x WRITE setX) |
| Q_PROPERTY(int y READ y WRITE setY) |
| Q_OBJECT |
| public: |
| QDeclarativePointValueType(QObject *parent = 0); |
| |
| virtual void read(QObject *, int); |
| virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags); |
| virtual QVariant value(); |
| virtual void setValue(QVariant value); |
| |
| int x() const; |
| int y() const; |
| void setX(int); |
| void setY(int); |
| |
| private: |
| QPoint point; |
| }; |
| |
| class Q_AUTOTEST_EXPORT QDeclarativeSizeFValueType : public QDeclarativeValueType |
| { |
| Q_PROPERTY(qreal width READ width WRITE setWidth) |
| Q_PROPERTY(qreal height READ height WRITE setHeight) |
| Q_OBJECT |
| public: |
| QDeclarativeSizeFValueType(QObject *parent = 0); |
| |
| virtual void read(QObject *, int); |
| virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags); |
| virtual QVariant value(); |
| virtual void setValue(QVariant value); |
| |
| qreal width() const; |
| qreal height() const; |
| void setWidth(qreal); |
| void setHeight(qreal); |
| |
| private: |
| QSizeF size; |
| }; |
| |
| class Q_AUTOTEST_EXPORT QDeclarativeSizeValueType : public QDeclarativeValueType |
| { |
| Q_PROPERTY(int width READ width WRITE setWidth) |
| Q_PROPERTY(int height READ height WRITE setHeight) |
| Q_OBJECT |
| public: |
| QDeclarativeSizeValueType(QObject *parent = 0); |
| |
| virtual void read(QObject *, int); |
| virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags); |
| virtual QVariant value(); |
| virtual void setValue(QVariant value); |
| |
| int width() const; |
| int height() const; |
| void setWidth(int); |
| void setHeight(int); |
| |
| private: |
| QSize size; |
| }; |
| |
| class Q_AUTOTEST_EXPORT QDeclarativeRectFValueType : public QDeclarativeValueType |
| { |
| Q_PROPERTY(qreal x READ x WRITE setX) |
| Q_PROPERTY(qreal y READ y WRITE setY) |
| Q_PROPERTY(qreal width READ width WRITE setWidth) |
| Q_PROPERTY(qreal height READ height WRITE setHeight) |
| Q_OBJECT |
| public: |
| QDeclarativeRectFValueType(QObject *parent = 0); |
| |
| virtual void read(QObject *, int); |
| virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags); |
| virtual QVariant value(); |
| virtual void setValue(QVariant value); |
| |
| qreal x() const; |
| qreal y() const; |
| void setX(qreal); |
| void setY(qreal); |
| |
| qreal width() const; |
| qreal height() const; |
| void setWidth(qreal); |
| void setHeight(qreal); |
| |
| private: |
| QRectF rect; |
| }; |
| |
| class Q_AUTOTEST_EXPORT QDeclarativeRectValueType : public QDeclarativeValueType |
| { |
| Q_PROPERTY(int x READ x WRITE setX) |
| Q_PROPERTY(int y READ y WRITE setY) |
| Q_PROPERTY(int width READ width WRITE setWidth) |
| Q_PROPERTY(int height READ height WRITE setHeight) |
| Q_OBJECT |
| public: |
| QDeclarativeRectValueType(QObject *parent = 0); |
| |
| virtual void read(QObject *, int); |
| virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags); |
| virtual QVariant value(); |
| virtual void setValue(QVariant value); |
| |
| int x() const; |
| int y() const; |
| void setX(int); |
| void setY(int); |
| |
| int width() const; |
| int height() const; |
| void setWidth(int); |
| void setHeight(int); |
| |
| private: |
| QRect rect; |
| }; |
| |
| class Q_AUTOTEST_EXPORT QDeclarativeVector2DValueType : public QDeclarativeValueType |
| { |
| Q_PROPERTY(qreal x READ x WRITE setX) |
| Q_PROPERTY(qreal y READ y WRITE setY) |
| Q_OBJECT |
| public: |
| QDeclarativeVector2DValueType(QObject *parent = 0); |
| |
| virtual void read(QObject *, int); |
| virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags); |
| virtual QVariant value(); |
| virtual void setValue(QVariant value); |
| |
| qreal x() const; |
| qreal y() const; |
| void setX(qreal); |
| void setY(qreal); |
| |
| private: |
| QVector2D vector; |
| }; |
| |
| class Q_AUTOTEST_EXPORT QDeclarativeVector3DValueType : public QDeclarativeValueType |
| { |
| Q_PROPERTY(qreal x READ x WRITE setX) |
| Q_PROPERTY(qreal y READ y WRITE setY) |
| Q_PROPERTY(qreal z READ z WRITE setZ) |
| Q_OBJECT |
| public: |
| QDeclarativeVector3DValueType(QObject *parent = 0); |
| |
| virtual void read(QObject *, int); |
| virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags); |
| virtual QVariant value(); |
| virtual void setValue(QVariant value); |
| |
| qreal x() const; |
| qreal y() const; |
| qreal z() const; |
| void setX(qreal); |
| void setY(qreal); |
| void setZ(qreal); |
| |
| private: |
| QVector3D vector; |
| }; |
| |
| class Q_AUTOTEST_EXPORT QDeclarativeVector4DValueType : public QDeclarativeValueType |
| { |
| Q_PROPERTY(qreal x READ x WRITE setX) |
| Q_PROPERTY(qreal y READ y WRITE setY) |
| Q_PROPERTY(qreal z READ z WRITE setZ) |
| Q_PROPERTY(qreal w READ w WRITE setW) |
| Q_OBJECT |
| public: |
| QDeclarativeVector4DValueType(QObject *parent = 0); |
| |
| virtual void read(QObject *, int); |
| virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags); |
| virtual QVariant value(); |
| virtual void setValue(QVariant value); |
| |
| qreal x() const; |
| qreal y() const; |
| qreal z() const; |
| qreal w() const; |
| void setX(qreal); |
| void setY(qreal); |
| void setZ(qreal); |
| void setW(qreal); |
| |
| private: |
| QVector4D vector; |
| }; |
| |
| class Q_AUTOTEST_EXPORT QDeclarativeQuaternionValueType : public QDeclarativeValueType |
| { |
| Q_PROPERTY(qreal scalar READ scalar WRITE setScalar) |
| Q_PROPERTY(qreal x READ x WRITE setX) |
| Q_PROPERTY(qreal y READ y WRITE setY) |
| Q_PROPERTY(qreal z READ z WRITE setZ) |
| Q_OBJECT |
| public: |
| QDeclarativeQuaternionValueType(QObject *parent = 0); |
| |
| virtual void read(QObject *, int); |
| virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags); |
| virtual QVariant value(); |
| virtual void setValue(QVariant value); |
| |
| qreal scalar() const; |
| qreal x() const; |
| qreal y() const; |
| qreal z() const; |
| void setScalar(qreal); |
| void setX(qreal); |
| void setY(qreal); |
| void setZ(qreal); |
| |
| private: |
| QQuaternion quaternion; |
| }; |
| |
| class Q_AUTOTEST_EXPORT QDeclarativeMatrix4x4ValueType : public QDeclarativeValueType |
| { |
| Q_PROPERTY(qreal m11 READ m11 WRITE setM11) |
| Q_PROPERTY(qreal m12 READ m12 WRITE setM12) |
| Q_PROPERTY(qreal m13 READ m13 WRITE setM13) |
| Q_PROPERTY(qreal m14 READ m14 WRITE setM14) |
| Q_PROPERTY(qreal m21 READ m21 WRITE setM21) |
| Q_PROPERTY(qreal m22 READ m22 WRITE setM22) |
| Q_PROPERTY(qreal m23 READ m23 WRITE setM23) |
| Q_PROPERTY(qreal m24 READ m24 WRITE setM24) |
| Q_PROPERTY(qreal m31 READ m31 WRITE setM31) |
| Q_PROPERTY(qreal m32 READ m32 WRITE setM32) |
| Q_PROPERTY(qreal m33 READ m33 WRITE setM33) |
| Q_PROPERTY(qreal m34 READ m34 WRITE setM34) |
| Q_PROPERTY(qreal m41 READ m41 WRITE setM41) |
| Q_PROPERTY(qreal m42 READ m42 WRITE setM42) |
| Q_PROPERTY(qreal m43 READ m43 WRITE setM43) |
| Q_PROPERTY(qreal m44 READ m44 WRITE setM44) |
| Q_OBJECT |
| public: |
| QDeclarativeMatrix4x4ValueType(QObject *parent = 0); |
| |
| virtual void read(QObject *, int); |
| virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags); |
| virtual QVariant value(); |
| virtual void setValue(QVariant value); |
| |
| qreal m11() const { return matrix(0, 0); } |
| qreal m12() const { return matrix(0, 1); } |
| qreal m13() const { return matrix(0, 2); } |
| qreal m14() const { return matrix(0, 3); } |
| qreal m21() const { return matrix(1, 0); } |
| qreal m22() const { return matrix(1, 1); } |
| qreal m23() const { return matrix(1, 2); } |
| qreal m24() const { return matrix(1, 3); } |
| qreal m31() const { return matrix(2, 0); } |
| qreal m32() const { return matrix(2, 1); } |
| qreal m33() const { return matrix(2, 2); } |
| qreal m34() const { return matrix(2, 3); } |
| qreal m41() const { return matrix(3, 0); } |
| qreal m42() const { return matrix(3, 1); } |
| qreal m43() const { return matrix(3, 2); } |
| qreal m44() const { return matrix(3, 3); } |
| |
| void setM11(qreal value) { matrix(0, 0) = value; } |
| void setM12(qreal value) { matrix(0, 1) = value; } |
| void setM13(qreal value) { matrix(0, 2) = value; } |
| void setM14(qreal value) { matrix(0, 3) = value; } |
| void setM21(qreal value) { matrix(1, 0) = value; } |
| void setM22(qreal value) { matrix(1, 1) = value; } |
| void setM23(qreal value) { matrix(1, 2) = value; } |
| void setM24(qreal value) { matrix(1, 3) = value; } |
| void setM31(qreal value) { matrix(2, 0) = value; } |
| void setM32(qreal value) { matrix(2, 1) = value; } |
| void setM33(qreal value) { matrix(2, 2) = value; } |
| void setM34(qreal value) { matrix(2, 3) = value; } |
| void setM41(qreal value) { matrix(3, 0) = value; } |
| void setM42(qreal value) { matrix(3, 1) = value; } |
| void setM43(qreal value) { matrix(3, 2) = value; } |
| void setM44(qreal value) { matrix(3, 3) = value; } |
| |
| private: |
| QMatrix4x4 matrix; |
| }; |
| |
| class Q_AUTOTEST_EXPORT QDeclarativeEasingValueType : public QDeclarativeValueType |
| { |
| Q_OBJECT |
| Q_ENUMS(Type) |
| |
| Q_PROPERTY(QDeclarativeEasingValueType::Type type READ type WRITE setType) |
| Q_PROPERTY(qreal amplitude READ amplitude WRITE setAmplitude) |
| Q_PROPERTY(qreal overshoot READ overshoot WRITE setOvershoot) |
| Q_PROPERTY(qreal period READ period WRITE setPeriod) |
| public: |
| enum Type { |
| Linear = QEasingCurve::Linear, |
| InQuad = QEasingCurve::InQuad, OutQuad = QEasingCurve::OutQuad, |
| InOutQuad = QEasingCurve::InOutQuad, OutInQuad = QEasingCurve::OutInQuad, |
| InCubic = QEasingCurve::InCubic, OutCubic = QEasingCurve::OutCubic, |
| InOutCubic = QEasingCurve::InOutCubic, OutInCubic = QEasingCurve::OutInCubic, |
| InQuart = QEasingCurve::InQuart, OutQuart = QEasingCurve::OutQuart, |
| InOutQuart = QEasingCurve::InOutQuart, OutInQuart = QEasingCurve::OutInQuart, |
| InQuint = QEasingCurve::InQuint, OutQuint = QEasingCurve::OutQuint, |
| InOutQuint = QEasingCurve::InOutQuint, OutInQuint = QEasingCurve::OutInQuint, |
| InSine = QEasingCurve::InSine, OutSine = QEasingCurve::OutSine, |
| InOutSine = QEasingCurve::InOutSine, OutInSine = QEasingCurve::OutInSine, |
| InExpo = QEasingCurve::InExpo, OutExpo = QEasingCurve::OutExpo, |
| InOutExpo = QEasingCurve::InOutExpo, OutInExpo = QEasingCurve::OutInExpo, |
| InCirc = QEasingCurve::InCirc, OutCirc = QEasingCurve::OutCirc, |
| InOutCirc = QEasingCurve::InOutCirc, OutInCirc = QEasingCurve::OutInCirc, |
| InElastic = QEasingCurve::InElastic, OutElastic = QEasingCurve::OutElastic, |
| InOutElastic = QEasingCurve::InOutElastic, OutInElastic = QEasingCurve::OutInElastic, |
| InBack = QEasingCurve::InBack, OutBack = QEasingCurve::OutBack, |
| InOutBack = QEasingCurve::InOutBack, OutInBack = QEasingCurve::OutInBack, |
| InBounce = QEasingCurve::InBounce, OutBounce = QEasingCurve::OutBounce, |
| InOutBounce = QEasingCurve::InOutBounce, OutInBounce = QEasingCurve::OutInBounce, |
| InCurve = QEasingCurve::InCurve, OutCurve = QEasingCurve::OutCurve, |
| SineCurve = QEasingCurve::SineCurve, CosineCurve = QEasingCurve::CosineCurve |
| }; |
| |
| QDeclarativeEasingValueType(QObject *parent = 0); |
| |
| virtual void read(QObject *, int); |
| virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags); |
| virtual QVariant value(); |
| virtual void setValue(QVariant value); |
| |
| Type type() const; |
| qreal amplitude() const; |
| qreal overshoot() const; |
| qreal period() const; |
| void setType(Type); |
| void setAmplitude(qreal); |
| void setOvershoot(qreal); |
| void setPeriod(qreal); |
| |
| private: |
| QEasingCurve easing; |
| }; |
| |
| class Q_AUTOTEST_EXPORT QDeclarativeFontValueType : public QDeclarativeValueType |
| { |
| Q_OBJECT |
| Q_ENUMS(FontWeight) |
| Q_ENUMS(Capitalization) |
| |
| Q_PROPERTY(QString family READ family WRITE setFamily) |
| Q_PROPERTY(bool bold READ bold WRITE setBold) |
| Q_PROPERTY(FontWeight weight READ weight WRITE setWeight) |
| Q_PROPERTY(bool italic READ italic WRITE setItalic) |
| Q_PROPERTY(bool underline READ underline WRITE setUnderline) |
| Q_PROPERTY(bool overline READ overline WRITE setOverline) |
| Q_PROPERTY(bool strikeout READ strikeout WRITE setStrikeout) |
| Q_PROPERTY(qreal pointSize READ pointSize WRITE setPointSize) |
| Q_PROPERTY(int pixelSize READ pixelSize WRITE setPixelSize) |
| Q_PROPERTY(Capitalization capitalization READ capitalization WRITE setCapitalization) |
| Q_PROPERTY(qreal letterSpacing READ letterSpacing WRITE setLetterSpacing) |
| Q_PROPERTY(qreal wordSpacing READ wordSpacing WRITE setWordSpacing) |
| |
| public: |
| enum FontWeight { Light = QFont::Light, |
| Normal = QFont::Normal, |
| DemiBold = QFont::DemiBold, |
| Bold = QFont::Bold, |
| Black = QFont::Black }; |
| enum Capitalization { MixedCase = QFont::MixedCase, |
| AllUppercase = QFont::AllUppercase, |
| AllLowercase = QFont::AllLowercase, |
| SmallCaps = QFont::SmallCaps, |
| Capitalize = QFont::Capitalize }; |
| |
| QDeclarativeFontValueType(QObject *parent = 0); |
| |
| virtual void read(QObject *, int); |
| virtual void write(QObject *, int, QDeclarativePropertyPrivate::WriteFlags); |
| virtual QVariant value(); |
| virtual void setValue(QVariant value); |
| |
| QString family() const; |
| void setFamily(const QString &); |
| |
| bool bold() const; |
| void setBold(bool b); |
| |
| FontWeight weight() const; |
| void setWeight(FontWeight); |
| |
| bool italic() const; |
| void setItalic(bool b); |
| |
| bool underline() const; |
| void setUnderline(bool b); |
| |
| bool overline() const; |
| void setOverline(bool b); |
| |
| bool strikeout() const; |
| void setStrikeout(bool b); |
| |
| qreal pointSize() const; |
| void setPointSize(qreal size); |
| |
| int pixelSize() const; |
| void setPixelSize(int size); |
| |
| Capitalization capitalization() const; |
| void setCapitalization(Capitalization); |
| |
| qreal letterSpacing() const; |
| void setLetterSpacing(qreal spacing); |
| |
| qreal wordSpacing() const; |
| void setWordSpacing(qreal spacing); |
| |
| private: |
| QFont font; |
| bool pixelSizeSet; |
| bool pointSizeSet; |
| mutable QDeclarativeNullableValue<int> dpi; |
| }; |
| |
| QT_END_NAMESPACE |
| |
| #endif // QDECLARATIVEVALUETYPE_P_H |