summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2015-01-28 12:08:34 +0100
committerSean Harmer <sean.harmer@kdab.com>2015-02-08 11:16:09 +0000
commitf06599b246850e4854ee3c83f97b9309e1c0850f (patch)
tree1fb94d42974de3504714313d899935773d34c4a8
parente20c7d31871a7f2ed5e5e6074cafe5595c39b7af (diff)
Add list of QAbstractTextureImages to QAbstractTextureProvider
Change-Id: I3280112df9614b7142d4e15b3871518896806577 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
-rw-r--r--src/render/frontend/qabstracttextureprovider.cpp50
-rw-r--r--src/render/frontend/qabstracttextureprovider.h15
-rw-r--r--src/render/frontend/qabstracttextureprovider_p.h1
3 files changed, 58 insertions, 8 deletions
diff --git a/src/render/frontend/qabstracttextureprovider.cpp b/src/render/frontend/qabstracttextureprovider.cpp
index c66a144d6..c1616ad19 100644
--- a/src/render/frontend/qabstracttextureprovider.cpp
+++ b/src/render/frontend/qabstracttextureprovider.cpp
@@ -42,6 +42,7 @@
#include "qabstracttextureprovider.h"
#include "qabstracttextureprovider_p.h"
#include <Qt3DCore/qscenepropertychange.h>
+#include <Qt3DRenderer/qabstracttextureimage.h>
QT_BEGIN_NAMESPACE
@@ -299,6 +300,55 @@ QList<TexImageDataPtr> QAbstractTextureProvider::imageData() const
}
/*!
+ Adds a new Qt3D::QAbstractTextureImage \a texture image to the texture provider.
+ */
+void QAbstractTextureProvider::addTextureImage(QAbstractTextureImage *textureImage)
+{
+ Q_D(QAbstractTextureProvider);
+ if (!d->m_textureImages.contains(textureImage)) {
+ d->m_textureImages.append(textureImage);
+
+ // We need to add it as a child of the current node if it has been declared inline
+ // Or not previously added as a child of the current node so that
+ // 1) The backend gets notified about it's creation
+ // 2) When the current node is destroyed, it gets destroyed as well
+ if (!textureImage->parent())
+ textureImage->setParent(this);
+
+ if (d->m_changeArbiter != Q_NULLPTR) {
+ QScenePropertyChangePtr change(new QScenePropertyChange(NodeAdded, this));
+ change->setPropertyName(QByteArrayLiteral("textureImage"));
+ change->setValue(QVariant::fromValue(textureImage->id()));
+ d->notifyObservers(change);
+ }
+ }
+}
+
+/*!
+ Removes a Qt3D::QAbstractTextureImage \a texture image form the texture provider.
+ */
+void QAbstractTextureProvider::removeTextureImage(QAbstractTextureImage *textureImage)
+{
+ Q_D(QAbstractTextureProvider);
+ if (d->m_changeArbiter != Q_NULLPTR) {
+ QScenePropertyChangePtr change(new QScenePropertyChange(NodeRemoved, this));
+ change->setPropertyName(QByteArrayLiteral("textureImage"));
+ change->setValue(QVariant::fromValue(textureImage->id()));
+ d->notifyObservers(change);
+ }
+ d->m_textureImages.removeOne(textureImage);
+}
+
+/*!
+\return the list of QAbstractTextureImage * contained in the texture provider.
+ */
+QList<QAbstractTextureImage *> QAbstractTextureProvider::textureImages() const
+{
+ Q_D(const QAbstractTextureProvider);
+ return d->m_textureImages;
+}
+
+/*!
Sets whether the texture provider should auto generate mipmaps.
*/
void QAbstractTextureProvider::setGenerateMipMaps(bool gen)
diff --git a/src/render/frontend/qabstracttextureprovider.h b/src/render/frontend/qabstracttextureprovider.h
index dbe9dee62..5d2bb4a92 100644
--- a/src/render/frontend/qabstracttextureprovider.h
+++ b/src/render/frontend/qabstracttextureprovider.h
@@ -52,6 +52,7 @@ namespace Qt3D {
class QAbstractTextureProviderPrivate;
class QTextureWrapMode;
+class QAbstractTextureImage;
class QT3DRENDERERSHARED_EXPORT QAbstractTextureProvider : public QNode
{
@@ -266,18 +267,16 @@ public:
Status status() const;
- /**
- * @brief setFromQImage - set size and image data based upon a QImage
- * Can optionally generate mip-map levels automatically too. Target
- * must be Texture2D, Texture2DArray or TextureRectangle.
- * @param img - valid QImage. If Texture2D is set, should be power-of-2
- * dimensions.
- */
+ // Those 3 methods should be removed
+ // kept to keep things working a little longer;
bool setFromQImage(QImage img, int layer = 0);
-
void addImageData(TexImageDataPtr imgData);
QList<TexImageDataPtr> imageData() const;
+ void addTextureImage(QAbstractTextureImage *textureImage);
+ void removeTextureImage(QAbstractTextureImage *textureImage);
+ QList<QAbstractTextureImage *> textureImages() const;
+
void setGenerateMipMaps(bool gen);
bool generateMipMaps() const;
diff --git a/src/render/frontend/qabstracttextureprovider_p.h b/src/render/frontend/qabstracttextureprovider_p.h
index b9b7f51dd..e40e1c106 100644
--- a/src/render/frontend/qabstracttextureprovider_p.h
+++ b/src/render/frontend/qabstracttextureprovider_p.h
@@ -72,6 +72,7 @@ public :
float m_maximumAnisotropy;
QAbstractTextureProvider::ComparisonFunction m_comparisonFunction;
QAbstractTextureProvider::ComparisonMode m_comparisonMode;
+ QList<QAbstractTextureImage *> m_textureImages;
};
} // QT3D