VTK  9.2.20230606
vtkProp.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkProp.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 =========================================================================*/
56 #ifndef vtkProp_h
57 #define vtkProp_h
58 
59 #include "vtkObject.h"
60 #include "vtkRenderingCoreModule.h" // For export macro
61 #include <vector> // for method args
62 
63 VTK_ABI_NAMESPACE_BEGIN
64 class vtkAssemblyPath;
65 class vtkAssemblyPaths;
67 class vtkMatrix4x4;
68 class vtkPropCollection;
69 class vtkViewport;
70 class vtkWindow;
71 class vtkInformation;
74 class vtkShaderProperty;
75 
76 class VTKRENDERINGCORE_EXPORT vtkProp : public vtkObject
77 {
78 public:
79  vtkTypeMacro(vtkProp, vtkObject);
80  void PrintSelf(ostream& os, vtkIndent indent) override;
81 
87  virtual void GetActors(vtkPropCollection*) {}
88  virtual void GetActors2D(vtkPropCollection*) {}
89  virtual void GetVolumes(vtkPropCollection*) {}
90 
92 
95  vtkSetMacro(Visibility, vtkTypeBool);
96  vtkGetMacro(Visibility, vtkTypeBool);
97  vtkBooleanMacro(Visibility, vtkTypeBool);
99 
101 
106  vtkSetMacro(Pickable, vtkTypeBool);
107  vtkGetMacro(Pickable, vtkTypeBool);
108  vtkBooleanMacro(Pickable, vtkTypeBool);
110 
114  virtual void Pick();
115 
117 
126  vtkSetMacro(Dragable, vtkTypeBool);
127  vtkGetMacro(Dragable, vtkTypeBool);
128  vtkBooleanMacro(Dragable, vtkTypeBool);
130 
137  virtual vtkMTimeType GetRedrawMTime() { return this->GetMTime(); }
138 
140 
146  vtkSetMacro(UseBounds, bool);
147  vtkGetMacro(UseBounds, bool);
148  vtkBooleanMacro(UseBounds, bool);
150 
155  virtual double* GetBounds() VTK_SIZEHINT(6) { return nullptr; }
156 
160  virtual void ShallowCopy(vtkProp* prop);
161 
163 
175  virtual void InitPathTraversal();
177  virtual int GetNumberOfPaths() { return 1; }
179 
185  virtual void PokeMatrix(vtkMatrix4x4* vtkNotUsed(matrix)) {}
186  virtual vtkMatrix4x4* GetMatrix() { return nullptr; }
187 
189 
196  vtkGetObjectMacro(PropertyKeys, vtkInformation);
197  virtual void SetPropertyKeys(vtkInformation* keys);
199 
204  virtual bool HasKeys(vtkInformation* requiredKeys);
205 
216 
227 
244  virtual int RenderOpaqueGeometry(vtkViewport*) { return 0; }
246  virtual int RenderVolumetricGeometry(vtkViewport*) { return 0; }
247  virtual int RenderOverlay(vtkViewport*) { return 0; }
248 
258  virtual bool RenderFilteredOpaqueGeometry(vtkViewport* v, vtkInformation* requiredKeys);
259 
271  vtkViewport* v, vtkInformation* requiredKeys);
272 
284 
295  virtual bool RenderFilteredOverlay(vtkViewport* v, vtkInformation* requiredKeys);
296 
309 
321  virtual vtkTypeBool HasOpaqueGeometry() { return 1; }
322 
330 
343  virtual double GetEstimatedRenderTime(vtkViewport*) { return this->EstimatedRenderTime; }
344  virtual double GetEstimatedRenderTime() { return this->EstimatedRenderTime; }
345 
353  virtual void SetEstimatedRenderTime(double t)
354  {
355  this->EstimatedRenderTime = t;
356  this->SavedEstimatedRenderTime = t;
357  }
358 
368  {
369  this->EstimatedRenderTime = this->SavedEstimatedRenderTime;
370  }
371 
385  virtual void AddEstimatedRenderTime(double t, vtkViewport* vtkNotUsed(vp))
386  {
387  this->EstimatedRenderTime += t;
388  }
389 
391 
401  virtual void SetAllocatedRenderTime(double t, vtkViewport* vtkNotUsed(v))
402  {
403  this->AllocatedRenderTime = t;
404  this->SavedEstimatedRenderTime = this->EstimatedRenderTime;
405  this->EstimatedRenderTime = 0.0;
406  }
408 
410 
414  vtkGetMacro(AllocatedRenderTime, double);
416 
424  void SetRenderTimeMultiplier(double t) { this->RenderTimeMultiplier = t; }
425  vtkGetMacro(RenderTimeMultiplier, double);
426 
432  virtual void BuildPaths(vtkAssemblyPaths* paths, vtkAssemblyPath* path);
433 
440  virtual bool GetSupportsSelection() { return false; }
441 
447  vtkHardwareSelector* /* sel */, std::vector<unsigned int>& /* pixeloffsets */)
448  {
449  }
450 
452 
455  vtkGetMacro(NumberOfConsumers, int);
457 
459 
467 
469 
472  virtual void SetShaderProperty(vtkShaderProperty* property);
475 
477  // Get if we are in the translucent polygonal geometry pass
478  virtual bool IsRenderingTranslucentPolygonalGeometry() { return false; }
480 
481 protected:
483  ~vtkProp() override;
484 
488  bool UseBounds;
489 
494 
495  // how many consumers does this object have
498 
499  // support multi-part props and access to paths of prop
500  // stuff that follows is used to build the assembly hierarchy
502 
504 
505  // User-defined shader replacement and uniform variables
507 
508 private:
509  vtkProp(const vtkProp&) = delete;
510  void operator=(const vtkProp&) = delete;
511 };
512 
513 VTK_ABI_NAMESPACE_END
514 #endif
a list of nodes that form an assembly path
a list of lists of props representing an assembly hierarchy
a simple class to control print indentation
Definition: vtkIndent.h:120
Key for integer values in vtkInformation.
Store vtkAlgorithm input/output information.
represent and manipulate 4x4 transformation matrices
Definition: vtkMatrix4x4.h:152
abstract base class for most VTK objects
Definition: vtkObject.h:83
virtual vtkMTimeType GetMTime()
Return this object's modified time.
an ordered list of Props
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:77
virtual vtkShaderProperty * GetShaderProperty()
Set/Get the shader property.
vtkObject * GetConsumer(int i)
Add or remove or get or check a consumer,.
virtual void PokeMatrix(vtkMatrix4x4 *vtkNotUsed(matrix))
These methods are used by subclasses to place a matrix (if any) in the prop prior to rendering.
Definition: vtkProp.h:185
virtual void ProcessSelectorPixelBuffers(vtkHardwareSelector *, std::vector< unsigned int > &)
allows a prop to update a selections color buffers
Definition: vtkProp.h:446
virtual vtkTypeBool HasOpaqueGeometry()
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THESE METHODS OUTSIDE OF THE RENDE...
Definition: vtkProp.h:321
virtual void BuildPaths(vtkAssemblyPaths *paths, vtkAssemblyPath *path)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
virtual bool RenderFilteredTranslucentPolygonalGeometry(vtkViewport *v, vtkInformation *requiredKeys)
Render the translucent polygonal geometry only if the prop has all the requiredKeys.
static vtkInformationIntegerKey * GeneralTextureUnit()
Optional Key Indicating the texture unit for general texture mapping Old OpenGL was a state machine w...
virtual double GetEstimatedRenderTime()
Definition: vtkProp.h:344
virtual bool RenderFilteredOverlay(vtkViewport *v, vtkInformation *requiredKeys)
Render in the overlay of the viewport only if the prop has all the requiredKeys.
vtkObject ** Consumers
Definition: vtkProp.h:497
virtual bool RenderFilteredVolumetricGeometry(vtkViewport *v, vtkInformation *requiredKeys)
Render the volumetric geometry only if the prop has all the requiredKeys.
~vtkProp() override
vtkAssemblyPaths * Paths
Definition: vtkProp.h:501
void SetRenderTimeMultiplier(double t)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
Definition: vtkProp.h:424
virtual vtkAssemblyPath * GetNextPath()
vtkProp and its subclasses can be picked by subclasses of vtkAbstractPicker (e.g.,...
virtual int GetNumberOfPaths()
vtkProp and its subclasses can be picked by subclasses of vtkAbstractPicker (e.g.,...
Definition: vtkProp.h:177
virtual void SetEstimatedRenderTime(double t)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THESE METHODS OUTSIDE OF THE RENDE...
Definition: vtkProp.h:353
virtual int RenderOpaqueGeometry(vtkViewport *)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THESE METHODS OUTSIDE OF THE RENDE...
Definition: vtkProp.h:244
virtual void Pick()
Method fires PickEvent if the prop is picked.
vtkInformation * PropertyKeys
Definition: vtkProp.h:503
bool UseBounds
Definition: vtkProp.h:488
vtkTypeBool Pickable
Definition: vtkProp.h:486
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:385
virtual bool GetSupportsSelection()
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
Definition: vtkProp.h:440
virtual vtkMatrix4x4 * GetMatrix()
Definition: vtkProp.h:186
int NumberOfConsumers
Definition: vtkProp.h:496
void RemoveConsumer(vtkObject *c)
Add or remove or get or check a consumer,.
virtual double * GetBounds()
Get the bounds for this Prop as (Xmin,Xmax,Ymin,Ymax,Zmin,Zmax).
Definition: vtkProp.h:155
double SavedEstimatedRenderTime
Definition: vtkProp.h:492
virtual vtkTypeBool HasTranslucentPolygonalGeometry()
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THESE METHODS OUTSIDE OF THE RENDE...
Definition: vtkProp.h:308
vtkTypeBool Dragable
Definition: vtkProp.h:487
virtual void InitPathTraversal()
vtkProp and its subclasses can be picked by subclasses of vtkAbstractPicker (e.g.,...
int IsConsumer(vtkObject *c)
Add or remove or get or check a consumer,.
double EstimatedRenderTime
Definition: vtkProp.h:491
virtual int RenderVolumetricGeometry(vtkViewport *)
Definition: vtkProp.h:246
void AddConsumer(vtkObject *c)
Add or remove or get or check a consumer,.
static vtkInformationDoubleVectorKey * GeneralTextureTransform()
Optional Key Indicating the texture transform for general texture mapping Old OpenGL was a state mach...
virtual int RenderTranslucentPolygonalGeometry(vtkViewport *)
Definition: vtkProp.h:245
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:401
virtual void SetPropertyKeys(vtkInformation *keys)
Set/Get property keys.
virtual bool RenderFilteredOpaqueGeometry(vtkViewport *v, vtkInformation *requiredKeys)
Render the opaque geometry only if the prop has all the requiredKeys.
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:87
vtkTypeBool Visibility
Definition: vtkProp.h:485
virtual int RenderOverlay(vtkViewport *)
Definition: vtkProp.h:247
virtual bool HasKeys(vtkInformation *requiredKeys)
Tells if the prop has all the required keys.
virtual void GetVolumes(vtkPropCollection *)
Definition: vtkProp.h:89
double RenderTimeMultiplier
Definition: vtkProp.h:493
vtkShaderProperty * ShaderProperty
Definition: vtkProp.h:506
virtual vtkMTimeType GetRedrawMTime()
Return the mtime of anything that would cause the rendered image to appear differently.
Definition: vtkProp.h:137
virtual double GetEstimatedRenderTime(vtkViewport *)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THESE METHODS OUTSIDE OF THE RENDE...
Definition: vtkProp.h:343
double AllocatedRenderTime
Definition: vtkProp.h:490
virtual void SetShaderProperty(vtkShaderProperty *property)
Set/Get the shader property.
virtual void ShallowCopy(vtkProp *prop)
Shallow copy of this vtkProp.
virtual void ReleaseGraphicsResources(vtkWindow *)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Release any graphics resources that are being...
Definition: vtkProp.h:329
virtual void RestoreEstimatedRenderTime()
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THESE METHODS OUTSIDE OF THE RENDE...
Definition: vtkProp.h:367
virtual void GetActors2D(vtkPropCollection *)
Definition: vtkProp.h:88
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual bool IsRenderingTranslucentPolygonalGeometry()
Definition: vtkProp.h:478
represent GPU shader properties
abstract specification for Viewports
Definition: vtkViewport.h:57
window superclass for vtkRenderWindow
Definition: vtkWindow.h:40
int vtkTypeBool
Definition: vtkABI.h:71
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:282
#define VTK_SIZEHINT(...)