VTK  9.3.1
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
18 #ifndef vtkCompositeDataDisplayAttributes_h
19 #define vtkCompositeDataDisplayAttributes_h
20 #include <functional> // for std::function
21 #include <unordered_map> // for std::unordered_map
22 
23 #include "vtkColor.h" // for vtkColor3d
24 #include "vtkObject.h"
25 #include "vtkRenderingCoreModule.h" // for export macro
26 #include "vtkSmartPointer.h" // for arg
27 #include "vtkVector.h" // for vtkVector2d
28 
29 VTK_ABI_NAMESPACE_BEGIN
30 class vtkBoundingBox;
31 class vtkDataObject;
32 class vtkScalarsToColors;
33 
34 class VTKRENDERINGCORE_EXPORT vtkCompositeDataDisplayAttributes : public vtkObject
35 {
36 public:
39  void PrintSelf(ostream& os, vtkIndent indent) override;
40 
44  bool HasBlockVisibilities() const;
45 
47 
50  void SetBlockVisibility(vtkDataObject* data_object, bool visible);
51  bool GetBlockVisibility(vtkDataObject* data_object) const;
53 
58  bool HasBlockVisibility(vtkDataObject* data_object) const;
59 
63  void RemoveBlockVisibility(vtkDataObject* data_object);
64 
69  void RemoveBlockVisibilities();
70 
74  bool HasBlockPickabilities() const;
75 
77 
80  void SetBlockPickability(vtkDataObject* data_object, bool visible);
81  bool GetBlockPickability(vtkDataObject* data_object) const;
83 
88  bool HasBlockPickability(vtkDataObject* data_object) const;
89 
93  void RemoveBlockPickability(vtkDataObject* data_object);
94 
99  void RemoveBlockPickabilities();
100 
102 
105  void SetBlockScalarVisibility(vtkDataObject* data_object, bool value);
106  bool GetBlockScalarVisibility(vtkDataObject* data_object) const;
107  bool HasBlockScalarVisibility(vtkDataObject* data_object) const;
108  bool HasBlockScalarVisibilities() const;
109  void RemoveBlockScalarVisibility(vtkDataObject* data_object);
110  void RemoveBlockScalarVisibilities();
112 
114 
117  void SetBlockUseLookupTableScalarRange(vtkDataObject* data_object, bool value);
118  bool GetBlockUseLookupTableScalarRange(vtkDataObject* data_object) const;
119  bool HasBlockUseLookupTableScalarRange(vtkDataObject* data_object) const;
120  bool HasBlockUseLookupTableScalarRanges() const;
121  void RemoveBlockUseLookupTableScalarRange(vtkDataObject* data_object);
122  void RemoveBlockUseLookupTableScalarRanges();
124 
126 
129  void SetBlockInterpolateScalarsBeforeMapping(vtkDataObject* data_object, bool value);
130  bool GetBlockInterpolateScalarsBeforeMapping(vtkDataObject* data_object) const;
131  bool HasBlockInterpolateScalarsBeforeMapping(vtkDataObject* data_object) const;
132  bool HasBlockInterpolateScalarsBeforeMappings() const;
133  void RemoveBlockInterpolateScalarsBeforeMapping(vtkDataObject* data_object);
134  void RemoveBlockInterpolateScalarsBeforeMappings();
136 
138 
141  void SetBlockColor(vtkDataObject* data_object, const double color[3]);
142  void GetBlockColor(vtkDataObject* data_object, double color[3]) const;
143  vtkColor3d GetBlockColor(vtkDataObject* data_object) const;
145 
149  bool HasBlockColors() const;
150 
154  bool HasBlockColor(vtkDataObject* data_object) const;
155 
159  void RemoveBlockColor(vtkDataObject* data_object);
160 
164  void RemoveBlockColors();
165 
167 
170  void SetBlockOpacity(vtkDataObject* data_object, double opacity);
171  double GetBlockOpacity(vtkDataObject* data_object) const;
173 
177  bool HasBlockOpacities() const;
178 
182  bool HasBlockOpacity(vtkDataObject* data_object) const;
183 
187  void RemoveBlockOpacity(vtkDataObject* data_object);
188 
192  void RemoveBlockOpacities();
193 
195 
199  void SetBlockMaterial(vtkDataObject* data_object, const std::string& material);
200  const std::string& GetBlockMaterial(vtkDataObject* data_object) const;
202 
206  bool HasBlockMaterials() const;
207 
211  bool HasBlockMaterial(vtkDataObject* data_object) const;
212 
216  void RemoveBlockMaterial(vtkDataObject* data_object);
217 
221  void RemoveBlockMaterials();
222 
224 
227  void SetBlockColorMode(vtkDataObject* data_object, int value);
228  int GetBlockColorMode(vtkDataObject* data_object) const;
229  bool HasBlockColorMode(vtkDataObject* data_object) const;
230  bool HasBlockColorModes() const;
231  void RemoveBlockColorMode(vtkDataObject* data_object);
232  void RemoveBlockColorModes();
234 
236 
239  void SetBlockScalarMode(vtkDataObject* data_object, int value);
240  int GetBlockScalarMode(vtkDataObject* data_object) const;
241  bool HasBlockScalarMode(vtkDataObject* data_object) const;
242  bool HasBlockScalarModes() const;
243  void RemoveBlockScalarMode(vtkDataObject* data_object);
244  void RemoveBlockScalarModes();
246 
248 
251  void SetBlockArrayAccessMode(vtkDataObject* data_object, int value);
252  int GetBlockArrayAccessMode(vtkDataObject* data_object) const;
253  bool HasBlockArrayAccessMode(vtkDataObject* data_object) const;
254  bool HasBlockArrayAccessModes() const;
255  void RemoveBlockArrayAccessMode(vtkDataObject* data_object);
256  void RemoveBlockArrayAccessModes();
258 
260 
263  void SetBlockArrayComponent(vtkDataObject* data_object, int value);
264  int GetBlockArrayComponent(vtkDataObject* data_object) const;
265  bool HasBlockArrayComponent(vtkDataObject* data_object) const;
266  bool HasBlockArrayComponents() const;
267  void RemoveBlockArrayComponent(vtkDataObject* data_object);
268  void RemoveBlockArrayComponents();
270 
272 
275  void SetBlockArrayId(vtkDataObject* data_object, int value);
276  int GetBlockArrayId(vtkDataObject* data_object) const;
277  bool HasBlockArrayId(vtkDataObject* data_object) const;
278  bool HasBlockArrayIds() const;
279  void RemoveBlockArrayId(vtkDataObject* data_object);
280  void RemoveBlockArrayIds();
282 
284 
287  void SetBlockScalarRange(vtkDataObject* data_object, const vtkVector2d& value);
288  vtkVector2d GetBlockScalarRange(vtkDataObject* data_object) const;
289  bool HasBlockScalarRange(vtkDataObject* data_object) const;
290  bool HasBlockScalarRanges() const;
291  void RemoveBlockScalarRange(vtkDataObject* data_object);
292  void RemoveBlockScalarRanges();
294 
296 
299  void SetBlockArrayName(vtkDataObject* data_object, const std::string& value);
300  std::string GetBlockArrayName(vtkDataObject* data_object) const;
301  bool HasBlockArrayName(vtkDataObject* data_object) const;
302  bool HasBlockArrayNames() const;
303  void RemoveBlockArrayName(vtkDataObject* data_object);
304  void RemoveBlockArrayNames();
306 
308 
311  void SetBlockFieldDataTupleId(vtkDataObject* data_object, vtkIdType value);
312  vtkIdType GetBlockFieldDataTupleId(vtkDataObject* data_object) const;
313  bool HasBlockFieldDataTupleId(vtkDataObject* data_object) const;
314  bool HasBlockFieldDataTupleIds() const;
315  void RemoveBlockFieldDataTupleId(vtkDataObject* data_object);
316  void RemoveBlockFieldDataTupleIds();
318 
320 
323  void SetBlockLookupTable(vtkDataObject* data_object, vtkSmartPointer<vtkScalarsToColors> lut);
324  vtkSmartPointer<vtkScalarsToColors> GetBlockLookupTable(vtkDataObject* data_object) const;
325  bool HasBlockLookupTable(vtkDataObject* data_object) const;
326  bool HasBlockLookupTables() const;
327  void RemoveBlockLookupTable(vtkDataObject* data_object);
328  void RemoveBlockLookupTables();
330 
337  static void ComputeVisibleBounds(
338  vtkCompositeDataDisplayAttributes* cda, vtkDataObject* dobj, double bounds[6]);
339 
344  static vtkDataObject* DataObjectFromIndex(
345  unsigned int flat_index, vtkDataObject* parent_obj, unsigned int current_flat_index = 0);
346 
347  void VisitVisibilities(std::function<bool(vtkDataObject*, bool)> visitor)
348  {
349  for (auto entry : this->BlockVisibilities)
350  {
351  if (visitor(entry.first, entry.second))
352  {
353  break;
354  }
355  }
356  }
357 
358 protected:
361 
362 private:
364  void operator=(const vtkCompositeDataDisplayAttributes&) = delete;
365 
374  static void ComputeVisibleBoundsInternal(vtkCompositeDataDisplayAttributes* cda,
375  vtkDataObject* dobj, vtkBoundingBox* bbox, bool parentVisible = true);
376 
377  using BoolMap = std::unordered_map<vtkDataObject*, bool>;
378  using DoubleMap = std::unordered_map<vtkDataObject*, double>;
379  using IntMap = std::unordered_map<vtkDataObject*, int>;
380  using VtkIdTypeMap = std::unordered_map<vtkDataObject*, vtkIdType>;
381  using ColorMap = std::unordered_map<vtkDataObject*, vtkColor3d>;
382  using RangeMap = std::unordered_map<vtkDataObject*, vtkVector2d>;
383  using StringMap = std::unordered_map<vtkDataObject*, std::string>;
384  using LookupTableMap = std::unordered_map<vtkDataObject*, vtkSmartPointer<vtkScalarsToColors>>;
385 
386  BoolMap BlockVisibilities;
387  ColorMap BlockColors;
388  DoubleMap BlockOpacities;
389  StringMap BlockMaterials;
390  BoolMap BlockPickabilities;
391  BoolMap BlockScalarVisibilities;
392  BoolMap BlockUseLookupTableScalarRanges;
393  BoolMap BlockInterpolateScalarsBeforeMappings;
394  IntMap BlockColorModes;
395  IntMap BlockScalarModes;
396  IntMap BlockArrayAccessModes;
397  IntMap BlockArrayComponents;
398  IntMap BlockArrayIds;
399  RangeMap BlockScalarRanges;
400  StringMap BlockArrayNames;
401  LookupTableMap BlockLookupTables;
402  VtkIdTypeMap BlockFieldDataTupleIds;
403 };
404 
405 VTK_ABI_NAMESPACE_END
406 #endif // vtkCompositeDataDisplayAttributes_h
abstract base class for most VTK objects
Definition: vtkObject.h:51
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void VisitVisibilities(std::function< bool(vtkDataObject *, bool)> visitor)
Rendering attributes for a multi-block dataset.
int vtkIdType
Definition: vtkType.h:315
Superclass for mapping scalar values to colors.
a simple class to control print indentation
Definition: vtkIndent.h:28
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
general representation of visualization data
Definition: vtkDataObject.h:54
Fast, simple class for representing and operating on 3D bounds.