aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports
diff options
context:
space:
mode:
Diffstat (limited to 'src/imports')
-rw-r--r--src/imports/etcprovider/qetcprovider.cpp35
-rw-r--r--src/imports/etcprovider/qetcprovider.h2
2 files changed, 32 insertions, 5 deletions
diff --git a/src/imports/etcprovider/qetcprovider.cpp b/src/imports/etcprovider/qetcprovider.cpp
index 053258a794..5ea7ea9b6b 100644
--- a/src/imports/etcprovider/qetcprovider.cpp
+++ b/src/imports/etcprovider/qetcprovider.cpp
@@ -143,10 +143,37 @@ QSize EtcTexture::textureSize() const
return m_size;
}
-QSGTexture *QEtcProvider::requestTexture(const QString &id, QSize *size, const QSize &requestedSize)
+
+class QEtcTextureFactory : public QDeclarativeTextureFactory
+{
+public:
+ QByteArray m_data;
+ QSize m_size;
+ QSize m_paddedSize;
+
+ QSize textureSize() const {
+ return m_size;
+ }
+
+ int textureByteCount() const {
+ return m_data.size();
+ }
+
+ QSGTexture *createTexture() const {
+ EtcTexture *texture = new EtcTexture;
+ texture->m_data = m_data;
+ texture->m_size = m_size;
+ texture->m_paddedSize = m_paddedSize;
+ return texture;
+ }
+
+};
+
+
+QDeclarativeTextureFactory *QEtcProvider::requestTexture(const QString &id, QSize *size, const QSize &requestedSize)
{
Q_UNUSED(requestedSize);
- EtcTexture *ret = 0;
+ QEtcTextureFactory *ret = 0;
size->setHeight(0);
size->setWidth(0);
@@ -156,7 +183,7 @@ QSGTexture *QEtcProvider::requestTexture(const QString &id, QSize *size, const Q
qDebug() << "requestTexture opening file: " << id;
#endif
if (file.open(QIODevice::ReadOnly)) {
- ret = new EtcTexture();
+ ret = new QEtcTextureFactory;
ret->m_data = file.readAll();
if (!ret->m_data.isEmpty()) {
ETCHeader *pETCHeader = NULL;
@@ -168,7 +195,7 @@ QSGTexture *QEtcProvider::requestTexture(const QString &id, QSize *size, const Q
ret->m_paddedSize.setWidth(getPaddedWidth(pETCHeader));
}
else {
- free (ret);
+ delete ret;
ret = 0;
}
}
diff --git a/src/imports/etcprovider/qetcprovider.h b/src/imports/etcprovider/qetcprovider.h
index 46ec421162..cac37584d4 100644
--- a/src/imports/etcprovider/qetcprovider.h
+++ b/src/imports/etcprovider/qetcprovider.h
@@ -90,7 +90,7 @@ public:
qDebug () << "Creating QEtcProvider.";
#endif
}
- QSGTexture *requestTexture(const QString &id, QSize *size, const QSize &requestedSize);
+ QDeclarativeTextureFactory *requestTexture(const QString &id, QSize *size, const QSize &requestedSize);
};
QT_END_NAMESPACE