summaryrefslogtreecommitdiffstats
path: root/src/quick3d/quick3drender/items
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2016-11-23 18:40:37 +0100
committerPaul Lemire <paul.lemire@kdab.com>2017-01-13 07:57:28 +0000
commit030906b16f569a58ee5490e7a12c191b60160715 (patch)
tree51af758bc6d999abceb0f6250dd2d415762f3f0c /src/quick3d/quick3drender/items
parent50457f2025f3d38234bd4b27b086e75e4267f68e (diff)
Quick3DBuffer: add helper method to read binary file
Change-Id: Ib96806720171cddc990f4b0df59a8690d56bc605 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/quick3d/quick3drender/items')
-rw-r--r--src/quick3d/quick3drender/items/quick3dbuffer.cpp21
-rw-r--r--src/quick3d/quick3drender/items/quick3dbuffer_p.h2
2 files changed, 23 insertions, 0 deletions
diff --git a/src/quick3d/quick3drender/items/quick3dbuffer.cpp b/src/quick3d/quick3drender/items/quick3dbuffer.cpp
index 5701adf07..d36ce8341 100644
--- a/src/quick3d/quick3drender/items/quick3dbuffer.cpp
+++ b/src/quick3d/quick3drender/items/quick3dbuffer.cpp
@@ -45,6 +45,8 @@
#include <QtQml/private/qjsvalue_p.h>
#include <QtQml/private/qv4typedarray_p.h>
#include <QtQml/private/qv4arraybuffer_p.h>
+#include <Qt3DRender/private/qurlhelper_p.h>
+#include <QtCore/qfile.h>
QT_BEGIN_NAMESPACE
@@ -107,6 +109,25 @@ void Quick3DBuffer::updateData(int offset, const QVariant &bufferData)
}
}
+/*!
+ \qmlmethod string Quick3DBuffer::readBinaryFile(url &fileUrl)
+
+ Reads the binary at \a fileUrl and return it as a QByteArray wrapped in a
+ QVariant
+
+ \note this is provided as convenience for QML where reading files and creating
+ QByteArray is not possible
+ */
+QVariant Quick3DBuffer::readBinaryFile(const QUrl &fileUrl)
+{
+ QFile f(Qt3DRender::QUrlHelper::urlToLocalFileOrQrc(fileUrl));
+ QByteArray data;
+
+ if (f.open(QIODevice::ReadOnly))
+ data = f.readAll();
+ return QVariant(data);
+}
+
void Quick3DBuffer::initEngines()
{
if (m_engine == nullptr) {
diff --git a/src/quick3d/quick3drender/items/quick3dbuffer_p.h b/src/quick3d/quick3drender/items/quick3dbuffer_p.h
index c5cb39cdf..d8dbafcb2 100644
--- a/src/quick3d/quick3drender/items/quick3dbuffer_p.h
+++ b/src/quick3d/quick3drender/items/quick3dbuffer_p.h
@@ -79,6 +79,8 @@ public:
QVariant bufferData() const;
void setBufferData(const QVariant &bufferData);
+ Q_INVOKABLE QVariant readBinaryFile(const QUrl &fileUrl);
+
public Q_SLOTS:
void updateData(int offset, const QVariant &bytes);