summaryrefslogtreecommitdiffstats
path: root/src/Runtime/ogl-runtime/src/viewer/Qt3DSViewerApp.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Runtime/ogl-runtime/src/viewer/Qt3DSViewerApp.h')
m---------src/Runtime/ogl-runtime0
-rw-r--r--src/Runtime/ogl-runtime/src/viewer/Qt3DSViewerApp.h525
2 files changed, 0 insertions, 525 deletions
diff --git a/src/Runtime/ogl-runtime b/src/Runtime/ogl-runtime
new file mode 160000
+Subproject 2025912174c4cf99270b7439ec3b021e1d089ae
diff --git a/src/Runtime/ogl-runtime/src/viewer/Qt3DSViewerApp.h b/src/Runtime/ogl-runtime/src/viewer/Qt3DSViewerApp.h
deleted file mode 100644
index 06fdeef0..00000000
--- a/src/Runtime/ogl-runtime/src/viewer/Qt3DSViewerApp.h
+++ /dev/null
@@ -1,525 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 - 2016 NVIDIA Corporation.
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt 3D Studio.
-**
-** $QT_BEGIN_LICENSE:GPL$
-** 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 https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 or (at your option) any later version
-** approved by the KDE Free Qt Foundation. The licenses are as published by
-** the Free Software Foundation and appearing in the file LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef QT3DS_VIEWER_H
-#define QT3DS_VIEWER_H
-
-#include "qt3dsruntimeglobal.h"
-#include "Qt3DSApplication.h"
-#include "Qt3DSInputDefs.h"
-
-#include <string>
-#include <vector>
-#include <QObject>
-#include <QtCore/qelapsedtimer.h>
-#include <QtCore/qvector.h>
-#include <QtCore/qstringlist.h>
-#include <QtGui/qsurfaceformat.h>
-
-namespace Q3DStudio {
-class IRuntimeView;
-class IWindowSystem;
-class IAudioPlayer;
-}
-
-namespace qt3ds {
-class Qt3DSAssetVisitor
-{
-public:
- virtual void visit(const char *path) = 0;
- virtual void visit(const char *type, const char *id, const char *src, const char *args) = 0;
-};
-}
-
-namespace Q3DSViewer {
-
-typedef void (*qml_Function)(void *inUserData);
-
-// not must match the NDDRuntime see
-// UICQmlEngine.h
-struct ViewerCallbackType
-{
- enum Enum {
- CALLBACK_ON_INIT = 1,
- CALLBACK_ON_UPDATE = 2,
- };
-};
-
-struct ViewerContextType
-{
- enum Enum { GL_ES2 = 0, GL_ES3, GL_ES31, GL_ES32, GL_2, GL_3_3, GL_4 };
-};
-
-struct ViewerScaleModes
-{
- enum Enum {
- ExactSize = 0, // Ensure the viewport is exactly same size as application
- ScaleToFit = 1, // Resize viewport keeping aspect ratio
- ScaleToFill = 2, // Resize viewport to entire window
- };
-};
-
-struct ViewerShadeModes
-{
- enum Enum {
- Shaded = 0, // Geometry is shaded only
- ShadedWireframe = 1, // Wireframe is drawn on top shaded geometry
- Wireframe = 2, // Wireframe only
- };
-};
-
-// Intermediate struct to transfer mesh data between studio3d module and runtime
-struct MeshData
-{
- // All enums must match the ones defined by Q3DSGeometry class in studio3d module
- enum PrimitiveType { // Must match also internal NVRenderDrawMode
- UnknownType = 0,
- Points,
- LineStrip,
- LineLoop,
- Lines,
- TriangleStrip,
- TriangleFan,
- Triangles, // Default primitive type
- Patches
- };
-
- struct Attribute {
- enum Semantic {
- UnknownSemantic = 0,
- IndexSemantic,
- PositionSemantic, // attr_pos
- NormalSemantic, // attr_norm
- TexCoordSemantic, // attr_uv0
- TangentSemantic, // attr_textan
- BinormalSemantic // attr_binormal
- };
- enum ComponentType { // Must match also internal NVRenderComponentTypes
- DefaultType = 0,
- U8Type,
- I8Type,
- U16Type,
- I16Type,
- U32Type, // Default for IndexSemantic
- I32Type,
- U64Type,
- I64Type,
- F16Type,
- F32Type, // Default for other semantics
- F64Type
- };
-
- int typeSize() const
- {
- switch (componentType) {
- case U8Type: return 1;
- case I8Type: return 1;
- case U16Type: return 2;
- case I16Type: return 2;
- case U32Type: return 4;
- case I32Type: return 4;
- case U64Type: return 8;
- case I64Type: return 8;
- case F16Type: return 2;
- case F32Type: return 4;
- case F64Type: return 8;
- default:
- Q_ASSERT(false);
- return 0;
- }
- }
-
- int componentCount() const
- {
- switch (semantic) {
- case IndexSemantic: return 1;
- case PositionSemantic: return 3;
- case NormalSemantic: return 3;
- case TexCoordSemantic: return 2;
- case TangentSemantic: return 3;
- case BinormalSemantic: return 3;
- default:
- Q_ASSERT(false);
- return 0;
- }
- }
-
- Semantic semantic = PositionSemantic;
- ComponentType componentType = F32Type;
- int offset = 0;
- };
-
- static const int MAX_ATTRIBUTES = 6;
-
- void clear()
- {
- m_vertexBuffer.clear();
- m_indexBuffer.clear();
- m_attributeCount = 0;
- m_primitiveType = Triangles;
- }
-
- QByteArray m_vertexBuffer;
- QByteArray m_indexBuffer;
-
- Attribute m_attributes[MAX_ATTRIBUTES];
- int m_attributeCount = 0;
- PrimitiveType m_primitiveType = Triangles;
- int m_stride = 0;
-};
-
-class Q3DSViewerAppImpl;
-class QT3DS_RUNTIME_API Q3DSViewerApp : public QObject
-{
- Q_OBJECT
-private:
- Q3DSViewerApp(void *glContext, Q3DStudio::IAudioPlayer *inAudioPlayer,
- QElapsedTimer *startupTimer);
- ~Q3DSViewerApp();
-
-public:
- /**
- * @brief Initialize viewer app
- *
- * @param[in] winWidth window width
- * @param[in] winHeight window height
- * @param[in] format OpenGL API version
- * @param[in] offscreenID ID of an OpenGL FBO we should render to by default
- * @param[in] source string to presentation source
- *
- * @return true on success
- */
- bool InitializeApp(int winWidth, int winHeight, const QSurfaceFormat& format,
- int offscreenID, const QString &source,
- const QStringList &variantList,
- bool delayedLoading,
- qt3ds::Qt3DSAssetVisitor *assetVisitor = nullptr);
-
- bool IsInitialised(void);
- void setOffscreenId(int offscreenID);
-
-
- /*
- * @brief handle window resize
- *
- * @param[in] width new width
- * @param[in] height new size
- *
- * @return no return
- */
- void Resize(int width, int height);
-
- /*
- * @brief does the actual scene rendering
- *
- * @return no return
- */
- void Render();
-
- /*
- * @brief handle keyboard input
- *
- * @param[in] keyEvent event
- * @param[in] isPressed true if key pressed
- *
- * @return no return
- */
- void HandleKeyInput(Q3DStudio::EKeyCode inKeyCode, bool isPressed);
-
- /*
- * @brief handle mouse move input
- *
- * @param[in] x mouse pos x
- * @param[in] y mouse pos y
- * @param[in] mouseButton mouse button id
- * @param[in] isPressed true if key pressed
- *
- * @return no return
- */
- void HandleMouseMove(int x, int y, bool isPressed);
-
- /*
- * @brief handle mouse press events
- *
- * @param[in] x mouse pos x
- * @param[in] y mouse pos y
- * @param[in] mouseButton mouse button id
- * @param[in] isPressed true if key pressed
- *
- * @return no return
- */
- void HandleMousePress(int x, int y, int mouseButton, bool isPressed);
-
- /*
- * @brief handle mouse wheel events
- *
- * @param[in] x mouse pos x
- * @param[in] y mouse pos y
- * @param[in] orientation 0 vertical, 1 horizontal
- * @param[in] numSteps how much the wheel has turned
- *
- * @return no return
- */
- void HandleMouseWheel(int x, int y, int orientation, int numSteps);
-
- /*
- * @brief Scale scene to adjsut to window size regarding width and height
- *
- * @param[in] inScale true if scale false if unscale
- *
- * @return no return
- */
- void SetScaleMode(ViewerScaleModes::Enum inScaleMode);
-
- ViewerScaleModes::Enum GetScaleMode();
-
- void setMatteColor(const QColor &color);
- void setShowOnScreenStats(bool s);
-
- /*
- * @brief Set the shading mode
- *
- * @param[in] inShadeMode the selected shade mode
- *
- * @return no return
- */
- void SetShadeMode(ViewerShadeModes::Enum inShadeMode);
-
- /*
- * @brief Save current render state
- *
- * @return no return
- */
- void SaveState();
- /*
- * @brief Restore current render state
- *
- * @return no return
- */
- void RestoreState();
-
- /// event call back slots
-
- /*
- * @brief Go to a slide by name
- *
- * @param[in] elementPath where to find the element
- * @param[in] slideName slide name
- *
- * @return no return
- */
- void GoToSlideByName(const char *elementPath, const char *slideName);
-
- /*
- * @brief Go to a slide by index
- *
- * @param[in] elementPath where to find the element
- * @param[in] slideIndex slide index
- *
- * @return no return
- */
- void GoToSlideByIndex(const char *elementPath, const int slideIndex);
-
- /*
- * @brief Go to relative slide
- *
- * @param[in] elementPath where to find the element
- * @param[in] next next or previous
- * @param[in] wrap wrap to beginning if end is reached
- *
- * @return no return
- */
- void GoToSlideRelative(const char *elementPath, const bool next, const bool wrap);
-
- bool GetSlideInfo(const char *elementPath, int &currentIndex, int &previousIndex,
- QString &currentName, QString &previousName);
-
- /*
- * @brief Set presentation active or inactive
- *
- * @param[in] presId presentation id (name without .uip)
- * @param[in] active set active or inactive
- *
- * @return no return
- */
- void SetPresentationActive(const char *presId, const bool active);
-
- /*
- * @brief Go to a certain time
- *
- * @param[in] elementPath where to find the element
- * @param[in] time time to move
- *
- * @return no return
- */
- void GoToTime(const char *elementPath, const float time);
-
- /*
- * @brief Play a sound
- *
- * @param[in] soundPath sound file to play
- *
- * @return no return
- */
- void PlaySoundFile(const char *soundPath);
-
- /*
- * @brief Set attribute values
- *
- * @param[in] elementPath where to find the element
- * @param[in] attributeName attribute name
- * @param[in] value new value of the attribute
- *
- * @return no return
- */
- void SetAttribute(const char *elementPath, const char *attributeName, const char *value);
-
- /*
- * @brief Get attribute values
- *
- * @param[in] elementPath where to find the element
- * @param[in] attributeName attribute name
- * @param[out] value current attribute values
- *
- * @return true if successful
- */
- bool GetAttribute(const char *elementPath, const char *attributeName, void *value);
-
- /*
- * @brief Fire an event
- *
- * @param[in] elementPath where to find the element to fire the event on
- * @param[in] evtName the string that identifies and defines the event
- *
- * @return no return
- */
- void FireEvent(const char *elementPath, const char *evtName);
-
- /*
- * @brief Peek a custom action from the queue
- * Note the action is remvoved from the queue
- *
- * @param[out] outElementPath element path
- * @param[out] actionName action name
- *
- * @return true if action available
- */
- bool PeekCustomAction(std::string &outElementPath, std::string &actionName);
-
- /**
- * @brief Register a callback
- *
- * @param[in] callbackType callback type
- * @param[in] inCallback pointer to callback
- * @param[in] inCallback pointer to user data
- *
- * @return true on success
- */
- bool RegisterScriptCallback(ViewerCallbackType::Enum callbackType,
- const qml_Function inCallback, void *inUserData);
-
- bool WasLastFrameDirty();
-
- int GetWindowHeight();
- int GetWindowWidth();
-
- void SetGlobalAnimationTime(qint64 inMilliSecs);
-
- void SetDataInputValue(const QString &name, const QVariant &value,
- qt3ds::runtime::DataInputValueRole valueRole
- = qt3ds::runtime::DataInputValueRole::Value);
-
- QList<QString> dataInputs() const;
- QList<QString> dataOutputs() const;
-
- float dataInputMax(const QString &name) const;
- float dataInputMin(const QString &name) const;
- QHash<QString, QString> dataInputMetadata(const QString &name) const;
-
- void createElements(const QString &parentElementPath, const QString &slideName,
- const QVector<QHash<QString, QVariant>> &properties);
- void deleteElements(const QStringList &elementPaths);
- void createMaterials(const QString &subPresId, const QStringList &materialDefinitions);
- void deleteMaterials(const QStringList &materialNames);
- void createMeshes(const QHash<QString, Q3DSViewer::MeshData> &meshData);
- void deleteMeshes(const QStringList &meshNames);
-
- QString error();
-
- void setPresentationId(const QString &id);
- void preloadSlide(const QString &slide);
- void unloadSlide(const QString &slide);
- void setDelayedLoading(bool enable);
-
-private:
- /*
- * @brief parse command line arguments this fills in our
- * global command line variables
- *
- * @param[in] cmdLineArgs string to command line parameter
- *
- * @return no return
- */
- void handleCmdLineArguments(std::vector<std::string> &cmdLineArgs);
- /*
- * @brief setup search path.
- * This functions setup additonal search path for resoruces
- *
- * @param[in] cmdLineArgs string to command line parameter
- *
- * @return no return
- */
- void setupSearchPath(std::vector<std::string> &cmdLineArgs);
-
-private:
- Q3DSViewerAppImpl &m_Impl;
- QElapsedTimer *m_startupTimer;
- bool m_presentationReady = false;
-
-public:
- static Q3DSViewerApp &Create(void *glContext, Q3DStudio::IAudioPlayer *inAudioPlayer = nullptr,
- QElapsedTimer *startupTimer = nullptr);
- void Release();
-
-Q_SIGNALS:
- void SigSlideEntered(const QString &elementPath, unsigned int index, const QString &name);
- void SigSlideExited(const QString &elementPath, unsigned int index, const QString &name);
- void SigCustomSignal(const QString &elementPath, const QString &name);
- void SigElementsCreated(const QStringList &elementPaths, const QString &error);
- void SigMaterialsCreated(const QStringList &materialNames, const QString &error);
- void SigMeshesCreated(const QStringList &meshNames, const QString &error);
- void SigDataOutputValueUpdated(const QString &name, const QVariant &newValue);
- void SigPresentationReady();
- void SigPresentationLoaded();
-};
-
-} // end namespace
-
-#endif // QT3DS_VIEWER_H