VTK  9.3.20240416
vtkProp.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
44 #ifndef vtkProp_h
45 #define vtkProp_h
46 
47 #include "vtkObject.h"
48 #include "vtkRenderingCoreModule.h" // For export macro
49 #include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
50 #include <vector> // for method args
51 
52 VTK_ABI_NAMESPACE_BEGIN
53 class vtkAssemblyPath;
54 class vtkAssemblyPaths;
56 class vtkMatrix4x4;
57 class vtkPropCollection;
58 class vtkViewport;
59 class vtkWindow;
60 class vtkInformation;
63 class vtkShaderProperty;
64 
65 class VTKRENDERINGCORE_EXPORT VTK_MARSHALAUTO vtkProp : public vtkObject
66 {
67 public:
68  vtkTypeMacro(vtkProp, vtkObject);
69  void PrintSelf(ostream& os, vtkIndent indent) override;
70 
76  virtual void GetActors(vtkPropCollection*) {}
77  virtual void GetActors2D(vtkPropCollection*) {}
78  virtual void GetVolumes(vtkPropCollection*) {}
79 
81 
84  vtkSetMacro(Visibility, vtkTypeBool);
85  vtkGetMacro(Visibility, vtkTypeBool);
86  vtkBooleanMacro(Visibility, vtkTypeBool);
88 
90 
95  vtkSetMacro(Pickable, vtkTypeBool);
96  vtkGetMacro(Pickable, vtkTypeBool);
97  vtkBooleanMacro(Pickable, vtkTypeBool);
99 
103  virtual void Pick();
104 
106 
115  vtkSetMacro(Dragable, vtkTypeBool);
116  vtkGetMacro(Dragable, vtkTypeBool);
117  vtkBooleanMacro(Dragable, vtkTypeBool);
119 
126  virtual vtkMTimeType GetRedrawMTime() { return this->GetMTime(); }
127 
129 
135  vtkSetMacro(UseBounds, bool);
136  vtkGetMacro(UseBounds, bool);
137  vtkBooleanMacro(UseBounds, bool);
139 
144  virtual double* GetBounds() VTK_SIZEHINT(6) { return nullptr; }
145 
149  virtual void ShallowCopy(vtkProp* prop);
150 
152 
164  virtual void InitPathTraversal();
166  virtual int GetNumberOfPaths() { return 1; }
168 
174  virtual void PokeMatrix(vtkMatrix4x4* vtkNotUsed(matrix)) {}
175  virtual vtkMatrix4x4* GetMatrix() { return nullptr; }
176 
178 
186  vtkGetObjectMacro(PropertyKeys, vtkInformation);
188  virtual void SetPropertyKeys(vtkInformation* keys);
190 
195  virtual bool HasKeys(vtkInformation* requiredKeys);
196 
206  static vtkInformationIntegerKey* GeneralTextureUnit();
207 
217  static vtkInformationDoubleVectorKey* GeneralTextureTransform();
218 
235  virtual int RenderOpaqueGeometry(vtkViewport*) { return 0; }
237  virtual int RenderVolumetricGeometry(vtkViewport*) { return 0; }
238  virtual int RenderOverlay(vtkViewport*) { return 0; }
239 
249  virtual bool RenderFilteredOpaqueGeometry(vtkViewport* v, vtkInformation* requiredKeys);
250 
262  vtkViewport* v, vtkInformation* requiredKeys);
263 
275 
286  virtual bool RenderFilteredOverlay(vtkViewport* v, vtkInformation* requiredKeys);
287 
300 
312  virtual vtkTypeBool HasOpaqueGeometry() { return 1; }
313 
321 
334  virtual double GetEstimatedRenderTime(vtkViewport*) { return this->EstimatedRenderTime; }
335  virtual double GetEstimatedRenderTime() { return this->EstimatedRenderTime; }
336 
344  virtual void SetEstimatedRenderTime(double t)
345  {
346  this->EstimatedRenderTime = t;
347  this->SavedEstimatedRenderTime = t;
348  }
349 
359  {
360  this->EstimatedRenderTime = this->SavedEstimatedRenderTime;
361  }
362 
376  virtual void AddEstimatedRenderTime(double t, vtkViewport* vtkNotUsed(vp))
377  {
378  this->EstimatedRenderTime += t;
379  }
380 
382 
392  virtual void SetAllocatedRenderTime(double t, vtkViewport* vtkNotUsed(v))
393  {
394  this->AllocatedRenderTime = t;
395  this->SavedEstimatedRenderTime = this->EstimatedRenderTime;
396  this->EstimatedRenderTime = 0.0;
397  }
399 
401 
405  vtkGetMacro(AllocatedRenderTime, double);
407 
415  void SetRenderTimeMultiplier(double t) { this->RenderTimeMultiplier = t; }
416  vtkGetMacro(RenderTimeMultiplier, double);
417 
423  virtual void BuildPaths(vtkAssemblyPaths* paths, vtkAssemblyPath* path);
424 
431  virtual bool GetSupportsSelection() { return false; }
432 
438  vtkHardwareSelector* /* sel */, std::vector<unsigned int>& /* pixeloffsets */)
439  {
440  }
441 
443 
446  vtkGetMacro(NumberOfConsumers, int);
448 
450 
458 
460 
463  virtual void SetShaderProperty(vtkShaderProperty* property);
466 
468  // Get if we are in the translucent polygonal geometry pass
469  virtual bool IsRenderingTranslucentPolygonalGeometry() { return false; }
471 
472 protected:
474  ~vtkProp() override;
475 
479  bool UseBounds;
480 
485 
486  // how many consumers does this object have
489 
490  // support multi-part props and access to paths of prop
491  // stuff that follows is used to build the assembly hierarchy
493 
495 
496  // User-defined shader replacement and uniform variables
498 
499 private:
500  vtkProp(const vtkProp&) = delete;
501  void operator=(const vtkProp&) = delete;
502 };
503 
504 VTK_ABI_NAMESPACE_END
505 #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:108
Key for integer values in vtkInformation.
Store vtkAlgorithm input/output information.
represent and manipulate 4x4 transformation matrices
Definition: vtkMatrix4x4.h:141
abstract base class for most VTK objects
Definition: vtkObject.h:162
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:66
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:174
virtual void ProcessSelectorPixelBuffers(vtkHardwareSelector *, std::vector< unsigned int > &)
allows a prop to update a selections color buffers
Definition: vtkProp.h:437
virtual vtkTypeBool HasOpaqueGeometry()
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THESE METHODS OUTSIDE OF THE RENDE...
Definition: vtkProp.h:312
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.
virtual double GetEstimatedRenderTime()
Definition: vtkProp.h:335
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:488
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:492
void SetRenderTimeMultiplier(double t)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
Definition: vtkProp.h:415
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:166
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:344
virtual void Pick()
Method fires PickEvent if the prop is picked.
vtkInformation * PropertyKeys
Definition: vtkProp.h:494
bool UseBounds
Definition: vtkProp.h:479
vtkTypeBool Pickable
Definition: vtkProp.h:477
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:376
virtual bool GetSupportsSelection()
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
Definition: vtkProp.h:431
virtual vtkMatrix4x4 * GetMatrix()
Definition: vtkProp.h:175
int NumberOfConsumers
Definition: vtkProp.h:487
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:144
double SavedEstimatedRenderTime
Definition: vtkProp.h:483
virtual vtkTypeBool HasTranslucentPolygonalGeometry()
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THESE METHODS OUTSIDE OF THE RENDE...
Definition: vtkProp.h:299
vtkTypeBool Dragable
Definition: vtkProp.h:478
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:482
virtual int RenderVolumetricGeometry(vtkViewport *)
Definition: vtkProp.h:237
void AddConsumer(vtkObject *c)
Add or remove or get or check a consumer,.
virtual int RenderTranslucentPolygonalGeometry(vtkViewport *)
Definition: vtkProp.h:236
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:392
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:76
vtkTypeBool Visibility
Definition: vtkProp.h:476
virtual int RenderOverlay(vtkViewport *)
Definition: vtkProp.h:238
virtual void GetVolumes(vtkPropCollection *)
Definition: vtkProp.h:78
double RenderTimeMultiplier
Definition: vtkProp.h:484
vtkShaderProperty * ShaderProperty
Definition: vtkProp.h:497
virtual vtkMTimeType GetRedrawMTime()
Return the mtime of anything that would cause the rendered image to appear differently.
Definition: vtkProp.h:126
virtual double GetEstimatedRenderTime(vtkViewport *)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THESE METHODS OUTSIDE OF THE RENDE...
Definition: vtkProp.h:334
double AllocatedRenderTime
Definition: vtkProp.h:481
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:320
virtual void RestoreEstimatedRenderTime()
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THESE METHODS OUTSIDE OF THE RENDE...
Definition: vtkProp.h:358
virtual void GetActors2D(vtkPropCollection *)
Definition: vtkProp.h:77
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:469
represent GPU shader properties
abstract specification for Viewports
Definition: vtkViewport.h:65
window superclass for vtkRenderWindow
Definition: vtkWindow.h:48
int vtkTypeBool
Definition: vtkABI.h:64
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:270
#define VTK_SIZEHINT(...)
#define VTK_MARSHAL_EXCLUDE_REASON_NOT_SUPPORTED
#define VTK_MARSHALAUTO
#define VTK_MARSHALEXCLUDE(reason)