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
22 #ifndef vtkCompositePolyDataMapper_h
23 #define vtkCompositePolyDataMapper_h
24 
25 #include "vtkPolyDataMapper.h"
26 
27 #include "vtkDeprecation.h" // for VTK_DEPRECATED_IN_9_3_0
28 #include "vtkRenderingCoreModule.h" // for export macro
29 #include "vtkStateStorage.h" // for ivar
30 
31 #include <array> // for ColorResult. Remove when double* GetBlockColor gets removed.
32 #include <memory> // for unique_ptr
33 #include <vector> // for return
34 
35 VTK_ABI_NAMESPACE_BEGIN
36 class vtkActor;
41 class vtkInformation;
42 class vtkPolyData;
43 class vtkRenderer;
44 
45 class VTKRENDERINGCORE_EXPORT vtkCompositePolyDataMapper : public vtkPolyDataMapper
46 {
47 public:
50  void PrintSelf(ostream& os, vtkIndent indent) override;
51 
56  void Render(vtkRenderer* renderer, vtkActor* actor) override;
57 
59 
62  double* GetBounds() VTK_SIZEHINT(6) override;
63  void GetBounds(double bounds[6]) override { this->Superclass::GetBounds(bounds); }
65 
69  void ShallowCopy(vtkAbstractMapper* mapper) override;
70 
75 
77 
82  bool HasOpaqueGeometry() override;
85 
87 
93 
95 
98  void SetBlockVisibility(unsigned int index, bool visible);
99  bool GetBlockVisibility(unsigned int index);
100  void RemoveBlockVisibility(unsigned int index);
103 
105 
108  void SetBlockColor(unsigned int index, const double color[3]);
109  void SetBlockColor(unsigned int index, double r, double g, double b)
110  {
111  double color[3] = { r, g, b };
112  this->SetBlockColor(index, color);
113  }
114  VTK_DEPRECATED_IN_9_3_0("Use void GetBlockColor(unsigned int index, double color[3])")
115  double* GetBlockColor(unsigned int index);
116  void GetBlockColor(unsigned int index, double color[3]);
117  void RemoveBlockColor(unsigned int index);
118  void RemoveBlockColors();
120 
122 
125  void SetBlockOpacity(unsigned int index, double opacity);
126  double GetBlockOpacity(unsigned int index);
127  void RemoveBlockOpacity(unsigned int index);
128  void RemoveBlockOpacities();
130 
132 
135  void SetBlockScalarMode(unsigned int index, int value);
136  int GetBlockScalarMode(unsigned int index);
137  void RemoveBlockScalarMode(unsigned int index);
138  void RemoveBlockScalarModes();
140 
142 
145  void SetBlockArrayAccessMode(unsigned int index, int value);
146  int GetBlockArrayAccessMode(unsigned int index);
147  void RemoveBlockArrayAccessMode(unsigned int index);
148  void RemoveBlockArrayAccessModes();
150 
152 
155  void SetBlockArrayComponent(unsigned int index, int value);
156  int GetBlockArrayComponent(unsigned int index);
157  void RemoveBlockArrayComponent(unsigned int index);
158  void RemoveBlockArrayComponents();
160 
162 
165  void SetBlockArrayId(unsigned int index, int value);
166  int GetBlockArrayId(unsigned int index);
167  void RemoveBlockArrayId(unsigned int index);
168  void RemoveBlockArrayIds();
170 
172 
175  void SetBlockArrayName(unsigned int index, const std::string& value);
176  std::string GetBlockArrayName(unsigned int index);
177  void RemoveBlockArrayName(unsigned int index);
178  void RemoveBlockArrayNames();
180 
182 
185  void SetBlockFieldDataTupleId(unsigned int index, vtkIdType value);
186  vtkIdType GetBlockFieldDataTupleId(unsigned int index);
187  void RemoveBlockFieldDataTupleId(unsigned int index);
188  void RemoveBlockFieldDataTupleIds();
190 
192 
198  vtkSetMacro(ColorMissingArraysWithNanColor, bool);
199  vtkGetMacro(ColorMissingArraysWithNanColor, bool);
200  vtkBooleanMacro(ColorMissingArraysWithNanColor, bool);
202 
204 
207  using vtkAlgorithm::SetInputArrayToProcess;
208  void SetInputArrayToProcess(
209  int idx, int port, int connection, int fieldAssociation, const char* name) override;
210  void SetInputArrayToProcess(
211  int idx, int port, int connection, int fieldAssociation, int fieldAttributeType) override;
212  void SetInputArrayToProcess(int idx, vtkInformation* info) override;
214 
218  std::vector<vtkPolyData*> GetRenderedList();
219 
224  void ProcessSelectorPixelBuffers(
225  vtkHardwareSelector* sel, std::vector<unsigned int>& pixeloffsets, vtkProp* prop) override;
226 
230  void SetVBOShiftScaleMethod(int method) override;
231 
237  void SetPauseShiftScale(bool pauseShiftScale) override;
238 
242  vtkMTimeType GetMTime() override;
243 
245 
251  vtkSetStringMacro(PointIdArrayName);
252  vtkGetStringMacro(PointIdArrayName);
253  vtkSetStringMacro(CellIdArrayName);
254  vtkGetStringMacro(CellIdArrayName);
256 
258 
263  vtkSetStringMacro(ProcessIdArrayName);
264  vtkGetStringMacro(ProcessIdArrayName);
266 
268 
277  vtkSetStringMacro(CompositeIdArrayName);
278  vtkGetStringMacro(CompositeIdArrayName);
280 
281 protected:
284 
285  MapperHashType InsertPolyData(vtkPolyData* polydata, const unsigned int& flatIndex);
286 
292  vtkExecutive* CreateDefaultExecutive() override;
293 
297  int FillInputPortInformation(int port, vtkInformation* info) override;
298 
306  virtual vtkCompositePolyDataMapperDelegator* CreateADelegator();
307 
315  {
316  }
317 
324  {
325  }
326 
331 
336 
340  void ComputeBounds() override;
341 
342  bool RecursiveHasTranslucentGeometry(vtkDataObject* dobj, unsigned int& flat_index);
343 
345  vtkRenderer* renderer, vtkActor* actor, vtkDataObject* dobj, unsigned int& flat_index);
346 
353 
358 
363  bool ColorMissingArraysWithNanColor = false;
364 
369 
370  // additional picking indirection
371  char* PointIdArrayName = nullptr;
372  char* CellIdArrayName = nullptr;
373  char* ProcessIdArrayName = nullptr;
374  char* CompositeIdArrayName = nullptr;
375 
377  bool HasTranslucentGeometry = false;
381 
382 private:
384  void operator=(const vtkCompositePolyDataMapper&) = delete;
385 
386  std::array<double, 3> ColorResult = {};
387 
388  class vtkInternals;
389  std::unique_ptr<vtkInternals> Internals;
390 };
391 
392 VTK_ABI_NAMESPACE_END
393 #endif
abstract class specifies interface to map data
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:41
Superclass for all sources, filters, and sinks in VTK.
Definition: vtkAlgorithm.h:52
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:55
Superclass for all pipeline executives in VTK.
Definition: vtkExecutive.h:39
a simple class to control print indentation
Definition: vtkIndent.h:29
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:80
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:46
abstract specification for renderers
Definition: vtkRenderer.h:62
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:25
window superclass for vtkRenderWindow
Definition: vtkWindow.h:28
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(...)