summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJuan José Casafranca <juan.casafranca@kdab.com>2020-09-30 13:34:23 +0200
committerPaul Lemire <paul.lemire@kdab.com>2020-10-27 08:54:20 +0100
commit9ed9a165f8470cfe88fdbc658b8d12b38f111f1e (patch)
treedc151790c31bef8c19aca9f4e67ef92a933b5af7 /src
parent2e089e74e5cb2337f801359157c842f24aa73f3d (diff)
Pass the raw data to the texture data extractor
Change-Id: If6ca151b22f442985df1ff34108ca0bd216ebf47 Reviewed-by: Paul Lemire <paul.lemire@kdab.com> (cherry picked from commit 6fdf835639e56c68ae01da894c7d2b9f552dd87d)
Diffstat (limited to 'src')
-rw-r--r--src/render/texture/qtextureimagedata.cpp6
-rw-r--r--src/render/texture/qtextureimagedata.h2
-rw-r--r--src/render/texture/qtextureimagedata_p.h5
3 files changed, 7 insertions, 6 deletions
diff --git a/src/render/texture/qtextureimagedata.cpp b/src/render/texture/qtextureimagedata.cpp
index bdfe5deee..da4bc6800 100644
--- a/src/render/texture/qtextureimagedata.cpp
+++ b/src/render/texture/qtextureimagedata.cpp
@@ -89,7 +89,7 @@ QByteArray QTextureImageDataPrivate::data(int layer, int face, int mipmapLevel)
}
if (m_dataExtractor)
- return m_dataExtractor(layer, face, mipmapLevel);
+ return m_dataExtractor(m_data, layer, face, mipmapLevel);
if (m_isKtx)
return ktxData(layer, face, mipmapLevel);
@@ -117,7 +117,7 @@ void QTextureImageDataPrivate::setData(const QByteArray &data,
}
void QTextureImageDataPrivate::setData(const QByteArray &data,
- std::function<QByteArray(int layer, int face, int mipmapLevel)> dataExtractor,
+ std::function<QByteArray(QByteArray rawData, int layer, int face, int mipmapLevel)> dataExtractor,
bool isCompressed)
{
m_isCompressed = isCompressed;
@@ -439,7 +439,7 @@ void QTextureImageData::setData(const QByteArray &data, int blockSize, bool isCo
d->setData(data, blockSize, isCompressed);
}
-void QTextureImageData::setData(const QByteArray &data, std::function<QByteArray(int layer, int face, int mipmapLevel)> dataExtractor, bool isCompressed)
+void QTextureImageData::setData(const QByteArray &data, std::function<QByteArray(QByteArray data, int layer, int face, int mipmapLevel)> dataExtractor, bool isCompressed)
{
Q_D(QTextureImageData);
d->setData(data, dataExtractor, isCompressed);
diff --git a/src/render/texture/qtextureimagedata.h b/src/render/texture/qtextureimagedata.h
index f546cec8c..01844b943 100644
--- a/src/render/texture/qtextureimagedata.h
+++ b/src/render/texture/qtextureimagedata.h
@@ -100,7 +100,7 @@ public:
bool isCompressed = false);
void setData(const QByteArray &data,
- std::function<QByteArray(int layer, int face, int mipmapLevel)>,
+ std::function<QByteArray(QByteArray rawData, int layer, int face, int mipmapLevel)>,
bool isCompressed = false);
QByteArray data(int layer = 0, int face = 0, int mipmapLevel = 0) const;
diff --git a/src/render/texture/qtextureimagedata_p.h b/src/render/texture/qtextureimagedata_p.h
index 30968e199..53ff2ca30 100644
--- a/src/render/texture/qtextureimagedata_p.h
+++ b/src/render/texture/qtextureimagedata_p.h
@@ -53,6 +53,7 @@
#include "qtextureimagedata.h"
#include <Qt3DRender/private/qt3drender_global_p.h>
+#include <functional>
QT_BEGIN_NAMESPACE
@@ -65,7 +66,7 @@ public:
void setData(const QByteArray &data, int blockSize, bool isCompressed);
void setData(const QByteArray &data,
- std::function<QByteArray(int layer, int face, int mipmapLevel)> dataExtractor,
+ std::function<QByteArray(QByteArray, int, int, int)> dataExtractor,
bool isCompressed);
bool setCompressedFile(const QString &source);
@@ -93,7 +94,7 @@ public:
// public API changes. Consider https://codereview.qt-project.org/#/c/178474/ for Qt 6.
bool m_isKtx;
QByteArray m_data;
- std::function<QByteArray(int layer, int face, int mipmapLevel)> m_dataExtractor;
+ std::function<QByteArray(QByteArray rawData, int layer, int face, int mipmapLevel)> m_dataExtractor;
static QTextureImageDataPrivate *get(QTextureImageData *imageData);