summaryrefslogtreecommitdiffstats
path: root/src/Runtime/ogl-runtime/src/dm/systems/Qt3DSDMValue.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Runtime/ogl-runtime/src/dm/systems/Qt3DSDMValue.h')
m---------src/Runtime/ogl-runtime0
-rw-r--r--src/Runtime/ogl-runtime/src/dm/systems/Qt3DSDMValue.h341
2 files changed, 0 insertions, 341 deletions
diff --git a/src/Runtime/ogl-runtime b/src/Runtime/ogl-runtime
new file mode 160000
+Subproject 427fddb50d43aa21a90fc7356ee3cdd8a908df5
diff --git a/src/Runtime/ogl-runtime/src/dm/systems/Qt3DSDMValue.h b/src/Runtime/ogl-runtime/src/dm/systems/Qt3DSDMValue.h
deleted file mode 100644
index 9e006320..00000000
--- a/src/Runtime/ogl-runtime/src/dm/systems/Qt3DSDMValue.h
+++ /dev/null
@@ -1,341 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 1993-2009 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-EXCEPT$
-** 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 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** 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$
-**
-****************************************************************************/
-#pragma once
-#ifndef QT3DSDM_VALUE_H
-#define QT3DSDM_VALUE_H
-#include "Qt3DSDMDataTypes.h"
-
-#include <QColor>
-#include <QMetaType>
-#include <QVariant>
-#include <QVector>
-#include <QVector2D>
-#include <QVector3D>
-
-namespace qt3dsdm {
-
-template <typename TDataType>
-struct SDataTypeToEnumMap
-{
-};
-
-template <DataModelDataType::Value TEnumVal>
-struct SEnumToDataTypeMap
-{
-};
-
-#define DEFINE_QT3DSDM_DATA_TYPE_MAP(dtype, enumName) \
- template <> \
- struct SDataTypeToEnumMap<dtype> \
- { \
- static DataModelDataType::Value getType() { return enumName; } \
- }; \
- template <> \
- struct SEnumToDataTypeMap<enumName> \
- { \
- typedef dtype TDataType; \
- };
-
-#define ITERATE_QT3DSDM_DATA_TYPES \
- HANDLE_QT3DSDM_DATA_TYPE(float, DataModelDataType::Float); \
- HANDLE_QT3DSDM_DATA_TYPE(SFloat2, DataModelDataType::Float2); \
- HANDLE_QT3DSDM_DATA_TYPE(SFloat3, DataModelDataType::Float3); \
- HANDLE_QT3DSDM_DATA_TYPE(SFloat4, DataModelDataType::Float4); \
- HANDLE_QT3DSDM_DATA_TYPE(qt3ds::QT3DSI32, DataModelDataType::Long); \
- HANDLE_QT3DSDM_DATA_TYPE(TDataStrPtr, DataModelDataType::String); \
- HANDLE_QT3DSDM_DATA_TYPE(bool, DataModelDataType::Bool); \
- HANDLE_QT3DSDM_DATA_TYPE(SLong4, DataModelDataType::Long4); \
- HANDLE_QT3DSDM_DATA_TYPE(SStringRef, DataModelDataType::StringRef); \
- HANDLE_QT3DSDM_DATA_TYPE(SObjectRefType, DataModelDataType::ObjectRef); \
- HANDLE_QT3DSDM_DATA_TYPE(SStringOrInt, DataModelDataType::StringOrInt); \
- HANDLE_QT3DSDM_DATA_TYPE(TFloatList, DataModelDataType::FloatList);
-
-#define HANDLE_QT3DSDM_DATA_TYPE(a, b) DEFINE_QT3DSDM_DATA_TYPE_MAP(a, b)
-ITERATE_QT3DSDM_DATA_TYPES
-#undef HANDLE_QT3DSDM_DATA_TYPE
-
-struct Qt3DSDMDataTypeUnionTraits
-{
- typedef DataModelDataType::Value TIdType;
-
- enum {
- TBufferSize = sizeof(SObjectRefType),
- };
-
- static TIdType getNoDataId() { return DataModelDataType::None; }
-
- template <typename TDataType>
- static TIdType getType()
- {
- return SDataTypeToEnumMap<TDataType>::getType();
- }
-
- template <typename TRetType, typename TVisitorType>
- static TRetType visit(char *inData, DataModelDataType::Value inType, TVisitorType inVisitor)
- {
- switch (inType) {
-#define HANDLE_QT3DSDM_DATA_TYPE(dtype, enumType) \
- case enumType: \
- return inVisitor(*NVUnionCast<dtype *>(inData));
- ITERATE_QT3DSDM_DATA_TYPES
-#undef HANDLE_QT3DSDM_DATA_TYPE
-
- default:
- QT3DS_ASSERT(false);
- case DataModelDataType::None:
- return inVisitor();
- }
- }
-
- template <typename TRetType, typename TVisitorType>
- static TRetType visit(const char *inData, DataModelDataType::Value inType, TVisitorType inVisitor)
- {
- switch (inType) {
-#define HANDLE_QT3DSDM_DATA_TYPE(dtype, enumType) \
- case enumType: \
- return inVisitor(*NVUnionCast<const dtype *>(inData));
- ITERATE_QT3DSDM_DATA_TYPES
-#undef HANDLE_QT3DSDM_DATA_TYPE
-
- default:
- QT3DS_ASSERT(false);
- case DataModelDataType::None:
- return inVisitor();
- }
- }
-};
-
-typedef qt3ds::foundation::
- DiscriminatedUnion<qt3ds::foundation::
- DiscriminatedUnionGenericBase<Qt3DSDMDataTypeUnionTraits,
- Qt3DSDMDataTypeUnionTraits::TBufferSize>,
- Qt3DSDMDataTypeUnionTraits::TBufferSize>
- TValue;
-
-struct SValue : public TValue
-{
- SValue() {}
- SValue(const SValue &inOther)
- : TValue(static_cast<const TValue &>(inOther))
- {
- }
- SValue(const QVariant &inData);
-
- template <typename TDataType>
- SValue(const TDataType &inData)
- : TValue(inData)
- {
- }
- SValue &operator=(const SValue &inOther)
- {
- TValue::operator=(inOther);
- return *this;
- }
- bool operator==(const SValue &inOther) const { return TValue::operator==(inOther); }
- bool operator!=(const SValue &inOther) const { return TValue::operator!=(inOther); }
- bool empty() const { return getType() == DataModelDataType::None; }
-
- // Conversion from this data type into a data model value
- const SValue &toOldSkool() const { return *this; }
-
- QVariant toQVariant() const;
-};
-
-typedef std::shared_ptr<SValue> SValuePtr;
-
-template <>
-struct Qt3DSDMGetter<SValue>
-{
- template <typename TRetType>
- TRetType doGet(const SValue &inValue)
- {
- return inValue.getData<TRetType>();
- }
-};
-
-template <>
-struct Qt3DSDMValueTyper<SValue>
-{
- DataModelDataType::Value Get(const SValue &inValue) { return inValue.getType(); }
-};
-
-inline bool CheckValueType(DataModelDataType::Value inType, const SValue &inValue)
-{
- bool retval = inType == inValue.getType();
- if (!retval)
- throw ValueTypeError(L"");
- return retval;
-}
-
-inline bool Equals(const SValue &lhs, const SValue &rhs)
-{
- return lhs == rhs;
-}
-
-class SInternValue
-{
- SValue m_Value;
-
-public:
- SInternValue(const SValue &inValue, IStringTable &inTable);
- SInternValue() {}
- SInternValue(const SInternValue &inOther);
- SInternValue &operator=(const SInternValue &inOther)
- {
- m_Value = inOther.m_Value;
- return *this;
- }
-
- static SInternValue ISwearThisHasAlreadyBeenInternalized(const SValue &inValue)
- {
- SInternValue retval;
- retval.m_Value = inValue;
- return retval;
- }
-
- const SValue &GetValue() const { return m_Value; }
- operator const SValue &() const { return m_Value; }
-};
-
-template <>
-struct SDefaulter<SValue>
-{
- inline bool SetDefault(DataModelDataType::Value inDataType, SValue &outValue)
- {
- switch (inDataType) {
- case DataModelDataType::Float:
- outValue = SValue(0.f);
- break;
- case DataModelDataType::Float2:
- outValue = SValue(SFloat2());
- break;
- case DataModelDataType::Float3:
- outValue = SValue(SFloat3());
- break;
- case DataModelDataType::Float4:
- outValue = SValue(SFloat4());
- break;
- case DataModelDataType::Long:
- outValue = SValue(0);
- break;
- case DataModelDataType::String:
- outValue = SValue(TDataStrPtr(new CDataStr(L"")));
- break;
- case DataModelDataType::Bool:
- outValue = SValue(false);
- break;
- case DataModelDataType::Long4:
- outValue = SValue(SLong4());
- break;
- case DataModelDataType::StringRef:
- outValue = SValue(SStringRef());
- break;
- case DataModelDataType::ObjectRef:
- outValue = SValue(SObjectRefType());
- break;
- case DataModelDataType::FloatList:
- outValue = SValue(TFloatList());
- break;
- case DataModelDataType::StringOrInt:
- default:
- outValue = SValue(SStringOrInt());
- return false;
- }
- return true;
- }
-};
-
-inline SObjectRefType ConvertToObjectRef(const SValue &inValue)
-{
- using namespace std;
- switch (GetValueType(inValue)) {
- case DataModelDataType::StringRef:
- return SObjectRefType(make_shared<CDataStr>(get<SStringRef>(inValue).m_Id));
- case DataModelDataType::String:
- return SObjectRefType(get<TDataStrPtr>(inValue));
- case DataModelDataType::Long4:
- return SObjectRefType(get<SLong4>(inValue));
- case DataModelDataType::ObjectRef:
- return get<SObjectRefType>(inValue);
- default:
- break;
- }
- return SObjectRefType();
-}
-
-
-template <>
-inline QColor get<QColor>(const SValue &inType)
-{
- auto f = get<qt3dsdm::SFloat4>(inType);
- qreal r = qBound<qreal>(0.0, f.m_Floats[0], 1.0);
- qreal g = qBound<qreal>(0.0, f.m_Floats[1], 1.0);
- qreal b = qBound<qreal>(0.0, f.m_Floats[2], 1.0);
- qreal a = qBound<qreal>(0.0, f.m_Floats[3], 1.0);
- return QColor::fromRgbF(r, g, b, a);
-}
-
-template <>
-inline QString get<QString>(const qt3dsdm::SValue &inType)
-{
- return QString::fromWCharArray(qt3dsdm::get<qt3dsdm::TDataStrPtr>(inType)->GetData());
-}
-
-template <>
-inline QVector2D get<QVector2D>(const qt3dsdm::SValue &inType)
-{
- auto f = get<qt3dsdm::SFloat2>(inType);
- return QVector2D(f.m_Floats[0], f.m_Floats[1]);
-}
-
-template <>
-inline QVector3D get<QVector3D>(const qt3dsdm::SValue &inType)
-{
- auto f = get<qt3dsdm::SFloat3>(inType);
- return QVector3D(f.m_Floats[0], f.m_Floats[1], f.m_Floats[2]);
-}
-
-template <>
-inline QVector<float> get<QVector<float> >(const qt3dsdm::SValue &inType)
-{
- auto f = get<qt3dsdm::SFloat4>(inType);
- return {f.m_Floats[0], f.m_Floats[1], f.m_Floats[2], f.m_Floats[3]};
-}
-
-// KDAB_TODO Shortcut to not define our own 4 member long structure
-template <>
-inline QVector<qt3ds::QT3DSU32> get<QVector<qt3ds::QT3DSU32> >(const qt3dsdm::SValue &inType)
-{
- auto f = get<qt3dsdm::SLong4>(inType);
- return {f.m_Longs[0], f.m_Longs[1], f.m_Longs[2], f.m_Longs[3]};
-}
-
-}
-Q_DECLARE_METATYPE(qt3dsdm::DataModelDataType)
-#endif