From 4e967f9f84dab2e68f943ee5e26430bd6cb76e81 Mon Sep 17 00:00:00 2001 From: Juan Casafranca Date: Fri, 25 Sep 2020 13:02:24 +0200 Subject: Allow to specify a functor to extract data from QTextureImageData Change-Id: Idd052f6c24665a1accd2cd681c80fe74846e5c39 Reviewed-by: Paul Lemire --- src/render/texture/qtextureimagedata.cpp | 12 ++++++++++++ src/render/texture/qtextureimagedata_p.h | 4 ++++ 2 files changed, 16 insertions(+) (limited to 'src/render') diff --git a/src/render/texture/qtextureimagedata.cpp b/src/render/texture/qtextureimagedata.cpp index 50a52d90f..4841cebdf 100644 --- a/src/render/texture/qtextureimagedata.cpp +++ b/src/render/texture/qtextureimagedata.cpp @@ -88,6 +88,9 @@ QByteArray QTextureImageDataPrivate::data(int layer, int face, int mipmapLevel) return QByteArray(); } + if (m_dataExtractor) + return m_dataExtractor(layer, face, mipmapLevel); + if (m_isKtx) return ktxData(layer, face, mipmapLevel); @@ -113,6 +116,15 @@ void QTextureImageDataPrivate::setData(const QByteArray &data, m_blockSize = blockSize; } +void QTextureImageDataPrivate::setData(const QByteArray &data, + std::function dataExtractor, + bool isCompressed) +{ + m_isCompressed = isCompressed; + m_data = data; + m_dataExtractor = dataExtractor; +} + int QTextureImageDataPrivate::ddsLayerSize() const { return m_faces * ddsFaceSize(); diff --git a/src/render/texture/qtextureimagedata_p.h b/src/render/texture/qtextureimagedata_p.h index ee12d3387..30968e199 100644 --- a/src/render/texture/qtextureimagedata_p.h +++ b/src/render/texture/qtextureimagedata_p.h @@ -64,6 +64,9 @@ public: QTextureImageDataPrivate(); void setData(const QByteArray &data, int blockSize, bool isCompressed); + void setData(const QByteArray &data, + std::function dataExtractor, + bool isCompressed); bool setCompressedFile(const QString &source); @@ -90,6 +93,7 @@ public: // public API changes. Consider https://codereview.qt-project.org/#/c/178474/ for Qt 6. bool m_isKtx; QByteArray m_data; + std::function m_dataExtractor; static QTextureImageDataPrivate *get(QTextureImageData *imageData); -- cgit v1.2.3