From c068f22329d5cc722622a2183bbb22eef2093df7 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Mon, 24 Aug 2026 11:16:07 +0200 Subject: initial import --- tool_src/QvLib/QvElement.h | 62 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 tool_src/QvLib/QvElement.h (limited to 'tool_src/QvLib/QvElement.h') 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 + +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_ */ -- cgit v1.2.3