aboutsummaryrefslogtreecommitdiff
path: root/tool_src/QvLib/QvElement.h
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2026-08-24 11:16:07 +0200
committerFelix Morgner <felix.morgner@gmail.com>2026-08-24 11:16:07 +0200
commitc068f22329d5cc722622a2183bbb22eef2093df7 (patch)
tree12d56c1aede67988a55e241364606bfbb4dba933 /tool_src/QvLib/QvElement.h
downloadopenparsec-c068f22329d5cc722622a2183bbb22eef2093df7.tar.xz
openparsec-c068f22329d5cc722622a2183bbb22eef2093df7.zip
initial importHEADmain
Diffstat (limited to 'tool_src/QvLib/QvElement.h')
-rw-r--r--tool_src/QvLib/QvElement.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/tool_src/QvLib/QvElement.h b/tool_src/QvLib/QvElement.h
new file mode 100644
index 0000000..58c5ce1
--- /dev/null
+++ b/tool_src/QvLib/QvElement.h
@@ -0,0 +1,62 @@
+#ifndef _QV_ELEMENT_
+#define _QV_ELEMENT_
+
+#include <QvBasic.h>
+
+class QvNode;
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// The base class element; the data is a pointer to some QvNode. The
+// type of the node can be inferred from the use of the element
+// instance in a particular stack in the state. In some cases, the
+// "type" field is used to distinguish among various possible node
+// types within a single stack.
+//
+//////////////////////////////////////////////////////////////////////////////
+
+class QvElement {
+
+ public:
+
+ enum NodeType {
+ // Fallback case
+ Unknown,
+
+ // Types of cameras in camera stack
+ OrthographicCamera,
+ PerspectiveCamera,
+
+ // Types of lights in light stack
+ DirectionalLight,
+ PointLight,
+ SpotLight,
+
+ // Types of transformations in transformation stack
+ NoOpTransform, // For QvTransformSeparator
+ MatrixTransform,
+ Rotation,
+ Scale,
+ Transform,
+ Translation,
+
+ // This has to be last!!!
+ NumNodeTypes,
+ };
+
+ static const char *nodeTypeNames[NumNodeTypes]; // Names of node types
+
+ int depth; // Depth of element in state
+ QvElement *next; // Next element in stack
+ QvNode *data; // Pointer to node containing data
+ NodeType type; // Type of data node
+
+ QvElement();
+ virtual ~QvElement();
+
+ QvElement operator= (QvElement * x){ return *x;}
+ // Prints contents for debugging, mostly
+ virtual void print();
+};
+
+#endif /* _QV_ELEMENT_ */