VTK  9.3.0
vtkCompositePolyDataMapper2.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
16#ifndef vtkCompositePolyDataMapper2_h
17#define vtkCompositePolyDataMapper2_h
18
19#include "vtkDeprecation.h" // For VTK_DEPRECATED_IN_9_3_0
20#include "vtkRenderingOpenGL2Module.h" // For export macro
21#include "vtkSmartPointer.h" // for vtkSmartPointer
22#include "vtk_glew.h" // for OpenGL enums
23// clang-format off
24// Must be included after vtk_glew.h for GL_ES_VERSION_3_0
25#ifndef GL_ES_VERSION_3_0
27#define vtkOpenGLPolyDataMapperImplementation vtkOpenGLPolyDataMapper
28#else
30#define vtkOpenGLPolyDataMapperImplementation vtkOpenGLES30PolyDataMapper
31#endif
32// clang-format on
33
34#include "vtkColor.h" // used for ivars
35#include <map> // use for ivars
36#include <stack> // used for ivars
37#include <vector> // used for ivars
38
39VTK_ABI_NAMESPACE_BEGIN
43
44class VTK_DEPRECATED_IN_9_3_0("Please use vtkCompositePolyDataMapper instead")
45 VTKRENDERINGOPENGL2_EXPORT vtkCompositePolyDataMapper2
47{
48public:
51 void PrintSelf(ostream& os, vtkIndent indent) override;
52
54
59 bool HasOpaqueGeometry() override;
62
64
70
72
75 void SetBlockVisibility(unsigned int index, bool visible);
76 bool GetBlockVisibility(unsigned int index);
77 void RemoveBlockVisibility(unsigned int index);
80
82
85 void SetBlockColor(unsigned int index, const double color[3]);
86 void SetBlockColor(unsigned int index, double r, double g, double b)
87 {
88 double color[3] = { r, g, b };
89 this->SetBlockColor(index, color);
90 }
91 double* GetBlockColor(unsigned int index);
92 void RemoveBlockColor(unsigned int index);
95
97
100 void SetBlockOpacity(unsigned int index, double opacity);
101 double GetBlockOpacity(unsigned int index);
102 void RemoveBlockOpacity(unsigned int index);
105
112 vtkSetMacro(ColorMissingArraysWithNanColor, bool);
113 vtkGetMacro(ColorMissingArraysWithNanColor, bool);
114 vtkBooleanMacro(ColorMissingArraysWithNanColor, bool);
123
127 void Render(vtkRenderer* ren, vtkActor* act) override;
128
132 void SetVBOShiftScaleMethod(int m) override;
133
138 void SetPauseShiftScale(bool pauseShiftScale) override;
139
141
146 int idx, int port, int connection, int fieldAssociation, const char* name) override;
148 int idx, int port, int connection, int fieldAssociation, int fieldAttributeType) override;
149 void SetInputArrayToProcess(int idx, vtkInformation* info) override;
151
155 std::vector<vtkPolyData*> GetRenderedList() { return this->RenderedList; }
156
162 vtkHardwareSelector* sel, std::vector<unsigned int>& pixeloffsets, vtkProp* prop) override;
163
168
169protected:
172
179
183 int FillInputPortInformation(int port, vtkInformation* info) override;
184
188 void ComputeBounds() override;
189
195 vtkRenderer* vtkNotUsed(ren), vtkActor* vtkNotUsed(act))
196 {
197 }
198
203
204 // what "index" are we currently rendering, -1 means none
206 std::map<const std::string, vtkCompositeMapperHelper2*> Helpers;
207 std::map<vtkPolyData*, vtkCompositeMapperHelperData*> HelperDataMap;
209
211
212 // copy values to the helpers
214
216 {
217 public:
218 std::stack<bool> Visibility;
219 std::stack<bool> Pickability;
220 std::stack<double> Opacity;
221 std::stack<vtkColor3d> AmbientColor;
222 std::stack<vtkColor3d> DiffuseColor;
223 std::stack<vtkColor3d> SpecularColor;
224 std::stack<vtkColor3d> SelectionColor;
225 std::stack<float> SelectionOpacity;
226 };
227
228 bool RecursiveHasTranslucentGeometry(vtkDataObject* dobj, unsigned int& flat_index);
231
233 vtkRenderer* renderer, vtkActor* actor, vtkDataObject* dobj, unsigned int& flat_index);
235
238 vtkRenderer* renderer, vtkActor* actor, vtkDataObject* dobj, unsigned int& flat_index);
239
244
246
252
253 std::vector<vtkPolyData*> RenderedList;
254
255private:
256 double ColorResult[3];
257
259 void operator=(const vtkCompositePolyDataMapper2&) = delete;
260};
261
262VTK_ABI_NAMESPACE_END
263#endif
represents an object (geometry & properties) in a rendered scene
Definition vtkActor.h:41
virtual void SetInputArrayToProcess(int idx, int port, int connection, int fieldAssociation, const char *name)
Set the input data arrays that this algorithm will process.
Rendering attributes for a multi-block dataset.
Helper class for vtkCompositePolyDataMapper2 that is a subclass of vtkOpenGLPolyDataMapper.
mapper for composite dataset consisting of polygonal data.
void SetInputArrayToProcess(int idx, int port, int connection, int fieldAssociation, int fieldAttributeType) override
Call SetInputArrayToProcess on helpers.
void BuildRenderValues(vtkRenderer *renderer, vtkActor *actor, vtkDataObject *dobj, unsigned int &flat_index)
void RemoveBlockVisibility(unsigned int index)
Set/get the visibility for a block given its flat index.
int FillInputPortInformation(int port, vtkInformation *info) override
Need to define the type of data handled by this mapper.
~vtkCompositePolyDataMapper2() override
static vtkCompositePolyDataMapper2 * New()
void ProcessSelectorPixelBuffers(vtkHardwareSelector *sel, std::vector< unsigned int > &pixeloffsets, vtkProp *prop) override
allows a mapper to update a selections color buffers Called from a prop which in turn is called from ...
bool HasOpaqueGeometry() override
Some introspection on the type of data the mapper will render used by props to determine if they shou...
double GetBlockOpacity(unsigned int index)
Set/get the opacity for a block given its flat index.
void ReleaseGraphicsResources(vtkWindow *) override
Release any graphics resources that are being consumed by this mapper.
std::vector< vtkPolyData * > GetRenderedList()
Accessor to the ordered list of PolyData that we end last drew.
void SetBlockVisibility(unsigned int index, bool visible)
Set/get the visibility for a block given its flat index.
void SetInputArrayToProcess(int idx, int port, int connection, int fieldAssociation, const char *name) override
Call SetInputArrayToProcess on helpers.
double * GetBlockColor(unsigned int index)
Set/get the color for a block given its flat index.
vtkTimeStamp BoundsMTime
Time stamp for computation of bounds.
bool RecursiveHasTranslucentGeometry(vtkDataObject *dobj, unsigned int &flat_index)
void SetVBOShiftScaleMethod(int m) override
A convenience method for enabling/disabling the VBO's shift+scale transform.
std::map< vtkPolyData *, vtkCompositeMapperHelperData * > HelperDataMap
virtual void InitializeHelpersBeforeRendering(vtkRenderer *vtkNotUsed(ren), vtkActor *vtkNotUsed(act))
This method is called before RenderPiece is called on helpers.
void PrintSelf(ostream &os, vtkIndent indent) override
std::map< const std::string, vtkCompositeMapperHelper2 * > Helpers
void SetBlockOpacity(unsigned int index, double opacity)
Set/get the opacity for a block given its flat index.
void SetBlockColor(unsigned int index, const double color[3])
Set/get the color for a block given its flat index.
void SetPauseShiftScale(bool pauseShiftScale) override
Pause updates of shift-scale parameters based on camera position.
vtkCompositeDataDisplayAttributes * GetCompositeDataDisplayAttributes()
Set/get the composite data set attributes.
virtual void CopyMapperValuesToHelper(vtkCompositeMapperHelper2 *helper)
bool GetBlockVisibility(unsigned int index)
Set/get the visibility for a block given its flat index.
void RemoveBlockColor(unsigned int index)
Set/get the color for a block given its flat index.
bool ColorMissingArraysWithNanColor
If the current 'color by' array is missing on some datasets, color these dataset by the LookupTable's...
virtual vtkCompositeMapperHelper2 * CreateHelper()
void RemoveBlockVisibilities()
Set/get the visibility for a block given its flat index.
vtkExecutive * CreateDefaultExecutive() override
We need to override this method because the standard streaming demand driven pipeline is not what we ...
void SetInputArrayToProcess(int idx, vtkInformation *info) override
Call SetInputArrayToProcess on helpers.
void RemoveBlockColors()
Set/get the color for a block given its flat index.
vtkSmartPointer< vtkCompositeDataDisplayAttributes > CompositeAttributes
Composite data set attributes.
void RenderBlock(vtkRenderer *renderer, vtkActor *actor, vtkDataObject *dobj, unsigned int &flat_index)
bool HasTranslucentPolygonalGeometry() override
Some introspection on the type of data the mapper will render used by props to determine if they shou...
std::vector< vtkPolyData * > RenderedList
void Render(vtkRenderer *ren, vtkActor *act) override
This calls RenderPiece (in a for loop if streaming is necessary).
void SetBlockColor(unsigned int index, double r, double g, double b)
Set/get the color for a block given its flat index.
void RemoveBlockOpacity(unsigned int index)
Set/get the opacity for a block given its flat index.
void RemoveBlockOpacities()
Set/get the opacity for a block given its flat index.
void SetCompositeDataDisplayAttributes(vtkCompositeDataDisplayAttributes *attributes)
Set/get the composite data set attributes.
void ComputeBounds() override
Need to loop over the hierarchy to compute bounds.
vtkMTimeType GetMTime() override
Overridden to include vtkCompositeDataDisplayAttributes' mtime.
general representation of visualization data
Superclass for all pipeline executives in VTK.
a simple class to control print indentation
Definition vtkIndent.h:29
Store vtkAlgorithm input/output information.
abstract superclass for all actors, volumes and annotations
Definition vtkProp.h:43
abstract specification for renderers
Definition vtkRenderer.h:59
Hold a reference to a vtkObjectBase instance.
Class to make storing and comparing state quick and easy.
record modification and/or execution time
window superclass for vtkRenderWindow
Definition vtkWindow.h:25
#define vtkOpenGLPolyDataMapperImplementation
#define vtkOpenGLPolyDataMapperImplementation
#define VTK_DEPRECATED_IN_9_3_0(reason)
vtkTypeUInt32 vtkMTimeType
Definition vtkType.h:270