diff options
-rw-r--r-- | src/quick3d/quick3d/qt3dquick_global.cpp | 23 | ||||
-rw-r--r-- | src/quick3d/quick3d/qt3dquickvaluetypes.cpp | 67 | ||||
-rw-r--r-- | src/quick3d/quick3d/qt3dquickvaluetypes_p.h | 59 |
3 files changed, 34 insertions, 115 deletions
diff --git a/src/quick3d/quick3d/qt3dquick_global.cpp b/src/quick3d/quick3d/qt3dquick_global.cpp index 5ce361cf6..3d4450897 100644 --- a/src/quick3d/quick3d/qt3dquick_global.cpp +++ b/src/quick3d/quick3d/qt3dquick_global.cpp @@ -288,33 +288,26 @@ public: return QMatrix4x4(matVals); } - template<typename T> - bool typedCreate(QQmlValueType *&v) - { - v = new T; - return true; - } - - bool create(int type, QQmlValueType *&v) + const QMetaObject *getMetaObjectForMetaType(int type) { switch (type) { case QMetaType::QColor: - return typedCreate<Quick3DColorValueType>(v); + return &Quick3DColorValueType::staticMetaObject; case QMetaType::QVector2D: - return typedCreate<Quick3DVector2DValueType>(v); + return &Quick3DVector2DValueType::staticMetaObject; case QMetaType::QVector3D: - return typedCreate<Quick3DVector3DValueType>(v); + return &Quick3DVector3DValueType::staticMetaObject; case QMetaType::QVector4D: - return typedCreate<Quick3DVector4DValueType>(v); + return &Quick3DVector4DValueType::staticMetaObject; case QMetaType::QQuaternion: - return typedCreate<Quick3DQuaternionValueType>(v); + return &Quick3DQuaternionValueType::staticMetaObject; case QMetaType::QMatrix4x4: - return typedCreate<Quick3DMatrix4x4ValueType>(v); + return &Quick3DMatrix4x4ValueType::staticMetaObject; default: break; } - return false; + return Q_NULLPTR; } template<typename T> diff --git a/src/quick3d/quick3d/qt3dquickvaluetypes.cpp b/src/quick3d/quick3d/qt3dquickvaluetypes.cpp index 9a6c15432..300359929 100644 --- a/src/quick3d/quick3d/qt3dquickvaluetypes.cpp +++ b/src/quick3d/quick3d/qt3dquickvaluetypes.cpp @@ -1,5 +1,6 @@ /**************************************************************************** ** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). ** Copyright (C) 2014 Klaralvdalens Datakonsult AB (KDAB). ** Contact: http://www.qt-project.org/legal ** @@ -54,11 +55,6 @@ namespace Quick3DValueTypes { } } -Quick3DColorValueType::Quick3DColorValueType(QObject *parent) - : QQmlValueTypeBase<QColor>(QMetaType::QColor, parent) -{ -} - QString Quick3DColorValueType::toString() const { // to maintain behaviour with QtQuick 1.0, we just output normal toString() value. @@ -106,25 +102,11 @@ void Quick3DColorValueType::setA(qreal a) } -Quick3DVector2DValueType::Quick3DVector2DValueType(QObject *parent) - : QQmlValueTypeBase<QVector2D>(QMetaType::QVector2D, parent) -{ -} - QString Quick3DVector2DValueType::toString() const { return QString(QLatin1String("QVector2D(%1, %2)")).arg(v.x()).arg(v.y()); } -bool Quick3DVector2DValueType::isEqual(const QVariant &other) const -{ - if (other.userType() != QMetaType::QVector2D) - return false; - - QVector2D otherVector = other.value<QVector2D>(); - return (v == otherVector); -} - qreal Quick3DVector2DValueType::x() const { return v.x(); @@ -206,25 +188,11 @@ bool Quick3DVector2DValueType::fuzzyEquals(const QVector2D &vec) const } -Quick3DVector3DValueType::Quick3DVector3DValueType(QObject *parent) - : QQmlValueTypeBase<QVector3D>(QMetaType::QVector3D, parent) -{ -} - QString Quick3DVector3DValueType::toString() const { return QString(QLatin1String("QVector3D(%1, %2, %3)")).arg(v.x()).arg(v.y()).arg(v.z()); } -bool Quick3DVector3DValueType::isEqual(const QVariant &other) const -{ - if (other.userType() != QMetaType::QVector3D) - return false; - - QVector3D otherVector = other.value<QVector3D>(); - return (v == otherVector); -} - qreal Quick3DVector3DValueType::x() const { return v.x(); @@ -328,25 +296,11 @@ bool Quick3DVector3DValueType::fuzzyEquals(const QVector3D &vec) const } -Quick3DVector4DValueType::Quick3DVector4DValueType(QObject *parent) - : QQmlValueTypeBase<QVector4D>(QMetaType::QVector4D, parent) -{ -} - QString Quick3DVector4DValueType::toString() const { return QString(QLatin1String("QVector4D(%1, %2, %3, %4)")).arg(v.x()).arg(v.y()).arg(v.z()).arg(v.w()); } -bool Quick3DVector4DValueType::isEqual(const QVariant &other) const -{ - if (other.userType() != QMetaType::QVector4D) - return false; - - QVector4D otherVector = other.value<QVector4D>(); - return (v == otherVector); -} - qreal Quick3DVector4DValueType::x() const { return v.x(); @@ -456,10 +410,6 @@ bool Quick3DVector4DValueType::fuzzyEquals(const QVector4D &vec) const return qFuzzyCompare(v, vec); } -Quick3DQuaternionValueType::Quick3DQuaternionValueType(QObject *parent) - : QQmlValueTypeBase<QQuaternion>(QMetaType::QQuaternion, parent) -{ -} QString Quick3DQuaternionValueType::toString() const { @@ -507,11 +457,6 @@ void Quick3DQuaternionValueType::setZ(qreal z) } -Quick3DMatrix4x4ValueType::Quick3DMatrix4x4ValueType(QObject *parent) - : QQmlValueTypeBase<QMatrix4x4>(QMetaType::QMatrix4x4, parent) -{ -} - QMatrix4x4 Quick3DMatrix4x4ValueType::times(const QMatrix4x4 &m) const { return v * m; @@ -594,16 +539,6 @@ QString Quick3DMatrix4x4ValueType::toString() const .arg(v(3, 0)).arg(v(3, 1)).arg(v(3, 2)).arg(v(3, 3)); } -bool Quick3DMatrix4x4ValueType::isEqual(const QVariant &other) const -{ - if (other.userType() != qMetaTypeId<QMatrix4x4>()) - return false; - - QMatrix4x4 otherMatrix = other.value<QMatrix4x4>(); - return (v == otherMatrix); - -} - } // Quick } // Qt3D diff --git a/src/quick3d/quick3d/qt3dquickvaluetypes_p.h b/src/quick3d/quick3d/qt3dquickvaluetypes_p.h index 05e83122d..651449912 100644 --- a/src/quick3d/quick3d/qt3dquickvaluetypes_p.h +++ b/src/quick3d/quick3d/qt3dquickvaluetypes_p.h @@ -1,5 +1,6 @@ /**************************************************************************** ** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). ** Copyright (C) 2014 Klaralvdalens Datakonsult AB (KDAB). ** Contact: http://www.qt-project.org/legal ** @@ -64,17 +65,16 @@ QT3DQUICKSHARED_PRIVATE_EXPORT void registerValueTypes(); } -class QT3DQUICKSHARED_PRIVATE_EXPORT Quick3DColorValueType : public QQmlValueTypeBase<QColor> +class QT3DQUICKSHARED_PRIVATE_EXPORT Quick3DColorValueType { + QColor v; Q_PROPERTY(qreal r READ r WRITE setR FINAL) Q_PROPERTY(qreal g READ g WRITE setG FINAL) Q_PROPERTY(qreal b READ b WRITE setB FINAL) Q_PROPERTY(qreal a READ a WRITE setA FINAL) - Q_OBJECT + Q_GADGET public: - Quick3DColorValueType(QObject *parent = 0); - - virtual QString toString() const; + Q_INVOKABLE QString toString() const; qreal r() const; qreal g() const; @@ -86,16 +86,14 @@ public: void setA(qreal); }; -class QT3DQUICKSHARED_PRIVATE_EXPORT Quick3DVector2DValueType : public QQmlValueTypeBase<QVector2D> +class QT3DQUICKSHARED_PRIVATE_EXPORT Quick3DVector2DValueType { + QVector2D v; Q_PROPERTY(qreal x READ x WRITE setX FINAL) Q_PROPERTY(qreal y READ y WRITE setY FINAL) - Q_OBJECT + Q_GADGET public: - Quick3DVector2DValueType(QObject *parent = 0); - - virtual QString toString() const; - virtual bool isEqual(const QVariant &other) const; + Q_INVOKABLE QString toString() const; qreal x() const; qreal y() const; @@ -115,17 +113,15 @@ public: Q_INVOKABLE bool fuzzyEquals(const QVector2D &vec) const; }; -class QT3DQUICKSHARED_PRIVATE_EXPORT Quick3DVector3DValueType : public QQmlValueTypeBase<QVector3D> +class QT3DQUICKSHARED_PRIVATE_EXPORT Quick3DVector3DValueType { + QVector3D v; Q_PROPERTY(qreal x READ x WRITE setX FINAL) Q_PROPERTY(qreal y READ y WRITE setY FINAL) Q_PROPERTY(qreal z READ z WRITE setZ FINAL) - Q_OBJECT + Q_GADGET public: - Quick3DVector3DValueType(QObject *parent = 0); - - virtual QString toString() const; - virtual bool isEqual(const QVariant &other) const; + Q_INVOKABLE QString toString() const; qreal x() const; qreal y() const; @@ -149,18 +145,16 @@ public: Q_INVOKABLE bool fuzzyEquals(const QVector3D &vec) const; }; -class QT3DQUICKSHARED_PRIVATE_EXPORT Quick3DVector4DValueType : public QQmlValueTypeBase<QVector4D> +class QT3DQUICKSHARED_PRIVATE_EXPORT Quick3DVector4DValueType { + QVector4D v; Q_PROPERTY(qreal x READ x WRITE setX FINAL) Q_PROPERTY(qreal y READ y WRITE setY FINAL) Q_PROPERTY(qreal z READ z WRITE setZ FINAL) Q_PROPERTY(qreal w READ w WRITE setW FINAL) - Q_OBJECT + Q_GADGET public: - Quick3DVector4DValueType(QObject *parent = 0); - - virtual QString toString() const; - virtual bool isEqual(const QVariant &other) const; + Q_INVOKABLE QString toString() const; qreal x() const; qreal y() const; @@ -185,17 +179,16 @@ public: Q_INVOKABLE bool fuzzyEquals(const QVector4D &vec) const; }; -class QT3DQUICKSHARED_PRIVATE_EXPORT Quick3DQuaternionValueType : public QQmlValueTypeBase<QQuaternion> +class QT3DQUICKSHARED_PRIVATE_EXPORT Quick3DQuaternionValueType { + QQuaternion v; 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 + Q_GADGET public: - Quick3DQuaternionValueType(QObject *parent = 0); - - virtual QString toString() const; + Q_INVOKABLE QString toString() const; qreal scalar() const; qreal x() const; @@ -207,8 +200,9 @@ public: void setZ(qreal); }; -class QT3DQUICKSHARED_PRIVATE_EXPORT Quick3DMatrix4x4ValueType : public QQmlValueTypeBase<QMatrix4x4> +class QT3DQUICKSHARED_PRIVATE_EXPORT Quick3DMatrix4x4ValueType { + QMatrix4x4 v; Q_PROPERTY(qreal m11 READ m11 WRITE setM11 FINAL) Q_PROPERTY(qreal m12 READ m12 WRITE setM12 FINAL) Q_PROPERTY(qreal m13 READ m13 WRITE setM13 FINAL) @@ -225,12 +219,9 @@ class QT3DQUICKSHARED_PRIVATE_EXPORT Quick3DMatrix4x4ValueType : public QQmlValu Q_PROPERTY(qreal m42 READ m42 WRITE setM42 FINAL) Q_PROPERTY(qreal m43 READ m43 WRITE setM43 FINAL) Q_PROPERTY(qreal m44 READ m44 WRITE setM44 FINAL) - Q_OBJECT + Q_GADGET public: - Quick3DMatrix4x4ValueType(QObject *parent = 0); - - virtual QString toString() const; - virtual bool isEqual(const QVariant &other) const; + Q_INVOKABLE QString toString() const; qreal m11() const { return v(0, 0); } qreal m12() const { return v(0, 1); } |