VTK  9.7.1
vtkCellGridRenderRequest.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
18 #ifndef vtkCellGridRenderRequest_h
19 #define vtkCellGridRenderRequest_h
20 #include "vtkCellGridQuery.h"
21 #include "vtkRenderingCoreModule.h" // For export macro
22 #include "vtkStringToken.h" // for ivars
23 
24 #include <memory> // for unique_ptr
25 #include <unordered_map> // for this->State
26 
27 VTK_ABI_NAMESPACE_BEGIN
28 class vtkActor;
29 class vtkCellGridMapper;
30 class vtkRenderer;
31 class vtkWindow;
32 
33 class VTKRENDERINGCORE_EXPORT vtkCellGridRenderRequest : public vtkCellGridQuery
34 {
35 public:
36  class VTKRENDERINGCORE_EXPORT BaseState
37  {
38  public:
39  BaseState() = default;
40  virtual ~BaseState() = default; // Force class to be polymorphic.
41  };
42 
55  enum RenderableGeometry : unsigned char
56  {
57  VERTICES = 1,
58  EDGES = 2,
59  FACES = 4,
60  VOLUMES = 8,
61  SURFACE_WITH_EDGES = EDGES | FACES,
62  ALL = VERTICES | EDGES | FACES | VOLUMES
63  };
64 
66  static vtkCellGridRenderRequest* New();
67  void PrintSelf(ostream& os, vtkIndent indent) override;
68 
74  virtual void SetMapper(vtkCellGridMapper* mapper);
75  vtkGetObjectMacro(Mapper, vtkCellGridMapper);
76 
82  virtual void SetActor(vtkActor* actor);
83  vtkGetObjectMacro(Actor, vtkActor);
84 
90  virtual void SetRenderer(vtkRenderer* renderer);
91  vtkGetObjectMacro(Renderer, vtkRenderer);
92 
98  virtual void SetWindow(vtkWindow* window);
99  vtkGetObjectMacro(Window, vtkWindow);
100 
108  vtkGetMacro(ShapesToDraw, char);
109  vtkSetClampMacro(ShapesToDraw, char, 1, 9);
110 
112  bool Initialize() override;
114  bool Finalize() override;
115 
124  vtkGetMacro(IsReleasingResources, bool);
125  vtkSetMacro(IsReleasingResources, bool);
126 
131  template <typename StateType>
132  StateType* GetState(vtkStringToken cellType, bool create = true)
133  {
134  auto it = this->State.find(cellType);
135  if (it != this->State.end())
136  {
137  return static_cast<StateType*>(it->second.get());
138  }
139 
140  if (create)
141  {
142  it = this->State.insert(std::make_pair(cellType, std::unique_ptr<BaseState>(new StateType)))
143  .first;
144  return static_cast<StateType*>(it->second.get());
145  }
146 
147  return nullptr;
148  }
149 
150 protected:
151  vtkCellGridRenderRequest() = default;
152  ~vtkCellGridRenderRequest() override;
153 
154  vtkCellGridMapper* Mapper{ nullptr };
155  vtkActor* Actor{ nullptr };
156  vtkRenderer* Renderer{ nullptr };
157  vtkWindow* Window{ nullptr };
158  bool IsReleasingResources{ false };
159  char ShapesToDraw{ RenderableGeometry::ALL };
160  std::unordered_map<vtkStringToken, std::unique_ptr<BaseState>> State;
161 
162 private:
164  void operator=(const vtkCellGridRenderRequest&) = delete;
165 };
166 
167 VTK_ABI_NAMESPACE_END
168 #endif // vtkCellGridRenderRequest_h
Perform an operation on cells in a vtkCellMetadata instance.
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:41
State used by vtkCellGridMapper during rendering.
std::unordered_map< vtkStringToken, std::unique_ptr< BaseState > > State
abstract specification for renderers
Definition: vtkRenderer.h:63
window superclass for vtkRenderWindow
Definition: vtkWindow.h:41
a simple class to control print indentation
Definition: vtkIndent.h:28
map a vtkCellGrid to graphics primitives.
StateType * GetState(vtkStringToken cellType, bool create=true)
Return a state object of the given type.
Represent a string by its integer hash.
RenderableGeometry
An enumeration of which shapes to render.