summaryrefslogtreecommitdiffstats
path: root/src/Runtime/ogl-runtime/src/system/Qt3DSMacros.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Runtime/ogl-runtime/src/system/Qt3DSMacros.h')
-rw-r--r--src/Runtime/ogl-runtime/src/system/Qt3DSMacros.h189
1 files changed, 189 insertions, 0 deletions
diff --git a/src/Runtime/ogl-runtime/src/system/Qt3DSMacros.h b/src/Runtime/ogl-runtime/src/system/Qt3DSMacros.h
new file mode 100644
index 00000000..fbc40b4d
--- /dev/null
+++ b/src/Runtime/ogl-runtime/src/system/Qt3DSMacros.h
@@ -0,0 +1,189 @@
+/****************************************************************************
+**
+** 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
+
+//==============================================================================
+// Includes
+//==============================================================================
+#include "Qt3DSAssert.h"
+
+//==============================================================================
+// Namespace
+//==============================================================================
+namespace Q3DStudio {
+
+//==============================================================================
+/**
+ * Easy iterations over arrays.
+ * @param array_type element type
+ * @param array_element element variable name getting each entry
+ * @param array_container element array we are traversing
+ */
+#define FOR_ARRAY(array_type, array_element, array_container) \
+ for (array_type *array_element = (array_container).Begin(); \
+ array_element != (array_container).End(); ++array_element)
+
+#define FOR_ARRAY_REVERSE(array_type, array_element, array_container) \
+ for (array_type *array_element = (array_container).End() - 1; \
+ array_element != (array_container).Begin() - 1; --array_element)
+
+//==============================================================================
+/**
+ * Return the smallest of two numbers/objects.
+ * @param inA one value to compare
+ * @param inB another value to compare
+ * @return a reference, not a copy, to the smallest of the two values
+ */
+template <class T>
+inline const T Q3DStudio_abs(const T &inVal)
+{
+ return inVal >= 0 ? inVal : -inVal;
+}
+
+//==============================================================================
+/**
+ * Return the smallest of two numbers/objects.
+ * @param inA one value to compare
+ * @param inB another value to compare
+ * @return a reference, not a copy, to the smallest of the two values
+ */
+template <typename T>
+inline const T &Q3DStudio_min(const T &inA, const T &inB)
+{
+ return inA < inB ? inA : inB;
+}
+
+//==============================================================================
+/**
+ * Return the largest of two numbers/objects.
+ * @param inA one value to compare
+ * @param inB another value to compare
+ * @return a reference, not a copy, to the largest of the two values
+ */
+template <class T>
+inline const T &Q3DStudio_max(const T &inA, const T &inB)
+{
+ return inA > inB ? inA : inB;
+}
+
+//==============================================================================
+/**
+ * Return the smallest of three values.
+ * @param inA one value to compare
+ * @param inB another value to compare
+ * @param inC a third value to compare
+ * @return a reference, not a copy, to the smallest of the three values
+ */
+template <class T>
+inline const T &Q3DStudio_min3(const T &inA, const T &inB, const T &inC)
+{
+ return inA < inB ? Q3DStudio_min(inA, inC) : Q3DStudio_min(inB, inC);
+}
+
+//==============================================================================
+/**
+ * Return the largest of three values.
+ * @param inA one value to compare
+ * @param inB another value to compare
+ * @param inC a third value to compare
+ * @return a reference, not a copy, to the largest of the three values
+ */
+template <class T>
+inline const T &Q3DStudio_max3(const T &inA, const T &inB, const T &inC)
+{
+ return inA > inB ? Q3DStudio_max(inA, inC) : Q3DStudio_max(inB, inC);
+}
+
+//==============================================================================
+/**
+ * Make sure a value is in-bounds between two other values.
+ * @param inVal the value to clamp
+ * @param inMin the lowest inclusive value
+ * @param inMax the highest inclusive value
+ * @return a reference to inVal if the value is in bounds,
+ inMin if lower than the minimum value, or
+ inMax if higher than maximum value.
+ */
+template <class T>
+inline const T &Q3DStudio_clamp(const T &inVal, const T &inMin, const T &inMax)
+{
+ if (inVal <= inMin)
+ return inMin;
+ else if (inVal >= inMax)
+ return inMax;
+
+ return inVal;
+}
+
+//==============================================================================
+/**
+ * Return the identified lower and higher values.
+ * @param inA one value to compare
+ * @param inB another value to compare
+ * @param outMin is assigned to the lower of the two compared values
+ * @param outMax is assigned to the higher of the two compared values
+ */
+template <class T>
+inline void Q3DStudio_minmax(const T &inA, const T &inB, T &outMin, T &outMax)
+{
+ if (inA < inB) {
+ outMin = inA;
+ outMax = inB;
+ } else {
+ outMin = inB;
+ outMax = inA;
+ }
+}
+
+//==============================================================================
+/**
+ * Identify needed parameters that are not currently referenced.
+ */
+#define Q3DStudio_UNREFERENCED_PARAMETER(P) \
+ { \
+ (void)P; \
+ }
+
+//==============================================================================
+/**
+ * Assert
+ */
+#if defined(_DEBUG) || defined(_PROFILE)
+#define Q3DStudio_ASSERT(inExpression) \
+ { \
+ if (!(inExpression)) \
+ Q3DStudio::CAssert::GetFunction()(#inExpression, __FILE__, __LINE__, __FUNCTION__); \
+ }
+#else
+#define Q3DStudio_ASSERT(inExpression) ((void)0)
+#endif // _DEBUG or _PROFILE
+
+} // namespace Q3DStudio