VTK  9.3.0
vtkCompositePolyDataMapper.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
31 #ifndef vtkCompositePolyDataMapper_h
32 #define vtkCompositePolyDataMapper_h
33 
34 #include "vtkPolyDataMapper.h"
35 
36 #include "vtkDeprecation.h" // for VTK_DEPRECATED_IN_9_3_0
37 #include "vtkRenderingCoreModule.h" // for export macro
38 #include "vtkStateStorage.h" // for ivar
39 
40 #include <array> // for ColorResult. Remove when double* GetBlockColor gets removed.
41 #include <memory> // for unique_ptr
42 #include <vector> // for return
43 
44 VTK_ABI_NAMESPACE_BEGIN
45 class vtkActor;
50 class vtkInformation;
51 class vtkPolyData;
52 class vtkRenderer;
53 
54 class VTKRENDERINGCORE_EXPORT vtkCompositePolyDataMapper : public vtkPolyDataMapper
55 {
56 public:
59  void PrintSelf(ostream& os, vtkIndent indent) override;
60 
65  void Render(vtkRenderer* renderer, vtkActor* actor) override;
66 
68 
71  double* GetBounds() VTK_SIZEHINT(6) override;
72  void GetBounds(double bounds[6]) override { this->Superclass::GetBounds(bounds); }
74 
78  void ShallowCopy(vtkAbstractMapper* mapper) override;
79 
84 
86 
91  bool HasOpaqueGeometry() override;
94 
96 
102 
104 
107  void SetBlockVisibility(unsigned int index, bool visible);
108  bool GetBlockVisibility(unsigned int index);
109  void RemoveBlockVisibility(unsigned int index);
112 
114 
117  void SetBlockColor(unsigned int index, const double color[3]);
118  void SetBlockColor(unsigned int index, double r, double g, double b)
119  {
120  double color[3] = { r, g, b };
121  this->SetBlockColor(index, color);
122  }
123  VTK_DEPRECATED_IN_9_3_0("Use void GetBlockColor(unsigned int index, double color[3])")
124  double* GetBlockColor(unsigned int index);
125  void GetBlockColor(unsigned int index, double color[3]);
126  void RemoveBlockColor(unsigned int index);
127  void RemoveBlockColors();
129 
131 
134  void SetBlockOpacity(unsigned int index, double opacity);
135  double GetBlockOpacity(unsigned int index);
136  void RemoveBlockOpacity(unsigned int index);
137  void RemoveBlockOpacities();
139 
141 
144  void SetBlockScalarMode(unsigned int index, int value);
145  int GetBlockScalarMode(unsigned int index);
146  void RemoveBlockScalarMode(unsigned int index);
147  void RemoveBlockScalarModes();
149 
151 
154  void SetBlockArrayAccessMode(unsigned int index, int value);
155  int GetBlockArrayAccessMode(unsigned int index);
156  void RemoveBlockArrayAccessMode(unsigned int index);
157  void RemoveBlockArrayAccessModes();
159 
161 
164  void SetBlockArrayComponent(unsigned int index, int value);
165  int GetBlockArrayComponent(unsigned int index);
166  void RemoveBlockArrayComponent(unsigned int index);
167  void RemoveBlockArrayComponents();
169 
171 
174  void SetBlockArrayId(unsigned int index, int value);
175  int GetBlockArrayId(unsigned int index);
176  void RemoveBlockArrayId(unsigned int index);
177  void RemoveBlockArrayIds();
179 
181 
184  void SetBlockArrayName(unsigned int index, const std::string& value);
185  std::string GetBlockArrayName(unsigned int index);
186  void RemoveBlockArrayName(unsigned int index);
187  void RemoveBlockArrayNames();
189 
191 
194  void SetBlockFieldDataTupleId(unsigned int index, vtkIdType value);
195  vtkIdType GetBlockFieldDataTupleId(unsigned int index);
196  void RemoveBlockFieldDataTupleId(unsigned int index);
197  void RemoveBlockFieldDataTupleIds();
199 
201 
207  vtkSetMacro(ColorMissingArraysWithNanColor, bool);
208  vtkGetMacro(ColorMissingArraysWithNanColor, bool);
209  vtkBooleanMacro(ColorMissingArraysWithNanColor, bool);
211 
213 
216  using vtkAlgorithm::SetInputArrayToProcess;
217  void SetInputArrayToProcess(
218  int idx, int port, int connection, int fieldAssociation, const char* name) override;
219  void SetInputArrayToProcess(
220  int idx, int port, int connection, int fieldAssociation, int fieldAttributeType) override;
221  void SetInputArrayToProcess(int idx, vtkInformation* info) override;
223 
227  std::vector<vtkPolyData*> GetRenderedList();
228 
233  void ProcessSelectorPixelBuffers(
234  vtkHardwareSelector* sel, std::vector<unsigned int>& pixeloffsets, vtkProp* prop) override;
235 
239  void SetVBOShiftScaleMethod(int method) override;
240 
246  void SetPauseShiftScale(bool pauseShiftScale) override;
247 
251  vtkMTimeType GetMTime() override;
252 
254 
260  vtkSetStringMacro(PointIdArrayName);
261  vtkGetStringMacro(PointIdArrayName);
262  vtkSetStringMacro(CellIdArrayName);
263  vtkGetStringMacro(CellIdArrayName);
265 
267 
272  vtkSetStringMacro(ProcessIdArrayName);
273  vtkGetStringMacro(ProcessIdArrayName);
275 
277 
286  vtkSetStringMacro(CompositeIdArrayName);
287  vtkGetStringMacro(CompositeIdArrayName);
289 
290 protected:
293 
294  MapperHashType InsertPolyData(vtkPolyData* polydata, const unsigned int& flatIndex);
295 
301  vtkExecutive* CreateDefaultExecutive() override;
302 
306  int FillInputPortInformation(int port, vtkInformation* info) override;
307 
315  virtual vtkCompositePolyDataMapperDelegator* CreateADelegator();
316 
324  {
325  }
326 
333  {
334  }
335 
340 
345 
349  void ComputeBounds() override;
350 
351  bool RecursiveHasTranslucentGeometry(vtkDataObject* dobj, unsigned int& flat_index);
352 
354  vtkRenderer* renderer, vtkActor* actor, vtkDataObject* dobj, unsigned int& flat_index);
355 
362 
367 
372  bool ColorMissingArraysWithNanColor = false;
373 
378 
379  // additional picking indirection
380  char* PointIdArrayName = nullptr;
381  char* CellIdArrayName = nullptr;
382  char* ProcessIdArrayName = nullptr;
383  char* CompositeIdArrayName = nullptr;
384 
386  bool HasTranslucentGeometry = false;
390 
391 private:
393  void operator=(const vtkCompositePolyDataMapper&) = delete;
394 
395  std::array<double, 3> ColorResult = {};
396 
397  class vtkInternals;
398  std::unique_ptr<vtkInternals> Internals;
399 };
400 
401 VTK_ABI_NAMESPACE_END
402 #endif
abstract class specifies interface to map data
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:50
Superclass for all sources, filters, and sinks in VTK.
Definition: vtkAlgorithm.h:61
Rendering attributes for a multi-block dataset.
abstract superclass for composite (multi-block or AMR) datasets
Delegates rendering of multiple polydata that share similar signatures.
a class that renders hierarchical polygonal data
vtkCompositeDataDisplayAttributes * GetCompositeDataDisplayAttributes()
Set/get the composite data set attributes.
bool GetBlockVisibility(unsigned int index)
Set/get the visibility for a block given its flat index.
void ComputeBounds() override
Need to loop over the hierarchy to compute bounds.
void SetCompositeDataDisplayAttributes(vtkCompositeDataDisplayAttributes *attributes)
Set/get the composite data set attributes.
vtkPolyDataMapper::MapperHashType GenerateHash(vtkPolyData *polydata) override
Creates an empty polydata mapper and asks the mapper to hash the polydata.
vtkNew< vtkPolyDataMapper > PrototypeMapper
A prototype of the object factory override mapper.
void RemoveBlockVisibility(unsigned int index)
Set/get the visibility for a block given its flat index.
void SetBlockVisibility(unsigned int index, bool visible)
Set/get the visibility for a block given its flat index.
bool RecursiveHasTranslucentGeometry(vtkDataObject *dobj, unsigned int &flat_index)
void Render(vtkRenderer *renderer, vtkActor *actor) override
Standard method for rendering a mapper.
void ShallowCopy(vtkAbstractMapper *mapper) override
Make a shallow copy of this mapper.
void ReleaseGraphicsResources(vtkWindow *) override
Release the underlying resources associated with this mapper.
static vtkCompositePolyDataMapper * New()
vtkSmartPointer< vtkCompositeDataDisplayAttributes > CompositeAttributes
Composite data set attributes.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetBlockColor(unsigned int index, const double color[3])
Set/get the color for a block given its flat index.
void RemoveBlockVisibilities()
Set/get the visibility for a block given its flat index.
virtual void PostRender(const std::vector< vtkSmartPointer< vtkCompositePolyDataMapperDelegator >> &, vtkRenderer *, vtkActor *)
Invoked just after all delegators render their datasets.
void BuildRenderValues(vtkRenderer *renderer, vtkActor *actor, vtkDataObject *dobj, unsigned int &flat_index)
virtual vtkDataObjectTreeIterator * MakeAnIterator(vtkCompositeDataSet *dataset)
Initialize an iterator for the composite dataset.
bool HasTranslucentPolygonalGeometry() override
Some introspection on the type of data the mapper will render used by props to determine if they shou...
bool HasOpaqueGeometry() override
Some introspection on the type of data the mapper will render used by props to determine if they shou...
void SetBlockColor(unsigned int index, double r, double g, double b)
Set/get the color for a block given its flat index.
vtkTimeStamp BoundsMTime
Time stamp for computation of bounds.
double * GetBounds() override
Standard vtkProp method to get 3D bounds of a 3D prop.
superclass for composite data iterators
general representation of visualization data
Definition: vtkDataObject.h:64
Superclass for all pipeline executives in VTK.
Definition: vtkExecutive.h:48
a simple class to control print indentation
Definition: vtkIndent.h:38
Store vtkAlgorithm input/output information.
double * GetBounds() override
Return bounding box (array of six doubles) of data expressed as (xmin,xmax, ymin,ymax,...
map vtkPolyData to graphics primitives
std::uintptr_t MapperHashType
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:89
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:55
abstract specification for renderers
Definition: vtkRenderer.h:71
Hold a reference to a vtkObjectBase instance.
Class to make storing and comparing state quick and easy.
record modification and/or execution time
Definition: vtkTimeStamp.h:34
window superclass for vtkRenderWindow
Definition: vtkWindow.h:37
void GetBounds(T a, double bds[6])
@ vector
Definition: vtkX3D.h:237
@ info
Definition: vtkX3D.h:376
@ value
Definition: vtkX3D.h:220
@ port
Definition: vtkX3D.h:447
@ color
Definition: vtkX3D.h:221
@ name
Definition: vtkX3D.h:219
@ index
Definition: vtkX3D.h:246
#define VTK_DEPRECATED_IN_9_3_0(reason)
int vtkIdType
Definition: vtkType.h:315
vtkTypeUInt32 vtkMTimeType
Definition: vtkType.h:270
#define VTK_SIZEHINT(...)