diff options
Diffstat (limited to 'src/Runtime/Source/system/Qt3DSTypes.h')
-rw-r--r-- | src/Runtime/Source/system/Qt3DSTypes.h | 236 |
1 files changed, 236 insertions, 0 deletions
diff --git a/src/Runtime/Source/system/Qt3DSTypes.h b/src/Runtime/Source/system/Qt3DSTypes.h new file mode 100644 index 00000000..6330919c --- /dev/null +++ b/src/Runtime/Source/system/Qt3DSTypes.h @@ -0,0 +1,236 @@ +/**************************************************************************** +** +** 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$ +** 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$ +** +****************************************************************************/ + +#pragma once + +//============================================================================== +// Namespace +//============================================================================== +namespace Q3DStudio { + +//============================================================================== +// Typedefs +//============================================================================== +typedef bool BOOL; ///< true or false, usually 8 bits +typedef signed char INT8; ///< A signed 8-bit integer, not a character +typedef unsigned char UINT8; ///< An unsigned 8-bit integer 0-255, not a character +typedef signed short INT16; ///< A signed 16-bit integer +typedef unsigned short UINT16; ///< An unsigned 16-bit integer +typedef int INT32; ///< A signed 32-bit integer +typedef unsigned int UINT32; ///< An unsigned 32-bit integer +typedef float FLOAT; ///< A 32-bit floating point number +typedef char CHAR; ///< String character, not a number + +#ifndef TRUE +#define TRUE 1 +#endif +#ifndef FALSE +#define FALSE 0 +#endif + +//============================================================================== +// Max constants and computation +//============================================================================== +INT32 Q3DStudio_maxbits(const INT32 inBitCount, const BOOL inUnsigned); + +#define AKMAX_INT8 static_cast<INT8>(0x7F) +#define AKMAX_UINT8 static_cast<UINT8>(0xFF) +#define AKMAX_INT16 static_cast<INT16>(0x7FFF) +#define AKMAX_UINT16 static_cast<UINT16>(0xFFFF) +#define AKMAX_INT32 0x7FFFFFFFL +#define AKMAX_UINT32 0xFFFFFFFFUL + +//============================================================================== +// Platform specific vectors and matrices +//============================================================================== +#if defined(_PCPLATFORM) + +typedef FILE TFile; +typedef size_t TFileSize; + +#define Q3DStudio_INT64_C(x) x +#define Q3DStudio_UINT64_C(x) x + +typedef __int64 INT64; +typedef unsigned __int64 UINT64; + +struct VECTOR4 +{ + union { + FLOAT v[4]; + UINT32 u[4]; + }; + + FLOAT &x() { return v[0]; } + FLOAT &y() { return v[1]; } + FLOAT &z() { return v[2]; } + FLOAT &w() { return v[3]; } +}; + +struct MATRIX16 +{ + union { + VECTOR4 v[4]; + FLOAT m[4][4]; + FLOAT f[16]; + }; + + FLOAT &_11() { return f[0]; } + FLOAT &_12() { return f[1]; } + FLOAT &_13() { return f[2]; } + FLOAT &_14() { return f[3]; } + FLOAT &_21() { return f[4]; } + FLOAT &_22() { return f[5]; } + FLOAT &_23() { return f[6]; } + FLOAT &_24() { return f[7]; } + FLOAT &_31() { return f[8]; } + FLOAT &_32() { return f[9]; } + FLOAT &_33() { return f[10]; } + FLOAT &_34() { return f[11]; } + FLOAT &_41() { return f[12]; } + FLOAT &_42() { return f[13]; } + FLOAT &_43() { return f[14]; } + FLOAT &_44() { return f[15]; } +}; + +#elif defined(_TEGRAPLATFORM) + +// TODO: sk - We used both WinCE and OpenKode file system utilities. Using non-OpenKode restores +// functionality in a hacky way +// but ultimately sticking to just 1 system would definitely be cleaner. +typedef FILE TFile; +typedef size_t TFileSize; +// typedef KDFile TFile; +// typedef KDsize TFileSize; + +#define Q3DStudio_INT64_C(x) x +#define Q3DStudio_UINT64_C(x) x + +typedef __int64 INT64; +typedef unsigned __int64 UINT64; + +struct VECTOR4 +{ + union { + FLOAT v[4]; + UINT32 u[4]; + }; + FLOAT &x() { return v[0]; } + FLOAT &y() { return v[1]; } + FLOAT &z() { return v[2]; } + FLOAT &w() { return v[3]; } +}; + +struct MATRIX16 +{ + union { + VECTOR4 v[4]; + FLOAT m[4][4]; + FLOAT f[16]; + }; + + FLOAT &_11() { return f[0]; } + FLOAT &_12() { return f[1]; } + FLOAT &_13() { return f[2]; } + FLOAT &_14() { return f[3]; } + FLOAT &_21() { return f[4]; } + FLOAT &_22() { return f[5]; } + FLOAT &_23() { return f[6]; } + FLOAT &_24() { return f[7]; } + FLOAT &_31() { return f[8]; } + FLOAT &_32() { return f[9]; } + FLOAT &_33() { return f[10]; } + FLOAT &_34() { return f[11]; } + FLOAT &_41() { return f[12]; } + FLOAT &_42() { return f[13]; } + FLOAT &_43() { return f[14]; } + FLOAT &_44() { return f[15]; } +}; + +#elif defined(_LINUXPLATFORM) || defined(_INTEGRITYPLATFORM) + +typedef FILE TFile; +typedef size_t TFileSize; + +#define Q3DStudio_INT64_C(x) x +#define Q3DStudio_UINT64_C(x) x + +typedef int64_t INT64; +typedef uint64_t UINT64; + +struct VECTOR4 +{ + union { + FLOAT v[4]; + UINT32 u[4]; + }; + + FLOAT &x() { return v[0]; } + FLOAT &y() { return v[1]; } + FLOAT &z() { return v[2]; } + FLOAT &w() { return v[3]; } +}; + +struct MATRIX16 +{ + union { + VECTOR4 v[4]; + FLOAT m[4][4]; + FLOAT f[16]; + }; + + FLOAT &_11() { return f[0]; } + FLOAT &_12() { return f[1]; } + FLOAT &_13() { return f[2]; } + FLOAT &_14() { return f[3]; } + FLOAT &_21() { return f[4]; } + FLOAT &_22() { return f[5]; } + FLOAT &_23() { return f[6]; } + FLOAT &_24() { return f[7]; } + FLOAT &_31() { return f[8]; } + FLOAT &_32() { return f[9]; } + FLOAT &_33() { return f[10]; } + FLOAT &_34() { return f[11]; } + FLOAT &_41() { return f[12]; } + FLOAT &_42() { return f[13]; } + FLOAT &_43() { return f[14]; } + FLOAT &_44() { return f[15]; } +}; + +#else + +#error "A platform must be defined" + +#endif + +typedef INT64 TMicroSeconds; ///< Time in microseconds +typedef INT64 TTimeUnit; ///< Time in milliseconds + +} // namespace Q3DStudio |