summaryrefslogtreecommitdiffstats
path: root/src/plugins/sceneparsers/assimp/assimphelpers.h
diff options
context:
space:
mode:
authorAndy Nichols <andy.nichols@theqtcompany.com>2015-11-03 18:21:58 +0100
committerAndy Nichols <andy.nichols@theqtcompany.com>2015-11-04 16:03:09 +0000
commit03d2259029cafe89c87d49c142131bd16d837c69 (patch)
treebdd7a21bbab058bb496a56a5528d5a6cc4abc56a /src/plugins/sceneparsers/assimp/assimphelpers.h
parent6806287f41efdaacb1efb006c3cec0a760f64b68 (diff)
Create proper plugin infrastructure for sceneloaders
Now Qt3D sceneloaders plugins follow the same pattern as the rest of Qt. This also makes the loading much more standard and less error prone. Change-Id: Ibb5aae0a16d9d197a9c34fe2885dd5435e68d7eb Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/plugins/sceneparsers/assimp/assimphelpers.h')
-rw-r--r--src/plugins/sceneparsers/assimp/assimphelpers.h101
1 files changed, 101 insertions, 0 deletions
diff --git a/src/plugins/sceneparsers/assimp/assimphelpers.h b/src/plugins/sceneparsers/assimp/assimphelpers.h
new file mode 100644
index 000000000..8f7855730
--- /dev/null
+++ b/src/plugins/sceneparsers/assimp/assimphelpers.h
@@ -0,0 +1,101 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Klaralvdalens Datakonsult AB (KDAB).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL3$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPLv3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or later as published by the Free
+** Software Foundation and appearing in the file LICENSE.GPL included in
+** the packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 2.0 requirements will be
+** met: http://www.gnu.org/licenses/gpl-2.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef ASSIMPHELPERS_H
+#define ASSIMPHELPERS_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+// ASSIMP INCLUDES
+#include <assimp/IOStream.hpp>
+#include <assimp/IOSystem.hpp>
+
+#include <QIODevice>
+#include <QMap>
+
+QT_BEGIN_NAMESPACE
+
+namespace Qt3DRender {
+namespace AssimpHelper {
+
+//CUSTOM FILE STREAM
+class AssimpIOStream : public Assimp::IOStream
+{
+public :
+ AssimpIOStream(QIODevice *device);
+ ~AssimpIOStream();
+
+ size_t Read(void *pvBuffer, size_t pSize, size_t pCount) Q_DECL_OVERRIDE;
+ size_t Write(const void *pvBuffer, size_t pSize, size_t pCount) Q_DECL_OVERRIDE;
+ aiReturn Seek(size_t pOffset, aiOrigin pOrigin) Q_DECL_OVERRIDE;
+ size_t Tell() const Q_DECL_OVERRIDE;
+ size_t FileSize() const Q_DECL_OVERRIDE;
+ void Flush() Q_DECL_OVERRIDE;
+
+private:
+ QIODevice *const m_device;
+};
+
+//CUSTOM FILE IMPORTER TO HANDLE QT RESOURCES WITHIN ASSIMP
+class AssimpIOSystem : public Assimp::IOSystem
+{
+public :
+ AssimpIOSystem();
+ ~AssimpIOSystem();
+ bool Exists(const char *pFile) const Q_DECL_OVERRIDE;
+ char getOsSeparator() const Q_DECL_OVERRIDE;
+ Assimp::IOStream *Open(const char *pFile, const char *pMode) Q_DECL_OVERRIDE;
+ void Close(Assimp::IOStream *pFile) Q_DECL_OVERRIDE;
+
+private:
+ QMap<QByteArray, QIODevice::OpenMode> m_openModeMaps;
+};
+
+} // namespace AssimpHelper
+} // namespace Qt3DRender
+
+QT_END_NAMESPACE
+
+#endif // ASSIMPHELPERS_H