diff options
Diffstat (limited to 'src/runtimerender/Qt3DSRenderGraphObjectTypes.h')
-rw-r--r-- | src/runtimerender/Qt3DSRenderGraphObjectTypes.h | 166 |
1 files changed, 166 insertions, 0 deletions
diff --git a/src/runtimerender/Qt3DSRenderGraphObjectTypes.h b/src/runtimerender/Qt3DSRenderGraphObjectTypes.h new file mode 100644 index 0000000..620f6c5 --- /dev/null +++ b/src/runtimerender/Qt3DSRenderGraphObjectTypes.h @@ -0,0 +1,166 @@ +/**************************************************************************** +** +** Copyright (C) 2008-2012 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 +#ifndef QT3DS_RENDER_GRAPH_OBJECT_TYPES_H +#define QT3DS_RENDER_GRAPH_OBJECT_TYPES_H +#include "Qt3DSRender.h" +#include "foundation/Qt3DSAssert.h" + +namespace qt3ds { +namespace render { + +// If you need a generic switch statement, then these macros will ensure +// you get all the types the first time. +#define QT3DS_RENDER_ITERATE_GRAPH_OBJECT_TYPES \ + QT3DS_RENDER_HANDL_GRAPH_OBJECT_TYPE(Presentation) \ + QT3DS_RENDER_HANDL_GRAPH_OBJECT_TYPE(Scene) \ + QT3DS_RENDER_HANDL_GRAPH_OBJECT_TYPE(Node) \ + QT3DS_RENDER_HANDL_GRAPH_OBJECT_TYPE(Layer) \ + QT3DS_RENDER_HANDL_GRAPH_OBJECT_TYPE(Light) \ + QT3DS_RENDER_HANDL_GRAPH_OBJECT_TYPE(Camera) \ + QT3DS_RENDER_HANDL_GRAPH_OBJECT_TYPE(Model) \ + QT3DS_RENDER_HANDL_GRAPH_OBJECT_TYPE(DefaultMaterial) \ + QT3DS_RENDER_HANDL_GRAPH_OBJECT_TYPE(Image) \ + QT3DS_RENDER_HANDL_GRAPH_OBJECT_TYPE(Text) \ + QT3DS_RENDER_HANDL_GRAPH_OBJECT_TYPE(Effect) \ + QT3DS_RENDER_HANDL_GRAPH_OBJECT_TYPE(RenderPlugin) \ + QT3DS_RENDER_HANDL_GRAPH_OBJECT_TYPE(CustomMaterial) \ + QT3DS_RENDER_HANDL_GRAPH_OBJECT_TYPE(ReferencedMaterial) \ + QT3DS_RENDER_HANDL_GRAPH_OBJECT_TYPE(Path) \ + QT3DS_RENDER_HANDL_GRAPH_OBJECT_TYPE(PathSubPath) + + struct GraphObjectTypes + { + enum Enum { + Unknown = 0, + Presentation, + Scene, + Node, + Layer, + Light, + Camera, + Model, + DefaultMaterial, + Image, + Text, + Effect, + CustomMaterial, + RenderPlugin, + ReferencedMaterial, + Path, + PathSubPath, + Lightmaps, + LastKnownGraphObjectType, + }; + + static bool IsMaterialType(Enum type) + { + switch (type) { + case ReferencedMaterial: + case CustomMaterial: + case DefaultMaterial: + return true; + default: + return false; + } + } + + static bool IsLightmapType(Enum type) + { + switch (type) { + case Lightmaps: + case DefaultMaterial: + return true; + default: + return false; + } + } + + static bool IsNodeType(Enum type) + { + switch (type) { + case Node: + case Layer: + case Light: + case Camera: + case Model: + case Text: + case Path: + return true; + + default: + break; + } + return false; + } + + static bool IsRenderableType(Enum type) + { + switch (type) { + case Model: + case Text: + case Path: + return true; + default: + break; + } + return false; + } + + static bool IsLightCameraType(Enum type) + { + switch (type) { + case Camera: + case Light: + return true; + default: + break; + } + return false; + } + static const char *GetObjectTypeName(Enum inType) + { + switch (inType) { +#define QT3DS_RENDER_HANDL_GRAPH_OBJECT_TYPE(type) \ + case type: \ + return #type; + QT3DS_RENDER_ITERATE_GRAPH_OBJECT_TYPES +#undef QT3DS_RENDER_HANDL_GRAPH_OBJECT_TYPE + default: + break; + } + QT3DS_ASSERT(false); + return ""; + } + }; +} +} + +#endif |