VTK  9.2.5
vtkCompositePolyDataMapper2.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkCompositePolyDataMapper2.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 =========================================================================*/
60 #ifndef vtkCompositePolyDataMapper2_h
61 #define vtkCompositePolyDataMapper2_h
62 
64 #include "vtkRenderingOpenGL2Module.h" // For export macro
65 #include "vtkSmartPointer.h" // for vtkSmartPointer
66 
67 #include "vtkColor.h" // used for ivars
68 #include <map> // use for ivars
69 #include <stack> // used for ivars
70 #include <vector> // used for ivars
71 
75 
76 class VTKRENDERINGOPENGL2_EXPORT vtkCompositePolyDataMapper2 : public vtkOpenGLPolyDataMapper
77 {
78 public:
81  void PrintSelf(ostream& os, vtkIndent indent) override;
82 
84 
89  bool HasOpaqueGeometry() override;
92 
94 
100 
102 
105  void SetBlockVisibility(unsigned int index, bool visible);
106  bool GetBlockVisibility(unsigned int index);
107  void RemoveBlockVisibility(unsigned int index);
110 
112 
115  void SetBlockColor(unsigned int index, const double color[3]);
116  void SetBlockColor(unsigned int index, double r, double g, double b)
117  {
118  double color[3] = { r, g, b };
119  this->SetBlockColor(index, color);
120  }
121  double* GetBlockColor(unsigned int index);
122  void RemoveBlockColor(unsigned int index);
125 
127 
130  void SetBlockOpacity(unsigned int index, double opacity);
131  double GetBlockOpacity(unsigned int index);
132  void RemoveBlockOpacity(unsigned int index);
135 
142  vtkSetMacro(ColorMissingArraysWithNanColor, bool);
143  vtkGetMacro(ColorMissingArraysWithNanColor, bool);
144  vtkBooleanMacro(ColorMissingArraysWithNanColor, bool);
153 
157  void Render(vtkRenderer* ren, vtkActor* act) override;
158 
162  void SetVBOShiftScaleMethod(int m) override;
163 
168  void SetPauseShiftScale(bool pauseShiftScale) override;
169 
171 
176  int idx, int port, int connection, int fieldAssociation, const char* name) override;
178  int idx, int port, int connection, int fieldAssociation, int fieldAttributeType) override;
179  void SetInputArrayToProcess(int idx, vtkInformation* info) override;
181 
185  std::vector<vtkPolyData*> GetRenderedList() { return this->RenderedList; }
186 
192  vtkHardwareSelector* sel, std::vector<unsigned int>& pixeloffsets, vtkProp* prop) override;
193 
197  vtkMTimeType GetMTime() override;
198 
199 protected:
202 
209 
214 
218  void ComputeBounds() override;
219 
225  vtkRenderer* vtkNotUsed(ren), vtkActor* vtkNotUsed(act))
226  {
227  }
228 
233 
234  // what "index" are we currently rendering, -1 means none
236  std::map<const std::string, vtkCompositeMapperHelper2*> Helpers;
237  std::map<vtkPolyData*, vtkCompositeMapperHelperData*> HelperDataMap;
239 
241 
242  // copy values to the helpers
244 
246  {
247  public:
248  std::stack<bool> Visibility;
249  std::stack<bool> Pickability;
250  std::stack<double> Opacity;
251  std::stack<vtkColor3d> AmbientColor;
252  std::stack<vtkColor3d> DiffuseColor;
253  std::stack<vtkColor3d> SpecularColor;
254  std::stack<vtkColor3d> SelectionColor;
255  std::stack<float> SelectionOpacity;
256  };
257 
258  bool RecursiveHasTranslucentGeometry(vtkDataObject* dobj, unsigned int& flat_index);
261 
263  vtkRenderer* renderer, vtkActor* actor, vtkDataObject* dobj, unsigned int& flat_index);
265 
268  vtkRenderer* renderer, vtkActor* actor, vtkDataObject* dobj, unsigned int& flat_index);
269 
274 
276 
282 
283  std::vector<vtkPolyData*> RenderedList;
284 
285 private:
286  double ColorResult[3];
287 
289  void operator=(const vtkCompositePolyDataMapper2&) = delete;
290 };
291 
292 #endif
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:161
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.
vtkExecutive * CreateDefaultExecutive() override
We need to override this method because the standard streaming demand driven pipeline is not what we ...
int FillInputPortInformation(int port, vtkInformation *info) override
Need to define the type of data handled by this mapper.
~vtkCompositePolyDataMapper2() override
std::vector< vtkPolyData * > GetRenderedList()
Accessor to the ordered list of PolyData that we end last drew.
virtual vtkCompositeMapperHelper2 * CreateHelper()
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.
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.
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
Methods invoked by print to print information about the object including superclasses.
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.
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.
static vtkCompositePolyDataMapper2 * New()
bool ColorMissingArraysWithNanColor
If the current 'color by' array is missing on some datasets, color these dataset by the LookupTable's...
void RemoveBlockVisibilities()
Set/get the visibility for a block given its flat index.
vtkCompositeDataDisplayAttributes * GetCompositeDataDisplayAttributes()
Set/get the composite data set attributes.
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.
double * GetBlockColor(unsigned int index)
Set/get the color 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.
Definition: vtkExecutive.h:79
a simple class to control print indentation
Definition: vtkIndent.h:119
Store vtkAlgorithm input/output information.
PolyDataMapper using OpenGL to render.
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:76
abstract specification for renderers
Definition: vtkRenderer.h:182
Class to make storing and comparing state quick and easy.
record modification and/or execution time
Definition: vtkTimeStamp.h:55
window superclass for vtkRenderWindow
Definition: vtkWindow.h:39
@ info
Definition: vtkX3D.h:382
@ port
Definition: vtkX3D.h:453
@ color
Definition: vtkX3D.h:227
@ name
Definition: vtkX3D.h:225
@ index
Definition: vtkX3D.h:252
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:287