VTK  9.3.0
vtkLODProp3D.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
21 #ifndef vtkLODProp3D_h
22 #define vtkLODProp3D_h
23 
24 #include "vtkProp3D.h"
25 #include "vtkRenderingCoreModule.h" // For export macro
26 
27 VTK_ABI_NAMESPACE_BEGIN
28 class vtkRenderer;
29 class vtkMapper;
32 class vtkImageMapper3D;
33 class vtkProperty;
34 class vtkVolumeProperty;
35 class vtkImageProperty;
36 class vtkTexture;
37 class vtkLODProp3DCallback;
38 
40 {
43  int ID;
44  double EstimatedTime;
45  int State;
46  double Level;
47 };
49 
50 class VTKRENDERINGCORE_EXPORT vtkLODProp3D : public vtkProp3D
51 {
52 public:
56  static vtkLODProp3D* New();
57 
58  vtkTypeMacro(vtkLODProp3D, vtkProp3D);
59  void PrintSelf(ostream& os, vtkIndent indent) override;
60 
64  double* GetBounds() VTK_SIZEHINT(6) override;
65  void GetBounds(double bounds[6]) { this->vtkProp3D::GetBounds(bounds); }
66 
68 
77  int AddLOD(vtkMapper* m, vtkProperty* p, vtkProperty* back, vtkTexture* t, double time);
78  int AddLOD(vtkMapper* m, vtkProperty* p, vtkTexture* t, double time);
79  int AddLOD(vtkMapper* m, vtkProperty* p, vtkProperty* back, double time);
80  int AddLOD(vtkMapper* m, vtkProperty* p, double time);
81  int AddLOD(vtkMapper* m, vtkTexture* t, double time);
82  int AddLOD(vtkMapper* m, double time);
86  int AddLOD(vtkImageMapper3D* m, double time);
88 
90 
93  vtkGetMacro(NumberOfLODs, int);
95 
97 
102  vtkGetMacro(CurrentIndex, int);
104 
109  void RemoveLOD(int id);
110 
112 
118  void SetLODProperty(int id, vtkProperty* p);
119  void GetLODProperty(int id, vtkProperty** p);
123  void GetLODProperty(int id, vtkImageProperty** p);
125 
127 
133  void SetLODMapper(int id, vtkMapper* m);
134  void GetLODMapper(int id, vtkMapper** m);
137  void SetLODMapper(int id, vtkImageMapper3D* m);
138  void GetLODMapper(int id, vtkImageMapper3D** m);
140 
147 
149 
156 
158 
162  void SetLODTexture(int id, vtkTexture* t);
163  void GetLODTexture(int id, vtkTexture** t);
165 
167 
172  void EnableLOD(int id);
173  void DisableLOD(int id);
174  int IsLODEnabled(int id);
176 
178 
186  void SetLODLevel(int id, double level);
187  double GetLODLevel(int id);
188  double GetLODIndexLevel(int index);
190 
192 
200 
202 
207  vtkSetClampMacro(AutomaticLODSelection, vtkTypeBool, 0, 1);
208  vtkGetMacro(AutomaticLODSelection, vtkTypeBool);
209  vtkBooleanMacro(AutomaticLODSelection, vtkTypeBool);
211 
213 
217  vtkSetMacro(SelectedLODID, int);
218  vtkGetMacro(SelectedLODID, int);
220 
225 
230 
232 
237  void GetActors(vtkPropCollection*) override;
238  void GetVolumes(vtkPropCollection*) override;
240 
242 
246  void SetSelectedPickLODID(int id);
247  vtkGetMacro(SelectedPickLODID, int);
249 
251 
256  vtkSetClampMacro(AutomaticPickLODSelection, vtkTypeBool, 0, 1);
257  vtkGetMacro(AutomaticPickLODSelection, vtkTypeBool);
258  vtkBooleanMacro(AutomaticPickLODSelection, vtkTypeBool);
260 
264  void ShallowCopy(vtkProp* prop) override;
265 
267 
270  int RenderOpaqueGeometry(vtkViewport* viewport) override;
272  int RenderVolumetricGeometry(vtkViewport* viewport) override;
274 
279 
286 
292  void SetAllocatedRenderTime(double t, vtkViewport* vp) override;
293 
300  void RestoreEstimatedRenderTime() override;
301 
306  void AddEstimatedRenderTime(double t, vtkViewport* vp) override;
307 
308 protected:
310  ~vtkLODProp3D() override;
311 
313 
314  // Assumes that SelectedLODIndex has already been validated:
316 
321 
323  int ConvertIDToIndex(int id);
325 
330  vtkLODProp3DCallback* PickCallback;
331 
332 private:
333  vtkLODProp3D(const vtkLODProp3D&) = delete;
334  void operator=(const vtkLODProp3D&) = delete;
335 };
336 
337 VTK_ABI_NAMESPACE_END
338 #endif
abstract class specifies interface to map 3D data
Abstract class for a volume mapper.
abstract class for mapping images to the screen
image display properties
a simple class to control print indentation
Definition: vtkIndent.h:29
level of detail 3D prop
Definition: vtkLODProp3D.h:51
void GetLODMapper(int id, vtkImageMapper3D **m)
Methods to set / get the mapper of an LOD.
int RenderOpaqueGeometry(vtkViewport *viewport) override
Support the standard render methods.
int GetAutomaticPickPropIndex()
void SetLODMapper(int id, vtkMapper *m)
Methods to set / get the mapper of an LOD.
double * GetBounds() override
Standard vtkProp method to get 3D bounds of a 3D prop.
void GetActors(vtkPropCollection *) override
For some exporters and other other operations we must be able to collect all the actors or volumes.
void RestoreEstimatedRenderTime() override
Used when the render process is aborted to restore the previous estimated render time.
void GetVolumes(vtkPropCollection *) override
For some exporters and other other operations we must be able to collect all the actors or volumes.
void SetLODProperty(int id, vtkImageProperty *p)
Methods to set / get the property of an LOD.
void SetSelectedPickLODID(int id)
Set the id of the LOD that is to be used for picking when automatic LOD pick selection is turned off.
vtkTypeBool AutomaticLODSelection
Definition: vtkLODProp3D.h:326
static vtkLODProp3D * New()
Create an instance of this class.
vtkLODProp3DEntry * LODs
Definition: vtkLODProp3D.h:317
int IsLODEnabled(int id)
Enable / disable a particular LOD.
double GetLODLevel(int id)
Set the level of a particular LOD.
int GetLastRenderedLODID()
Get the ID of the previously (during the last render) selected LOD index.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
int SelectedPickLODID
Definition: vtkLODProp3D.h:328
int GetNextEntryIndex()
vtkLODProp3DCallback * PickCallback
Definition: vtkLODProp3D.h:330
int AddLOD(vtkAbstractVolumeMapper *m, vtkVolumeProperty *p, double time)
Add a level of detail with a given mapper, property, backface property, texture, and guess of renderi...
void SetLODProperty(int id, vtkProperty *p)
Methods to set / get the property of an LOD.
int SelectedLODIndex
Definition: vtkLODProp3D.h:324
void ShallowCopy(vtkProp *prop) override
Shallow copy of this vtkLODProp3D.
int RenderVolumetricGeometry(vtkViewport *viewport) override
Support the standard render methods.
vtkTypeBool AutomaticPickLODSelection
Definition: vtkLODProp3D.h:329
void RemoveLOD(int id)
Delete a level of detail given an ID.
double GetLODIndexEstimatedRenderTime(int index)
Access method that can be used to find out the estimated render time (the thing used to select an LOD...
int RenderTranslucentPolygonalGeometry(vtkViewport *viewport) override
Support the standard render methods.
void GetLODMapper(int id, vtkMapper **m)
Methods to set / get the mapper of an LOD.
double GetLODIndexLevel(int index)
Set the level of a particular LOD.
void GetLODProperty(int id, vtkProperty **p)
Methods to set / get the property of an LOD.
void GetLODTexture(int id, vtkTexture **t)
Methods to set / get the texture of an LOD.
vtkAbstractMapper3D * GetLODMapper(int id)
Get the LODMapper as an vtkAbstractMapper3D.
void SetLODLevel(int id, double level)
Set the level of a particular LOD.
double GetLODEstimatedRenderTime(int id)
Access method that can be used to find out the estimated render time (the thing used to select an LOD...
void EnableLOD(int id)
Enable / disable a particular LOD.
vtkTypeBool HasTranslucentPolygonalGeometry() override
Does this prop have some translucent polygonal geometry?
void GetLODBackfaceProperty(int id, vtkProperty **t)
Methods to set / get the backface property of an LOD.
int ConvertIDToIndex(int id)
void SetLODMapper(int id, vtkImageMapper3D *m)
Methods to set / get the mapper of an LOD.
int AddLOD(vtkMapper *m, vtkProperty *p, double time)
Add a level of detail with a given mapper, property, backface property, texture, and guess of renderi...
void SetLODBackfaceProperty(int id, vtkProperty *t)
Methods to set / get the backface property of an LOD.
int GetPickLODID()
Get the ID of the appropriate pick LOD index.
int AddLOD(vtkImageMapper3D *m, vtkImageProperty *p, double time)
Add a level of detail with a given mapper, property, backface property, texture, and guess of renderi...
int AddLOD(vtkAbstractVolumeMapper *m, double time)
Add a level of detail with a given mapper, property, backface property, texture, and guess of renderi...
int AddLOD(vtkMapper *m, double time)
Add a level of detail with a given mapper, property, backface property, texture, and guess of renderi...
void SetAllocatedRenderTime(double t, vtkViewport *vp) override
Used by the culler / renderer to set the allocated render time for this prop.
void GetLODProperty(int id, vtkImageProperty **p)
Methods to set / get the property of an LOD.
void DisableLOD(int id)
Enable / disable a particular LOD.
int AddLOD(vtkImageMapper3D *m, double time)
Add a level of detail with a given mapper, property, backface property, texture, and guess of renderi...
void UpdateKeysForSelectedProp()
int AddLOD(vtkMapper *m, vtkProperty *p, vtkProperty *back, vtkTexture *t, double time)
Add a level of detail with a given mapper, property, backface property, texture, and guess of renderi...
void SetLODMapper(int id, vtkAbstractVolumeMapper *m)
Methods to set / get the mapper of an LOD.
int AddLOD(vtkMapper *m, vtkProperty *p, vtkProperty *back, double time)
Add a level of detail with a given mapper, property, backface property, texture, and guess of renderi...
int AddLOD(vtkMapper *m, vtkProperty *p, vtkTexture *t, double time)
Add a level of detail with a given mapper, property, backface property, texture, and guess of renderi...
void GetLODProperty(int id, vtkVolumeProperty **p)
Methods to set / get the property of an LOD.
void SetLODProperty(int id, vtkVolumeProperty *p)
Methods to set / get the property of an LOD.
void SetLODTexture(int id, vtkTexture *t)
Methods to set / get the texture of an LOD.
~vtkLODProp3D() override
void GetLODMapper(int id, vtkAbstractVolumeMapper **m)
Methods to set / get the mapper of an LOD.
void AddEstimatedRenderTime(double t, vtkViewport *vp) override
Override method from vtkProp in order to push this call down to the selected LOD as well.
void ReleaseGraphicsResources(vtkWindow *) override
Release any graphics resources that are being consumed by this actor.
int AddLOD(vtkMapper *m, vtkTexture *t, double time)
Add a level of detail with a given mapper, property, backface property, texture, and guess of renderi...
abstract class specifies interface to map data to graphics primitives
Definition: vtkMapper.h:77
represents an 3D object for placement in a rendered scene
Definition: vtkProp3D.h:39
double * GetBounds() override=0
Return a reference to the Prop3D's composite transform.
an ordered list of Props
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:46
represent surface properties of a geometric object
Definition: vtkProperty.h:57
abstract specification for renderers
Definition: vtkRenderer.h:62
handles properties associated with a texture map
Definition: vtkTexture.h:58
abstract specification for Viewports
Definition: vtkViewport.h:45
represents the common properties for rendering a volume.
window superclass for vtkRenderWindow
Definition: vtkWindow.h:28
void GetBounds(T a, double bds[6])
@ level
Definition: vtkX3D.h:395
@ time
Definition: vtkX3D.h:497
@ index
Definition: vtkX3D.h:246
vtkProp3D * Prop3D
Definition: vtkLODProp3D.h:41
int vtkTypeBool
Definition: vtkABI.h:64
#define VTK_SIZEHINT(...)