summaryrefslogtreecommitdiffstats
path: root/src/render/io
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2015-08-04 16:46:35 +0200
committerPaul Lemire <paul.lemire@kdab.com>2015-08-07 11:31:13 +0000
commit4bbe0ad81a06fb42f3aab592e5645e546bfb90db (patch)
tree7fdc045a24e7ea25b607713572e42a0f724336bd /src/render/io
parent6daa49156d2d7875a2cfd99a0722055adf1e7484 (diff)
QBuffer/RenderBuffer: add a functor property
Change-Id: Ic896425284c69a4cd71365b592444ce7edbc2dc2 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/io')
-rw-r--r--src/render/io/qbuffer.cpp22
-rw-r--r--src/render/io/qbuffer.h5
-rw-r--r--src/render/io/qbuffer_p.h2
3 files changed, 29 insertions, 0 deletions
diff --git a/src/render/io/qbuffer.cpp b/src/render/io/qbuffer.cpp
index ddaa701e6..7f28151ec 100644
--- a/src/render/io/qbuffer.cpp
+++ b/src/render/io/qbuffer.cpp
@@ -37,6 +37,7 @@
#include "qbuffer.h"
#include "qbuffer_p.h"
#include <Qt3DRenderer/private/renderlogging_p.h>
+#include <Qt3DCore/qscenepropertychange.h>
QT_BEGIN_NAMESPACE
@@ -79,6 +80,7 @@ void QBuffer::copy(const QNode *ref)
const QBuffer *buffer = static_cast<const QBuffer *>(ref);
d_func()->m_type = buffer->d_func()->m_type;
d_func()->m_usage = buffer->d_func()->m_usage;
+ d_func()->m_functor = buffer->d_func()->m_functor;
}
QBuffer::UsageType QBuffer::usage() const
@@ -102,6 +104,26 @@ QBuffer::BufferType QBuffer::type() const
return d->m_type;
}
+void QBuffer::setBufferFunctor(const QBufferFunctorPtr &functor)
+{
+ Q_D(QBuffer);
+ 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("bufferFunctor");
+ change->setValue(QVariant::fromValue(d->m_functor));
+ d->notifyObservers(change);
+ }
+}
+
+QBufferFunctorPtr QBuffer::bufferFunctor() const
+{
+ Q_D(const QBuffer);
+ return d->m_functor;
+}
+
void QBuffer::setType(QBuffer::BufferType type)
{
Q_D(QBuffer);
diff --git a/src/render/io/qbuffer.h b/src/render/io/qbuffer.h
index 5e99a1a80..aad1ebcaa 100644
--- a/src/render/io/qbuffer.h
+++ b/src/render/io/qbuffer.h
@@ -51,6 +51,8 @@ GLint tupleSizeFromType(GLint type);
GLuint byteSizeFromType(GLint type);
class QBufferPrivate;
+class QBufferFunctor;
+typedef QSharedPointer<QBufferFunctor> QBufferFunctorPtr;
class QT3DRENDERERSHARED_EXPORT QBuffer : public QAbstractBuffer
{
@@ -91,6 +93,9 @@ public:
void setType(BufferType type);
BufferType type() const;
+ void setBufferFunctor(const QBufferFunctorPtr &functor);
+ QBufferFunctorPtr bufferFunctor() const;
+
protected:
QBuffer(QBufferPrivate &dd, QBuffer::BufferType ty, QNode *parent = 0);
void copy(const QNode *ref) Q_DECL_OVERRIDE;
diff --git a/src/render/io/qbuffer_p.h b/src/render/io/qbuffer_p.h
index 036a9e26d..bab9e95f9 100644
--- a/src/render/io/qbuffer_p.h
+++ b/src/render/io/qbuffer_p.h
@@ -39,6 +39,7 @@
#include <private/qabstractbuffer_p.h>
#include <Qt3DRenderer/qbuffer.h>
+#include <Qt3DRenderer/qbufferfunctor.h>
#include <Qt3DRenderer/qt3drenderer_global.h>
#include <QOpenGLBuffer>
@@ -53,6 +54,7 @@ public:
QBuffer::BufferType m_type;
QBuffer::UsageType m_usage;
+ QBufferFunctorPtr m_functor;
};
} // Qt3D