VTK  9.7.1
vtkAnariRenderer.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
15 #ifndef vtkAnariRenderer_h
16 #define vtkAnariRenderer_h
17 
18 #include "vtkAnariDevice.h" // For device ivar
19 #include "vtkObject.h"
20 #include "vtkRenderingAnariModule.h" // For export macro
21 #include "vtkSmartPointer.h" // For device ivar
22 
23 #include <anari/anari_cpp.hpp> // for ANARI handles
24 
25 VTK_ABI_NAMESPACE_BEGIN
26 
27 class vtkAnariRendererInternals;
28 class vtkAnariDevice;
29 
30 class VTKRENDERINGANARI_EXPORT vtkAnariRenderer : public vtkObject
31 {
32 public:
33  static vtkAnariRenderer* New();
34  vtkTypeMacro(vtkAnariRenderer, vtkObject);
35  void PrintSelf(ostream& os, vtkIndent indent) override;
36 
38 
41  void SetAnariDevice(vtkAnariDevice* d);
42  vtkGetSmartPointerMacro(AnariDevice, vtkAnariDevice);
44 
53  void SetSubtype(const char* subtype = "default");
54 
59  const char* GetSubtype() const;
60 
62 
69  void SetParameterb(const char* param, bool);
70  void SetParameteri(const char* param, int);
71  void SetParameter2i(const char* param, int, int);
72  void SetParameter3i(const char* param, int, int, int);
73  void SetParameter4i(const char* param, int, int, int, int);
74  void SetParameterf(const char* param, float);
75  void SetParameter2f(const char* param, float, float);
76  void SetParameter3f(const char* param, float, float, float);
77  void SetParameter4f(const char* param, float, float, float, float);
79 
83  anari::Renderer GetHandle() const;
84 
89  std::vector<std::pair<std::string, int>> GetRendererParameters() const;
90 
94  std::string GetRendererParameterDescription(std::pair<std::string, int> rparam) const;
95 
99  bool IsRendererParameterRequired(std::pair<std::string, int> rparam) const;
100 
102 
105  const void* GetRendererParameterDefault(std::pair<std::string, int> rparam);
106  const void* GetRendererParameterMinimum(std::pair<std::string, int> rparam);
107  const void* GetRendererParameterMaximum(std::pair<std::string, int> rparam);
108  const void* GetRendererParameterValue(std::pair<std::string, int> rparam);
110 
111 protected:
116 
120  ~vtkAnariRenderer() override;
121 
122  // member variables
123  vtkSmartPointer<vtkAnariDevice> AnariDevice = nullptr;
124 
125 private:
126  void CheckAnariDeviceInitialized();
127 
128  vtkAnariRenderer(const vtkAnariRenderer&) = delete;
129  void operator=(const vtkAnariRenderer&) = delete;
130 
131  vtkAnariRendererInternals* Internal{ nullptr };
132 };
133 
134 VTK_ABI_NAMESPACE_END
135 #endif
abstract base class for most VTK objects
Definition: vtkObject.h:52
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
base class to objects which create + manage an ANARI library, device, and renderer ...
a simple class to control print indentation
Definition: vtkIndent.h:28
base class to objects which create + manage a ANARI library + device
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...