aboutsummaryrefslogtreecommitdiffstats
path: root/examples/quick/textureprovider/etcprovider.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/quick/textureprovider/etcprovider.cpp')
-rw-r--r--examples/quick/textureprovider/etcprovider.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/examples/quick/textureprovider/etcprovider.cpp b/examples/quick/textureprovider/etcprovider.cpp
index 507965ca9a..52c2c17cfe 100644
--- a/examples/quick/textureprovider/etcprovider.cpp
+++ b/examples/quick/textureprovider/etcprovider.cpp
@@ -44,6 +44,7 @@
#include <QFile>
#include <QDebug>
#include <qopenglfunctions.h>
+#include <qqmlfile.h>
//#define ETC_DEBUG
@@ -168,10 +169,14 @@ QQuickTextureFactory *EtcProvider::requestTexture(const QString &id, QSize *size
size->setHeight(0);
size->setWidth(0);
- // resolve paths relative to qrc file
- QFile file(QLatin1String(":/textureprovider/") + id);
+ QUrl url = QUrl(id);
+ if (url.isRelative() && !m_baseUrl.isEmpty())
+ url = m_baseUrl.resolved(url);
+ QString path = QQmlFile::urlToLocalFileOrQrc(url);
+
+ QFile file(path);
#ifdef ETC_DEBUG
- qDebug() << "requestTexture opening file: " << id;
+ qDebug() << "requestTexture opening file: " << path;
#endif
if (file.open(QIODevice::ReadOnly)) {
ret = new QEtcTextureFactory;
@@ -200,3 +205,8 @@ QQuickTextureFactory *EtcProvider::requestTexture(const QString &id, QSize *size
return ret;
}
+
+void EtcProvider::setBaseUrl(const QUrl &base)
+{
+ m_baseUrl = base;
+}