summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2014-06-02 09:08:10 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-06-02 20:06:48 +0200
commit57b22a56da4b5283208d68838e8836d022a66dd6 (patch)
tree03718e916a8a6d7df3a7ffc2a31e8b338d97487c
parent40626b172ffbdfec0cd564eb89b1eb672c0c4dc5 (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.cpp21
-rw-r--r--src/quick3d/quick3d/items/quick3dtransform.h10
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);