VTK  9.1.0
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=========================================================================*/
47#ifndef vtkProp_h
48#define vtkProp_h
49
50#include "vtkObject.h"
51#include "vtkRenderingCoreModule.h" // For export macro
52#include <vector> // for method args
53
54class vtkAssemblyPath;
57class vtkMatrix4x4;
59class vtkViewport;
60class vtkWindow;
61class vtkInformation;
65
66class VTKRENDERINGCORE_EXPORT vtkProp : public vtkObject
67{
68public:
69 vtkTypeMacro(vtkProp, vtkObject);
70 void PrintSelf(ostream& os, vtkIndent indent) override;
71
77 virtual void GetActors(vtkPropCollection*) {}
79 virtual void GetVolumes(vtkPropCollection*) {}
80
82
85 vtkSetMacro(Visibility, vtkTypeBool);
86 vtkGetMacro(Visibility, vtkTypeBool);
87 vtkBooleanMacro(Visibility, vtkTypeBool);
89
91
96 vtkSetMacro(Pickable, vtkTypeBool);
97 vtkGetMacro(Pickable, vtkTypeBool);
98 vtkBooleanMacro(Pickable, vtkTypeBool);
100
104 virtual void Pick();
105
107
116 vtkSetMacro(Dragable, vtkTypeBool);
117 vtkGetMacro(Dragable, vtkTypeBool);
118 vtkBooleanMacro(Dragable, vtkTypeBool);
120
127 virtual vtkMTimeType GetRedrawMTime() { return this->GetMTime(); }
128
130
136 vtkSetMacro(UseBounds, bool);
137 vtkGetMacro(UseBounds, bool);
138 vtkBooleanMacro(UseBounds, bool);
140
145 virtual double* GetBounds() VTK_SIZEHINT(6) { return nullptr; }
146
150 virtual void ShallowCopy(vtkProp* prop);
151
153
165 virtual void InitPathTraversal();
167 virtual int GetNumberOfPaths() { return 1; }
169
175 virtual void PokeMatrix(vtkMatrix4x4* vtkNotUsed(matrix)) {}
176 virtual vtkMatrix4x4* GetMatrix() { return nullptr; }
177
179
186 vtkGetObjectMacro(PropertyKeys, vtkInformation);
187 virtual void SetPropertyKeys(vtkInformation* keys);
189
194 virtual bool HasKeys(vtkInformation* requiredKeys);
195
206
217
234 virtual int RenderOpaqueGeometry(vtkViewport*) { return 0; }
236 virtual int RenderVolumetricGeometry(vtkViewport*) { return 0; }
237 virtual int RenderOverlay(vtkViewport*) { return 0; }
238
249
261 vtkViewport* v, vtkInformation* requiredKeys);
262
274
285 virtual bool RenderFilteredOverlay(vtkViewport* v, vtkInformation* requiredKeys);
286
299
311 virtual vtkTypeBool HasOpaqueGeometry() { return 1; }
312
320
333 virtual double GetEstimatedRenderTime(vtkViewport*) { return this->EstimatedRenderTime; }
334 virtual double GetEstimatedRenderTime() { return this->EstimatedRenderTime; }
335
343 virtual void SetEstimatedRenderTime(double t)
344 {
345 this->EstimatedRenderTime = t;
346 this->SavedEstimatedRenderTime = t;
347 }
348
358 {
359 this->EstimatedRenderTime = this->SavedEstimatedRenderTime;
360 }
361
375 virtual void AddEstimatedRenderTime(double t, vtkViewport* vtkNotUsed(vp))
376 {
377 this->EstimatedRenderTime += t;
378 }
379
381
391 virtual void SetAllocatedRenderTime(double t, vtkViewport* vtkNotUsed(v))
392 {
393 this->AllocatedRenderTime = t;
394 this->SavedEstimatedRenderTime = this->EstimatedRenderTime;
395 this->EstimatedRenderTime = 0.0;
396 }
398
400
404 vtkGetMacro(AllocatedRenderTime, double);
406
414 void SetRenderTimeMultiplier(double t) { this->RenderTimeMultiplier = t; }
415 vtkGetMacro(RenderTimeMultiplier, double);
416
422 virtual void BuildPaths(vtkAssemblyPaths* paths, vtkAssemblyPath* path);
423
430 virtual bool GetSupportsSelection() { return false; }
431
437 vtkHardwareSelector* /* sel */, std::vector<unsigned int>& /* pixeloffsets */)
438 {
439 }
440
442
445 vtkGetMacro(NumberOfConsumers, int);
447
449
457
459
462 virtual void SetShaderProperty(vtkShaderProperty* property);
465
467 // Get if we are in the translucent polygonal geometry pass
468 virtual bool IsRenderingTranslucentPolygonalGeometry() { return false; }
470
471protected:
473 ~vtkProp() override;
474
479
484
485 // how many consumers does this object have
488
489 // support multi-part props and access to paths of prop
490 // stuff that follows is used to build the assembly hierarchy
492
494
495 // User-defined shader replacement and uniform variables
497
498private:
499 vtkProp(const vtkProp&) = delete;
500 void operator=(const vtkProp&) = delete;
501};
502
503#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:113
Key for integer values in vtkInformation.
Store vtkAlgorithm input/output information.
represent and manipulate 4x4 transformation matrices
Definition: vtkMatrix4x4.h:145
abstract base class for most VTK objects
Definition: vtkObject.h:73
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:67
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:175
virtual void ProcessSelectorPixelBuffers(vtkHardwareSelector *, std::vector< unsigned int > &)
allows a prop to update a selections color buffers
Definition: vtkProp.h:436
static vtkInformationDoubleVectorKey * GeneralTextureTransform()
Optional Key Indicating the texture transform for general texture mapping Old OpenGL was a state mach...
virtual vtkTypeBool HasOpaqueGeometry()
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THESE METHODS OUTSIDE OF THE RENDE...
Definition: vtkProp.h:311
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 vtkShaderProperty * GetShaderProperty()
Set/Get the shader property.
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:334
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:487
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:491
void SetRenderTimeMultiplier(double t)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
Definition: vtkProp.h:414
virtual int GetNumberOfPaths()
vtkProp and its subclasses can be picked by subclasses of vtkAbstractPicker (e.g.,...
Definition: vtkProp.h:167
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:343
virtual int RenderOpaqueGeometry(vtkViewport *)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THESE METHODS OUTSIDE OF THE RENDE...
Definition: vtkProp.h:234
virtual void Pick()
Method fires PickEvent if the prop is picked.
vtkInformation * PropertyKeys
Definition: vtkProp.h:493
bool UseBounds
Definition: vtkProp.h:478
vtkTypeBool Pickable
Definition: vtkProp.h:476
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:375
virtual bool GetSupportsSelection()
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THIS METHOD OUTSIDE OF THE RENDERI...
Definition: vtkProp.h:430
virtual vtkAssemblyPath * GetNextPath()
vtkProp and its subclasses can be picked by subclasses of vtkAbstractPicker (e.g.,...
int NumberOfConsumers
Definition: vtkProp.h:486
void RemoveConsumer(vtkObject *c)
Add or remove or get or check a consumer,.
double SavedEstimatedRenderTime
Definition: vtkProp.h:482
virtual vtkTypeBool HasTranslucentPolygonalGeometry()
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THESE METHODS OUTSIDE OF THE RENDE...
Definition: vtkProp.h:298
vtkTypeBool Dragable
Definition: vtkProp.h:477
virtual void InitPathTraversal()
vtkProp and its subclasses can be picked by subclasses of vtkAbstractPicker (e.g.,...
vtkObject * GetConsumer(int i)
Add or remove or get or check a consumer,.
int IsConsumer(vtkObject *c)
Add or remove or get or check a consumer,.
static vtkInformationIntegerKey * GeneralTextureUnit()
Optional Key Indicating the texture unit for general texture mapping Old OpenGL was a state machine w...
double EstimatedRenderTime
Definition: vtkProp.h:481
virtual int RenderVolumetricGeometry(vtkViewport *)
Definition: vtkProp.h:236
virtual vtkMatrix4x4 * GetMatrix()
Definition: vtkProp.h:176
virtual double * GetBounds()
Get the bounds for this Prop as (Xmin,Xmax,Ymin,Ymax,Zmin,Zmax).
Definition: vtkProp.h:145
void AddConsumer(vtkObject *c)
Add or remove or get or check a consumer,.
virtual int RenderTranslucentPolygonalGeometry(vtkViewport *)
Definition: vtkProp.h:235
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:391
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:77
vtkTypeBool Visibility
Definition: vtkProp.h:475
virtual int RenderOverlay(vtkViewport *)
Definition: vtkProp.h:237
virtual bool HasKeys(vtkInformation *requiredKeys)
Tells if the prop has all the required keys.
virtual void GetVolumes(vtkPropCollection *)
Definition: vtkProp.h:79
double RenderTimeMultiplier
Definition: vtkProp.h:483
vtkShaderProperty * ShaderProperty
Definition: vtkProp.h:496
virtual vtkMTimeType GetRedrawMTime()
Return the mtime of anything that would cause the rendered image to appear differently.
Definition: vtkProp.h:127
virtual double GetEstimatedRenderTime(vtkViewport *)
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THESE METHODS OUTSIDE OF THE RENDE...
Definition: vtkProp.h:333
double AllocatedRenderTime
Definition: vtkProp.h:480
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:319
virtual void RestoreEstimatedRenderTime()
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THESE METHODS OUTSIDE OF THE RENDE...
Definition: vtkProp.h:357
virtual void GetActors2D(vtkPropCollection *)
Definition: vtkProp.h:78
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:468
represent GPU shader properties
abstract specification for Viewports
Definition: vtkViewport.h:47
window superclass for vtkRenderWindow
Definition: vtkWindow.h:36
int vtkTypeBool
Definition: vtkABI.h:69
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:287
#define VTK_SIZEHINT(...)