VolViz
A volume visualization tool
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups
Geometry.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "GeometryDescriptor.h"
4 
5 namespace VolViz {
6 namespace Private_ {
7 
8 class VisualizerImpl;
9 
10 class Geometry {
11 public:
12  using UniquePtr = std::unique_ptr<Geometry>;
13 
14  Position position{Position::Zero()};
15  Orientation orientation{Orientation::Identity()};
16  Length scale{1 * milli * meter};
19 
20  virtual ~Geometry() = default;
21 
22  void init();
23 
24  inline void update() { doUpdate(); }
25 
26  void render(std::uint32_t index, bool selected);
27 
28  template <class Descriptor,
29  typename = std::enable_if_t<std::is_base_of<
30  GeometryDescriptor, std::decay_t<Descriptor>>::value>>
31  inline void enqueueUpdate(Descriptor &&descriptor) {
32  doEnqueueUpdate(std::forward<Descriptor>(descriptor));
33  }
34 
35 protected:
36  Geometry(VisualizerImpl &visualizer);
37  Geometry(GeometryDescriptor const &descriptor, VisualizerImpl &visualizer);
38 
39  virtual void doInit();
40 
41  virtual void doRender(std::uint32_t index, bool selected) = 0;
42 
43  virtual void doUpdate();
44 
45  virtual void doEnqueueUpdate(GeometryDescriptor const &descriptor);
46  virtual void doEnqueueUpdate(GeometryDescriptor &&descriptor);
47 
49 };
50 
51 } // namespace VolViz
52 } // namespace Private_
GLenum GLenum GLenum GLenum GLenum scale
Definition: glad.h:13107
virtual void doInit()
Definition: Geometry.cpp:20
void update()
Definition: Geometry.h:24
Eigen::Quaternionf Orientation
6-DOF orientation, represented as a quaternion
Definition: Types.h:54
GLsizei const GLfloat * value
Definition: glad.h:2544
Orientation orientation
Definition: Geometry.h:15
void render(std::uint32_t index, bool selected)
Definition: Geometry.cpp:16
virtual ~Geometry()=default
auto White() noexcept
Definition: Types.h:44
virtual void doUpdate()
Definition: Geometry.cpp:22
virtual void doEnqueueUpdate(GeometryDescriptor const &descriptor)
Definition: Geometry.cpp:24
Eigen::Vector3f Position
Position in 3D euclidean space.
Definition: Types.h:21
Geometry(VisualizerImpl &visualizer)
Definition: Geometry.cpp:7
void init()
Definition: Geometry.cpp:14
Definition: Geometry.h:15
void enqueueUpdate(Descriptor &&descriptor)
Definition: Geometry.h:31
Definition: Geometry.h:10
Eigen::Vector3f Color
Normalized RGB color.
Definition: Types.h:40
std::unique_ptr< Geometry > UniquePtr
Definition: Geometry.h:12
Definition: GeometryDescriptor.h:33
GLuint color
Definition: glad.h:2834
GLuint index
Definition: glad.h:2430
VisualizerImpl & visualizer_
Definition: Geometry.h:48
virtual void doRender(std::uint32_t index, bool selected)=0
Definition: VisualizerImpl.h:29
phys::units::quantity< phys::units::length_d > Length
Definition: Types.h:64
MoveMask
Definition: GeometryDescriptor.h:9
MoveMask moveMask
Definition: Geometry.h:17
Position position
Definition: Geometry.h:14