VTK  9.3.0
vtkCompositeDataDisplayAttributes.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
27 #ifndef vtkCompositeDataDisplayAttributes_h
28 #define vtkCompositeDataDisplayAttributes_h
29 #include <functional> // for std::function
30 #include <unordered_map> // for std::unordered_map
31 
32 #include "vtkColor.h" // for vtkColor3d
33 #include "vtkObject.h"
34 #include "vtkRenderingCoreModule.h" // for export macro
35 #include "vtkSmartPointer.h" // for arg
36 #include "vtkVector.h" // for vtkVector2d
37 
38 VTK_ABI_NAMESPACE_BEGIN
39 class vtkBoundingBox;
40 class vtkDataObject;
41 class vtkScalarsToColors;
42 
43 class VTKRENDERINGCORE_EXPORT vtkCompositeDataDisplayAttributes : public vtkObject
44 {
45 public:
48  void PrintSelf(ostream& os, vtkIndent indent) override;
49 
53  bool HasBlockVisibilities() const;
54 
56 
59  void SetBlockVisibility(vtkDataObject* data_object, bool visible);
60  bool GetBlockVisibility(vtkDataObject* data_object) const;
62 
67  bool HasBlockVisibility(vtkDataObject* data_object) const;
68 
73 
79 
83  bool HasBlockPickabilities() const;
84 
86 
89  void SetBlockPickability(vtkDataObject* data_object, bool visible);
90  bool GetBlockPickability(vtkDataObject* data_object) const;
92 
97  bool HasBlockPickability(vtkDataObject* data_object) const;
98 
103 
109 
111 
114  void SetBlockScalarVisibility(vtkDataObject* data_object, bool value);
115  bool GetBlockScalarVisibility(vtkDataObject* data_object) const;
116  bool HasBlockScalarVisibility(vtkDataObject* data_object) const;
121 
123 
133 
135 
145 
147 
150  void SetBlockColor(vtkDataObject* data_object, const double color[3]);
151  void GetBlockColor(vtkDataObject* data_object, double color[3]) const;
154 
158  bool HasBlockColors() const;
159 
163  bool HasBlockColor(vtkDataObject* data_object) const;
164 
168  void RemoveBlockColor(vtkDataObject* data_object);
169 
174 
176 
179  void SetBlockOpacity(vtkDataObject* data_object, double opacity);
180  double GetBlockOpacity(vtkDataObject* data_object) const;
182 
186  bool HasBlockOpacities() const;
187 
191  bool HasBlockOpacity(vtkDataObject* data_object) const;
192 
196  void RemoveBlockOpacity(vtkDataObject* data_object);
197 
202 
204 
208  void SetBlockMaterial(vtkDataObject* data_object, const std::string& material);
209  const std::string& GetBlockMaterial(vtkDataObject* data_object) const;
211 
215  bool HasBlockMaterials() const;
216 
220  bool HasBlockMaterial(vtkDataObject* data_object) const;
221 
225  void RemoveBlockMaterial(vtkDataObject* data_object);
226 
231 
233 
236  void SetBlockColorMode(vtkDataObject* data_object, int value);
237  int GetBlockColorMode(vtkDataObject* data_object) const;
238  bool HasBlockColorMode(vtkDataObject* data_object) const;
239  bool HasBlockColorModes() const;
243 
245 
248  void SetBlockScalarMode(vtkDataObject* data_object, int value);
249  int GetBlockScalarMode(vtkDataObject* data_object) const;
250  bool HasBlockScalarMode(vtkDataObject* data_object) const;
251  bool HasBlockScalarModes() const;
255 
257 
260  void SetBlockArrayAccessMode(vtkDataObject* data_object, int value);
261  int GetBlockArrayAccessMode(vtkDataObject* data_object) const;
262  bool HasBlockArrayAccessMode(vtkDataObject* data_object) const;
267 
269 
272  void SetBlockArrayComponent(vtkDataObject* data_object, int value);
273  int GetBlockArrayComponent(vtkDataObject* data_object) const;
274  bool HasBlockArrayComponent(vtkDataObject* data_object) const;
279 
281 
284  void SetBlockArrayId(vtkDataObject* data_object, int value);
285  int GetBlockArrayId(vtkDataObject* data_object) const;
286  bool HasBlockArrayId(vtkDataObject* data_object) const;
287  bool HasBlockArrayIds() const;
288  void RemoveBlockArrayId(vtkDataObject* data_object);
291 
293 
298  bool HasBlockScalarRange(vtkDataObject* data_object) const;
299  bool HasBlockScalarRanges() const;
303 
305 
308  void SetBlockArrayName(vtkDataObject* data_object, const std::string& value);
310  bool HasBlockArrayName(vtkDataObject* data_object) const;
311  bool HasBlockArrayNames() const;
315 
317 
322  bool HasBlockFieldDataTupleId(vtkDataObject* data_object) const;
327 
329 
334  bool HasBlockLookupTable(vtkDataObject* data_object) const;
335  bool HasBlockLookupTables() const;
339 
346  static void ComputeVisibleBounds(
347  vtkCompositeDataDisplayAttributes* cda, vtkDataObject* dobj, double bounds[6]);
348 
354  unsigned int flat_index, vtkDataObject* parent_obj, unsigned int current_flat_index = 0);
355 
356  void VisitVisibilities(std::function<bool(vtkDataObject*, bool)> visitor)
357  {
358  for (auto entry : this->BlockVisibilities)
359  {
360  if (visitor(entry.first, entry.second))
361  {
362  break;
363  }
364  }
365  }
366 
367 protected:
370 
371 private:
373  void operator=(const vtkCompositeDataDisplayAttributes&) = delete;
374 
383  static void ComputeVisibleBoundsInternal(vtkCompositeDataDisplayAttributes* cda,
384  vtkDataObject* dobj, vtkBoundingBox* bbox, bool parentVisible = true);
385 
386  using BoolMap = std::unordered_map<vtkDataObject*, bool>;
387  using DoubleMap = std::unordered_map<vtkDataObject*, double>;
388  using IntMap = std::unordered_map<vtkDataObject*, int>;
389  using VtkIdTypeMap = std::unordered_map<vtkDataObject*, vtkIdType>;
390  using ColorMap = std::unordered_map<vtkDataObject*, vtkColor3d>;
391  using RangeMap = std::unordered_map<vtkDataObject*, vtkVector2d>;
392  using StringMap = std::unordered_map<vtkDataObject*, std::string>;
393  using LookupTableMap = std::unordered_map<vtkDataObject*, vtkSmartPointer<vtkScalarsToColors>>;
394 
395  BoolMap BlockVisibilities;
396  ColorMap BlockColors;
397  DoubleMap BlockOpacities;
398  StringMap BlockMaterials;
399  BoolMap BlockPickabilities;
400  BoolMap BlockScalarVisibilities;
401  BoolMap BlockUseLookupTableScalarRanges;
402  BoolMap BlockInterpolateScalarsBeforeMappings;
403  IntMap BlockColorModes;
404  IntMap BlockScalarModes;
405  IntMap BlockArrayAccessModes;
406  IntMap BlockArrayComponents;
407  IntMap BlockArrayIds;
408  RangeMap BlockScalarRanges;
409  StringMap BlockArrayNames;
410  LookupTableMap BlockLookupTables;
411  VtkIdTypeMap BlockFieldDataTupleIds;
412 };
413 
414 VTK_ABI_NAMESPACE_END
415 #endif // vtkCompositeDataDisplayAttributes_h
Fast, simple class for representing and operating on 3D bounds.
Rendering attributes for a multi-block dataset.
void SetBlockColorMode(vtkDataObject *data_object, int value)
bool GetBlockPickability(vtkDataObject *data_object) const
Set/get the pickability for the block with data_object.
void SetBlockMaterial(vtkDataObject *data_object, const std::string &material)
Set/get the material for the block with data_object.
void SetBlockScalarVisibility(vtkDataObject *data_object, bool value)
bool HasBlockOpacities() const
Returns true if any block has an opacity set.
int GetBlockArrayId(vtkDataObject *data_object) const
bool HasBlockVisibilities() const
Returns true if any block has any block visibility is set.
bool HasBlockMaterials() const
Returns true if any block has an material set.
void RemoveBlockArrayId(vtkDataObject *data_object)
void RemoveBlockFieldDataTupleId(vtkDataObject *data_object)
bool HasBlockScalarRange(vtkDataObject *data_object) const
vtkIdType GetBlockFieldDataTupleId(vtkDataObject *data_object) const
void SetBlockOpacity(vtkDataObject *data_object, double opacity)
Set/get the opacity for the block with data_object.
void SetBlockUseLookupTableScalarRange(vtkDataObject *data_object, bool value)
void RemoveBlockArrayName(vtkDataObject *data_object)
void SetBlockColor(vtkDataObject *data_object, const double color[3])
Set/get the color for the block with data_object.
bool HasBlockArrayName(vtkDataObject *data_object) const
void SetBlockScalarMode(vtkDataObject *data_object, int value)
void SetBlockVisibility(vtkDataObject *data_object, bool visible)
Set/get the visibility for the block with data_object.
const std::string & GetBlockMaterial(vtkDataObject *data_object) const
Set/get the material for the block with data_object.
void RemoveBlockLookupTable(vtkDataObject *data_object)
static vtkCompositeDataDisplayAttributes * New()
bool GetBlockVisibility(vtkDataObject *data_object) const
Set/get the visibility for the block with data_object.
void SetBlockPickability(vtkDataObject *data_object, bool visible)
Set/get the pickability for the block with data_object.
static vtkDataObject * DataObjectFromIndex(unsigned int flat_index, vtkDataObject *parent_obj, unsigned int current_flat_index=0)
Get the DataObject corresponding to the node with index flat_index under parent_obj.
void SetBlockArrayComponent(vtkDataObject *data_object, int value)
void RemoveBlockVisibilities()
Removes all block visibility flags.
bool HasBlockArrayId(vtkDataObject *data_object) const
bool HasBlockOpacity(vtkDataObject *data_object) const
Returns true if the block with data_object has an opacity set.
bool HasBlockPickability(vtkDataObject *data_object) const
Returns true if the block with the given data_object has a pickability set.
void RemoveBlockOpacities()
Removes all block opacities.
void RemoveBlockColor(vtkDataObject *data_object)
Removes the block color for the block with data_object.
void RemoveBlockScalarVisibility(vtkDataObject *data_object)
void GetBlockColor(vtkDataObject *data_object, double color[3]) const
Set/get the color for the block with data_object.
std::string GetBlockArrayName(vtkDataObject *data_object) const
void VisitVisibilities(std::function< bool(vtkDataObject *, bool)> visitor)
bool GetBlockScalarVisibility(vtkDataObject *data_object) const
void RemoveBlockInterpolateScalarsBeforeMapping(vtkDataObject *data_object)
void SetBlockArrayName(vtkDataObject *data_object, const std::string &value)
double GetBlockOpacity(vtkDataObject *data_object) const
Set/get the opacity for the block with data_object.
bool HasBlockInterpolateScalarsBeforeMapping(vtkDataObject *data_object) const
void SetBlockFieldDataTupleId(vtkDataObject *data_object, vtkIdType value)
bool HasBlockUseLookupTableScalarRange(vtkDataObject *data_object) const
bool HasBlockUseLookupTableScalarRanges() const
bool HasBlockColor(vtkDataObject *data_object) const
Returns true if the block with the given data_object has a color.
void SetBlockArrayAccessMode(vtkDataObject *data_object, int value)
bool GetBlockUseLookupTableScalarRange(vtkDataObject *data_object) const
void SetBlockLookupTable(vtkDataObject *data_object, vtkSmartPointer< vtkScalarsToColors > lut)
bool HasBlockInterpolateScalarsBeforeMappings() const
void RemoveBlockMaterial(vtkDataObject *data_object)
Removes the set material for the block with data_object.
void RemoveBlockUseLookupTableScalarRange(vtkDataObject *data_object)
void RemoveBlockScalarRange(vtkDataObject *data_object)
bool HasBlockLookupTable(vtkDataObject *data_object) const
void RemoveBlockOpacity(vtkDataObject *data_object)
Removes the set opacity for the block with data_object.
bool HasBlockVisibility(vtkDataObject *data_object) const
Returns true if the block with the given data_object has a visibility set.
int GetBlockColorMode(vtkDataObject *data_object) const
int GetBlockArrayAccessMode(vtkDataObject *data_object) const
void RemoveBlockMaterials()
Removes all block materialss.
vtkVector2d GetBlockScalarRange(vtkDataObject *data_object) const
bool HasBlockFieldDataTupleId(vtkDataObject *data_object) const
bool HasBlockPickabilities() const
Returns true if any block has any block pickability is set.
bool HasBlockArrayAccessMode(vtkDataObject *data_object) const
int GetBlockScalarMode(vtkDataObject *data_object) const
bool GetBlockInterpolateScalarsBeforeMapping(vtkDataObject *data_object) const
void SetBlockScalarRange(vtkDataObject *data_object, const vtkVector2d &value)
void RemoveBlockScalarMode(vtkDataObject *data_object)
void RemoveBlockColorMode(vtkDataObject *data_object)
bool HasBlockColors() const
Returns true if any block has any block color is set.
bool HasBlockScalarVisibility(vtkDataObject *data_object) const
void RemoveBlockPickabilities()
Removes all block pickability flags.
vtkSmartPointer< vtkScalarsToColors > GetBlockLookupTable(vtkDataObject *data_object) const
bool HasBlockScalarMode(vtkDataObject *data_object) const
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void RemoveBlockVisibility(vtkDataObject *data_object)
Removes the block visibility flag for the block with data_object.
static void ComputeVisibleBounds(vtkCompositeDataDisplayAttributes *cda, vtkDataObject *dobj, double bounds[6])
If the input dobj is a vtkCompositeDataSet, we will loop over the hierarchy recursively starting from...
void SetBlockInterpolateScalarsBeforeMapping(vtkDataObject *data_object, bool value)
bool HasBlockColorMode(vtkDataObject *data_object) const
bool HasBlockMaterial(vtkDataObject *data_object) const
Returns true if the block with data_object has an material set.
int GetBlockArrayComponent(vtkDataObject *data_object) const
void RemoveBlockArrayComponent(vtkDataObject *data_object)
void SetBlockArrayId(vtkDataObject *data_object, int value)
void RemoveBlockPickability(vtkDataObject *data_object)
Removes the block pickability flag for the block with data_object.
void RemoveBlockArrayAccessMode(vtkDataObject *data_object)
bool HasBlockArrayComponent(vtkDataObject *data_object) const
vtkColor3d GetBlockColor(vtkDataObject *data_object) const
Set/get the color for the block with data_object.
void RemoveBlockColors()
Removes all block colors.
general representation of visualization data
Definition: vtkDataObject.h:64
a simple class to control print indentation
Definition: vtkIndent.h:38
abstract base class for most VTK objects
Definition: vtkObject.h:61
Superclass for mapping scalar values to colors.
@ function
Definition: vtkX3D.h:249
@ value
Definition: vtkX3D.h:220
@ color
Definition: vtkX3D.h:221
@ string
Definition: vtkX3D.h:490
int vtkIdType
Definition: vtkType.h:315