diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2015-08-06 15:24:00 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2015-08-07 16:50:31 +0000 |
commit | 43d49a9d24dfdc08e660ac2b4a1eb7b8ac51f33f (patch) | |
tree | 5705dd4cc1c59c99d446fdc5fe353e629312edd3 /src | |
parent | cb6fddc83aaf7b07ed93b253af9aecdf0de46109 (diff) |
QGeometryRenderer: add a QGeometryFunctor member
Change-Id: I43219476a1d0a6d4fd9675a2875e0a091a131f5e
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/render/frontend/qgeometryrenderer.cpp | 21 | ||||
-rw-r--r-- | src/render/frontend/qgeometryrenderer.h | 5 | ||||
-rw-r--r-- | src/render/frontend/qgeometryrenderer_p.h | 2 |
3 files changed, 28 insertions, 0 deletions
diff --git a/src/render/frontend/qgeometryrenderer.cpp b/src/render/frontend/qgeometryrenderer.cpp index eb67f63cf..16ff01fe2 100644 --- a/src/render/frontend/qgeometryrenderer.cpp +++ b/src/render/frontend/qgeometryrenderer.cpp @@ -120,6 +120,12 @@ QGeometryRenderer::PrimitiveType QGeometryRenderer::primitiveType() const return d->m_primitiveType; } +QGeometryFunctorPtr QGeometryRenderer::geometryFunctor() const +{ + Q_D(const QGeometryRenderer); + return d->m_functor; +} + void QGeometryRenderer::setInstanceCount(int instanceCount) { Q_D(QGeometryRenderer); @@ -219,6 +225,20 @@ void QGeometryRenderer::setPrimitiveType(QGeometryRenderer::PrimitiveType primit emit primitiveTypeChanged(); } +void QGeometryRenderer::setGeometryFunctor(const QGeometryFunctorPtr &functor) +{ + Q_D(QGeometryRenderer); + if (functor && d->m_functor && *functor == *d->m_functor) + return; + d->m_functor = functor; + if (d->m_changeArbiter != Q_NULLPTR) { + QScenePropertyChangePtr change(new QScenePropertyChange(NodeUpdated, QSceneChange::Node, id())); + change->setPropertyName("geometryFunctor"); + change->setValue(QVariant::fromValue(d->m_functor)); + d->notifyObservers(change); + } +} + void QGeometryRenderer::copy(const QNode *ref) { QComponent::copy(ref); @@ -231,6 +251,7 @@ void QGeometryRenderer::copy(const QNode *ref) d_func()->m_primitiveRestart = other->d_func()->m_primitiveRestart; d_func()->m_primitiveType = other->d_func()->m_primitiveType; d_func()->m_geometry = static_cast<QGeometry *>(QNode::clone(other->d_func()->m_geometry)); + d_func()->m_functor = other->d_func()->m_functor; } } // Qt3D diff --git a/src/render/frontend/qgeometryrenderer.h b/src/render/frontend/qgeometryrenderer.h index 7ffd442d2..3810c69e2 100644 --- a/src/render/frontend/qgeometryrenderer.h +++ b/src/render/frontend/qgeometryrenderer.h @@ -46,6 +46,9 @@ QT_BEGIN_NAMESPACE namespace Qt3D { class QGeometryRendererPrivate; +class QGeometryFunctor; + +typedef QSharedPointer<QGeometryFunctor> QGeometryFunctorPtr; class QT3DRENDERERSHARED_EXPORT QGeometryRenderer : public QComponent { @@ -90,6 +93,7 @@ public: bool primitiveRestart() const; QGeometry *geometry() const; PrimitiveType primitiveType() const; + QGeometryFunctorPtr geometryFunctor() const; void setInstanceCount(int instanceCount); void setPrimitiveCount(int primitiveCount); @@ -99,6 +103,7 @@ public: void setPrimitiveRestart(bool enabled); void setGeometry(QGeometry *geometry); void setPrimitiveType(PrimitiveType primitiveType); + void setGeometryFunctor(const QGeometryFunctorPtr &functor); Q_SIGNALS: void instanceCountChanged(); diff --git a/src/render/frontend/qgeometryrenderer_p.h b/src/render/frontend/qgeometryrenderer_p.h index 13df2cd9f..ef6dc5c64 100644 --- a/src/render/frontend/qgeometryrenderer_p.h +++ b/src/render/frontend/qgeometryrenderer_p.h @@ -39,6 +39,7 @@ #include <Qt3DCore/private/qcomponent_p.h> #include <Qt3DRenderer/qgeometryrenderer.h> +#include <Qt3DRenderer/qgeometryfunctor.h> QT_BEGIN_NAMESPACE @@ -58,6 +59,7 @@ public: bool m_primitiveRestart; QGeometry *m_geometry; QGeometryRenderer::PrimitiveType m_primitiveType; + QGeometryFunctorPtr m_functor; }; } // Qt3D |