diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2014-06-02 09:08:10 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-06-02 20:06:48 +0200 |
commit | 57b22a56da4b5283208d68838e8836d022a66dd6 (patch) | |
tree | 03718e916a8a6d7df3a7ffc2a31e8b338d97487c | |
parent | 40626b172ffbdfec0cd564eb89b1eb672c0c4dc5 (diff) |
Quick3DTransform extended type for Transform
Contains Qml property needed to properly access a Transform from QML.
Needs to be used with qmlRegisterExtendedType.
Change-Id: I6ff8a89a3e160689414f6a90d30fa6652919eb10
Node: This patch won't compile if merged on its own.
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
-rw-r--r-- | src/quick3d/quick3d/items/quick3dtransform.cpp | 21 | ||||
-rw-r--r-- | src/quick3d/quick3d/items/quick3dtransform.h | 10 |
2 files changed, 18 insertions, 13 deletions
diff --git a/src/quick3d/quick3d/items/quick3dtransform.cpp b/src/quick3d/quick3d/items/quick3dtransform.cpp index 02057cfba..98a14ac34 100644 --- a/src/quick3d/quick3d/items/quick3dtransform.cpp +++ b/src/quick3d/quick3d/items/quick3dtransform.cpp @@ -48,7 +48,8 @@ namespace Qt3D { namespace Quick { -Quick3DTransform::Quick3DTransform(Node *parent) : Transform(parent) +Quick3DTransform::Quick3DTransform(QObject *parent) + : QObject(parent) { } @@ -66,27 +67,27 @@ void Quick3DTransform::qmlAppendTransform(QQmlListProperty<AbstractTransform> *l if ( !obj ) return; - Transform *self = static_cast<Transform *>(list->object); - self->appendTransform(obj); + Quick3DTransform *self = static_cast<Quick3DTransform *>(list->object); + self->parentTransform()->appendTransform(obj); } AbstractTransform* Quick3DTransform::transformAt(QQmlListProperty<AbstractTransform> *list, int index) { - Transform *self = static_cast<Transform *>(list->object); - return self->transforms().at(index); + Quick3DTransform *self = static_cast<Quick3DTransform *>(list->object); + return self->parentTransform()->transforms().at(index); } int Quick3DTransform::transformCount(QQmlListProperty<AbstractTransform> *list) { - Transform *self = static_cast<Transform *>(list->object); - return self->transforms().count(); + Quick3DTransform *self = static_cast<Quick3DTransform *>(list->object); + return self->parentTransform()->transforms().count(); } void Quick3DTransform::qmlClearTransforms(QQmlListProperty<AbstractTransform> *list) { - Transform *self = static_cast<Transform *>(list->object); - Q_FOREACH (AbstractTransform *trans, self->transforms()) - self->removeTransform(trans); + Quick3DTransform *self = static_cast<Quick3DTransform *>(list->object); + Q_FOREACH (AbstractTransform *trans, self->parentTransform()->transforms()) + self->parentTransform()->removeTransform(trans); } } //Quick diff --git a/src/quick3d/quick3d/items/quick3dtransform.h b/src/quick3d/quick3d/items/quick3dtransform.h index 7df06cd89..ab7274859 100644 --- a/src/quick3d/quick3d/items/quick3dtransform.h +++ b/src/quick3d/quick3d/items/quick3dtransform.h @@ -43,25 +43,29 @@ #define QT3D_QUICK_QUICK3DTRANSFORM_H #include <QtCore/QtGlobal> -#include <Qt3DCore/transform.h> #include <QQmlListProperty> #include <Qt3DQuick/qt3dquick_global.h> +#include <Qt3DCore/transform.h> QT_BEGIN_NAMESPACE namespace Qt3D { +class Transform; + namespace Quick { -class QT3DQUICKSHARED_EXPORT Quick3DTransform : public Transform +class QT3DQUICKSHARED_EXPORT Quick3DTransform : public QObject { Q_OBJECT Q_PROPERTY(QQmlListProperty<Qt3D::AbstractTransform> transforms READ transformList) Q_CLASSINFO("DefaultProperty", "transforms") public: - explicit Quick3DTransform(Node *parent = 0); + explicit Quick3DTransform(QObject *parent = 0); QQmlListProperty<Qt3D::AbstractTransform> transformList(); + inline Transform *parentTransform() const { return qobject_cast<Qt3D::Transform *>(parent()); } + private: static void qmlAppendTransform(QQmlListProperty<Qt3D::AbstractTransform> *list, Qt3D::AbstractTransform *bar); static AbstractTransform* transformAt(QQmlListProperty<Qt3D::AbstractTransform> *list, int index); |