VTK
vtkLODProp3D.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkLODProp3D.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
30 #ifndef vtkLODProp3D_h
31 #define vtkLODProp3D_h
32 
33 #include "vtkRenderingCoreModule.h" // For export macro
34 #include "vtkProp3D.h"
35 
36 class vtkRenderer;
37 class vtkMapper;
40 class vtkImageMapper3D;
41 class vtkProperty;
42 class vtkVolumeProperty;
43 class vtkImageProperty;
44 class vtkTexture;
45 class vtkLODProp3DCallback;
46 
47 typedef struct
48 {
51  int ID;
52  double EstimatedTime;
53  int State;
54  double Level;
56 
57 class VTKRENDERINGCORE_EXPORT vtkLODProp3D : public vtkProp3D
58 {
59 public:
63  static vtkLODProp3D *New();
64 
65  vtkTypeMacro(vtkLODProp3D, vtkProp3D);
66  void PrintSelf(ostream& os, vtkIndent indent) override;
67 
71  double *GetBounds() VTK_SIZEHINT(6) override;
72  void GetBounds(double bounds[6])
73  { this->vtkProp3D::GetBounds( bounds ); }
74 
76 
85  int AddLOD( vtkMapper *m, vtkProperty *p, vtkProperty *back,
86  vtkTexture *t, double time );
87  int AddLOD( vtkMapper *m, vtkProperty *p, vtkTexture *t, double time );
88  int AddLOD( vtkMapper *m, vtkProperty *p, vtkProperty *back, double time );
89  int AddLOD( vtkMapper *m, vtkProperty *p, double time );
90  int AddLOD( vtkMapper *m, vtkTexture *t, double time );
91  int AddLOD( vtkMapper *m, double time );
92  int AddLOD( vtkAbstractVolumeMapper *m, vtkVolumeProperty *p, double time );
93  int AddLOD( vtkAbstractVolumeMapper *m, double time );
94  int AddLOD( vtkImageMapper3D *m, vtkImageProperty *p, double time );
95  int AddLOD( vtkImageMapper3D *m, double time );
97 
99 
102  vtkGetMacro(NumberOfLODs, int);
104 
106 
111  vtkGetMacro(CurrentIndex, int);
113 
118  void RemoveLOD(int id);
119 
121 
127  void SetLODProperty(int id, vtkProperty *p);
128  void GetLODProperty(int id, vtkProperty **p);
129  void SetLODProperty(int id, vtkVolumeProperty *p);
130  void GetLODProperty(int id, vtkVolumeProperty **p);
131  void SetLODProperty(int id, vtkImageProperty *p);
132  void GetLODProperty(int id, vtkImageProperty **p);
134 
136 
142  void SetLODMapper(int id, vtkMapper *m);
143  void GetLODMapper(int id, vtkMapper **m);
144  void SetLODMapper(int id, vtkAbstractVolumeMapper *m);
145  void GetLODMapper(int id, vtkAbstractVolumeMapper **m);
146  void SetLODMapper(int id, vtkImageMapper3D *m);
147  void GetLODMapper(int id, vtkImageMapper3D **m);
149 
155  vtkAbstractMapper3D *GetLODMapper(int id);
156 
158 
162  void SetLODBackfaceProperty(int id, vtkProperty *t);
163  void GetLODBackfaceProperty(int id, vtkProperty **t);
165 
167 
171  void SetLODTexture(int id, vtkTexture *t);
172  void GetLODTexture(int id, vtkTexture **t);
174 
176 
181  void EnableLOD(int id);
182  void DisableLOD(int id);
183  int IsLODEnabled(int id);
185 
187 
195  void SetLODLevel(int id, double level);
196  double GetLODLevel(int id );
197  double GetLODIndexLevel(int index);
199 
201 
206  double GetLODEstimatedRenderTime(int id);
207  double GetLODIndexEstimatedRenderTime(int index);
209 
211 
216  vtkSetClampMacro(AutomaticLODSelection, vtkTypeBool, 0, 1);
217  vtkGetMacro(AutomaticLODSelection, vtkTypeBool);
218  vtkBooleanMacro(AutomaticLODSelection, vtkTypeBool);
220 
222 
226  vtkSetMacro(SelectedLODID, int);
227  vtkGetMacro(SelectedLODID, int);
229 
233  int GetLastRenderedLODID();
234 
238  int GetPickLODID(void);
239 
241 
246  void GetActors(vtkPropCollection *) override;
247  void GetVolumes(vtkPropCollection *) override;
249 
251 
255  void SetSelectedPickLODID(int id);
256  vtkGetMacro(SelectedPickLODID, int);
258 
260 
265  vtkSetClampMacro(AutomaticPickLODSelection, vtkTypeBool, 0, 1);
266  vtkGetMacro(AutomaticPickLODSelection, vtkTypeBool);
267  vtkBooleanMacro(AutomaticPickLODSelection, vtkTypeBool);
269 
273  void ShallowCopy(vtkProp *prop) override;
274 
276 
279  int RenderOpaqueGeometry(vtkViewport *viewport) override;
281  int RenderVolumetricGeometry( vtkViewport *ren) override;
283 
288 
294  void ReleaseGraphicsResources(vtkWindow *) override;
295 
301  void SetAllocatedRenderTime( double t, vtkViewport *vp ) override;
302 
309  void RestoreEstimatedRenderTime( ) override;
310 
315  void AddEstimatedRenderTime( double t, vtkViewport *vp ) override;
316 
317 protected:
318  vtkLODProp3D();
319  ~vtkLODProp3D() override;
320 
321  int GetAutomaticPickPropIndex(void);
322 
323  // Assumes that SelectedLODIndex has already been validated:
324  void UpdateKeysForSelectedProp();
325 
330 
331  int GetNextEntryIndex();
332  int ConvertIDToIndex( int id );
334 
339  vtkLODProp3DCallback *PickCallback;
340 
341 private:
342  vtkLODProp3D(const vtkLODProp3D&) = delete;
343  void operator=(const vtkLODProp3D&) = delete;
344 };
345 
346 #endif
vtkTypeBool AutomaticLODSelection
Definition: vtkLODProp3D.h:335
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:52
vtkProp3D * Prop3D
Definition: vtkLODProp3D.h:49
double * GetBounds() override=0
Return a reference to the Prop3D's composite transform.
abstract specification for Viewports
Definition: vtkViewport.h:47
represent surface properties of a geometric object
Definition: vtkProperty.h:66
vtkLODProp3DEntry * LODs
Definition: vtkLODProp3D.h:326
virtual int RenderOpaqueGeometry(vtkViewport *)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THESE METHODS OUTSIDE OF THE RENDE...
Definition: vtkProp.h:224
virtual vtkTypeBool HasTranslucentPolygonalGeometry()
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THESE METHODS OUTSIDE OF THE RENDE...
Definition: vtkProp.h:296
virtual void SetAllocatedRenderTime(double t, vtkViewport *vtkNotUsed(v))
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
Definition: vtkProp.h:373
image display properties
Abstract class for a volume mapper.
abstract specification for renderers
Definition: vtkRenderer.h:63
represents an 3D object for placement in a rendered scene
Definition: vtkProp3D.h:46
virtual void AddEstimatedRenderTime(double t, vtkViewport *vtkNotUsed(vp))
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
Definition: vtkProp.h:359
int SelectedPickLODID
Definition: vtkLODProp3D.h:337
an ordered list of Props
int vtkTypeBool
Definition: vtkABI.h:69
virtual void ReleaseGraphicsResources(vtkWindow *)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Release any graphics resources that are being...
Definition: vtkProp.h:305
window superclass for vtkRenderWindow
Definition: vtkWindow.h:37
vtkTypeBool AutomaticPickLODSelection
Definition: vtkLODProp3D.h:338
vtkLODProp3DCallback * PickCallback
Definition: vtkLODProp3D.h:339
virtual int RenderVolumetricGeometry(vtkViewport *)
Definition: vtkProp.h:228
int SelectedLODIndex
Definition: vtkLODProp3D.h:333
a simple class to control print indentation
Definition: vtkIndent.h:39
abstract class for mapping images to the screen
void ShallowCopy(vtkProp *prop) override
Shallow copy of this vtkProp3D.
virtual void GetVolumes(vtkPropCollection *)
Definition: vtkProp.h:65
handles properties associated with a texture map
Definition: vtkTexture.h:71
abstract class specifies interface to map 3D data
#define VTK_SIZEHINT(...)
represents the common properties for rendering a volume.
abstract class specifies interface to map data to graphics primitives
Definition: vtkMapper.h:86
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
level of detail 3D prop
Definition: vtkLODProp3D.h:57
virtual int RenderTranslucentPolygonalGeometry(vtkViewport *)
Definition: vtkProp.h:226
virtual void RestoreEstimatedRenderTime()
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THESE METHODS OUTSIDE OF THE RENDE...
Definition: vtkProp.h:342
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
virtual void GetActors(vtkPropCollection *)
For some exporters and other other operations we must be able to collect all the actors or volumes...
Definition: vtkProp.h:63