diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2026-08-24 11:16:07 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2026-08-24 11:16:07 +0200 |
| commit | c068f22329d5cc722622a2183bbb22eef2093df7 (patch) | |
| tree | 12d56c1aede67988a55e241364606bfbb4dba933 /tool_src/QvLib/QvElement.h | |
| download | openparsec-main.tar.xz openparsec-main.zip | |
Diffstat (limited to 'tool_src/QvLib/QvElement.h')
| -rw-r--r-- | tool_src/QvLib/QvElement.h | 62 |
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_ */ |
