summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2015-08-06 15:24:00 +0200
committerPaul Lemire <paul.lemire@kdab.com>2015-08-07 16:50:31 +0000
commit43d49a9d24dfdc08e660ac2b4a1eb7b8ac51f33f (patch)
tree5705dd4cc1c59c99d446fdc5fe353e629312edd3 /src
parentcb6fddc83aaf7b07ed93b253af9aecdf0de46109 (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.cpp21
-rw-r--r--src/render/frontend/qgeometryrenderer.h5
-rw-r--r--src/render/frontend/qgeometryrenderer_p.h2
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