summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/quick3d/quick3d/qt3dquick_global.cpp23
-rw-r--r--src/quick3d/quick3d/qt3dquickvaluetypes.cpp67
-rw-r--r--src/quick3d/quick3d/qt3dquickvaluetypes_p.h59
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); }