VTK  9.7.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 
21 #include "vtkObject.h"
22 
23 #include "vtkColor.h" // for vtkColor3d
24 #include "vtkRenderingCoreModule.h" // for export macro
25 #include "vtkSmartPointer.h" // for arg
26 #include "vtkVector.h" // for vtkVector2d
27 #include "vtkWrappingHints.h" // For VTK_MARSHALMANUAL
28 
29 #include <functional> // for std::function
30 #include <unordered_map> // for std::unordered_map
31 
32 VTK_ABI_NAMESPACE_BEGIN
33 class vtkBoundingBox;
34 class vtkDataObject;
35 class vtkDeserializer;
36 class vtkScalarsToColors;
37 class vtkSerializer;
38 class vtkTexture;
39 
40 class VTKRENDERINGCORE_EXPORT VTK_MARSHALMANUAL vtkCompositeDataDisplayAttributes : public vtkObject
41 {
42 public:
45  void PrintSelf(ostream& os, vtkIndent indent) override;
46 
50  bool HasBlockVisibilities() const;
51 
53 
56  void SetBlockVisibility(vtkDataObject* data_object, bool visible);
57  bool GetBlockVisibility(vtkDataObject* data_object) const;
59 
64  bool HasBlockVisibility(vtkDataObject* data_object) const;
65 
69  void RemoveBlockVisibility(vtkDataObject* data_object);
70 
75  void RemoveBlockVisibilities();
76 
80  bool HasBlockPickabilities() const;
81 
83 
86  void SetBlockPickability(vtkDataObject* data_object, bool visible);
87  bool GetBlockPickability(vtkDataObject* data_object) const;
89 
94  bool HasBlockPickability(vtkDataObject* data_object) const;
95 
99  void RemoveBlockPickability(vtkDataObject* data_object);
100 
105  void RemoveBlockPickabilities();
106 
108 
111  void SetBlockScalarVisibility(vtkDataObject* data_object, bool value);
112  bool GetBlockScalarVisibility(vtkDataObject* data_object) const;
113  bool HasBlockScalarVisibility(vtkDataObject* data_object) const;
114  bool HasBlockScalarVisibilities() const;
115  void RemoveBlockScalarVisibility(vtkDataObject* data_object);
116  void RemoveBlockScalarVisibilities();
118 
120 
123  void SetBlockUseLookupTableScalarRange(vtkDataObject* data_object, bool value);
124  bool GetBlockUseLookupTableScalarRange(vtkDataObject* data_object) const;
125  bool HasBlockUseLookupTableScalarRange(vtkDataObject* data_object) const;
126  bool HasBlockUseLookupTableScalarRanges() const;
127  void RemoveBlockUseLookupTableScalarRange(vtkDataObject* data_object);
128  void RemoveBlockUseLookupTableScalarRanges();
130 
132 
135  void SetBlockInterpolateScalarsBeforeMapping(vtkDataObject* data_object, bool value);
136  bool GetBlockInterpolateScalarsBeforeMapping(vtkDataObject* data_object) const;
137  bool HasBlockInterpolateScalarsBeforeMapping(vtkDataObject* data_object) const;
138  bool HasBlockInterpolateScalarsBeforeMappings() const;
139  void RemoveBlockInterpolateScalarsBeforeMapping(vtkDataObject* data_object);
140  void RemoveBlockInterpolateScalarsBeforeMappings();
142 
144 
147  void SetBlockColor(vtkDataObject* data_object, const double color[3]);
148  void GetBlockColor(vtkDataObject* data_object, double color[3]) const;
149  vtkColor3d GetBlockColor(vtkDataObject* data_object) const;
151 
155  bool HasBlockColors() const;
156 
160  bool HasBlockColor(vtkDataObject* data_object) const;
161 
165  void RemoveBlockColor(vtkDataObject* data_object);
166 
170  void RemoveBlockColors();
171 
173 
176  void SetBlockOpacity(vtkDataObject* data_object, double opacity);
177  double GetBlockOpacity(vtkDataObject* data_object) const;
179 
183  bool HasBlockOpacities() const;
184 
188  bool HasBlockOpacity(vtkDataObject* data_object) const;
189 
193  void RemoveBlockOpacity(vtkDataObject* data_object);
194 
198  void RemoveBlockOpacities();
199 
201 
205  void SetBlockMaterial(vtkDataObject* data_object, const std::string& material);
206  const std::string& GetBlockMaterial(vtkDataObject* data_object) const;
208 
212  bool HasBlockMaterials() const;
213 
217  bool HasBlockMaterial(vtkDataObject* data_object) const;
218 
222  void RemoveBlockMaterial(vtkDataObject* data_object);
223 
227  void RemoveBlockMaterials();
228 
230 
233  void SetBlockColorMode(vtkDataObject* data_object, int value);
234  int GetBlockColorMode(vtkDataObject* data_object) const;
235  bool HasBlockColorMode(vtkDataObject* data_object) const;
236  bool HasBlockColorModes() const;
237  void RemoveBlockColorMode(vtkDataObject* data_object);
238  void RemoveBlockColorModes();
240 
242 
245  void SetBlockScalarMode(vtkDataObject* data_object, int value);
246  int GetBlockScalarMode(vtkDataObject* data_object) const;
247  bool HasBlockScalarMode(vtkDataObject* data_object) const;
248  bool HasBlockScalarModes() const;
249  void RemoveBlockScalarMode(vtkDataObject* data_object);
250  void RemoveBlockScalarModes();
252 
254 
257  void SetBlockArrayAccessMode(vtkDataObject* data_object, int value);
258  int GetBlockArrayAccessMode(vtkDataObject* data_object) const;
259  bool HasBlockArrayAccessMode(vtkDataObject* data_object) const;
260  bool HasBlockArrayAccessModes() const;
261  void RemoveBlockArrayAccessMode(vtkDataObject* data_object);
262  void RemoveBlockArrayAccessModes();
264 
266 
269  void SetBlockArrayComponent(vtkDataObject* data_object, int value);
270  int GetBlockArrayComponent(vtkDataObject* data_object) const;
271  bool HasBlockArrayComponent(vtkDataObject* data_object) const;
272  bool HasBlockArrayComponents() const;
273  void RemoveBlockArrayComponent(vtkDataObject* data_object);
274  void RemoveBlockArrayComponents();
276 
278 
281  void SetBlockArrayId(vtkDataObject* data_object, int value);
282  int GetBlockArrayId(vtkDataObject* data_object) const;
283  bool HasBlockArrayId(vtkDataObject* data_object) const;
284  bool HasBlockArrayIds() const;
285  void RemoveBlockArrayId(vtkDataObject* data_object);
286  void RemoveBlockArrayIds();
288 
290 
293  void SetBlockScalarRange(vtkDataObject* data_object, const vtkVector2d& value);
294  vtkVector2d GetBlockScalarRange(vtkDataObject* data_object) const;
295  bool HasBlockScalarRange(vtkDataObject* data_object) const;
296  bool HasBlockScalarRanges() const;
297  void RemoveBlockScalarRange(vtkDataObject* data_object);
298  void RemoveBlockScalarRanges();
300 
302 
305  void SetBlockArrayName(vtkDataObject* data_object, const std::string& value);
306  std::string GetBlockArrayName(vtkDataObject* data_object) const;
307  bool HasBlockArrayName(vtkDataObject* data_object) const;
308  bool HasBlockArrayNames() const;
309  void RemoveBlockArrayName(vtkDataObject* data_object);
310  void RemoveBlockArrayNames();
312 
314 
317  void SetBlockFieldDataTupleId(vtkDataObject* data_object, vtkIdType value);
318  vtkIdType GetBlockFieldDataTupleId(vtkDataObject* data_object) const;
319  bool HasBlockFieldDataTupleId(vtkDataObject* data_object) const;
320  bool HasBlockFieldDataTupleIds() const;
321  void RemoveBlockFieldDataTupleId(vtkDataObject* data_object);
322  void RemoveBlockFieldDataTupleIds();
324 
326 
329  void SetBlockLookupTable(vtkDataObject* data_object, vtkSmartPointer<vtkScalarsToColors> lut);
330  vtkSmartPointer<vtkScalarsToColors> GetBlockLookupTable(vtkDataObject* data_object) const;
331  bool HasBlockLookupTable(vtkDataObject* data_object) const;
332  bool HasBlockLookupTables() const;
333  void RemoveBlockLookupTable(vtkDataObject* data_object);
334  void RemoveBlockLookupTables();
336 
338 
342  void SetBlockTexture(vtkDataObject* dataObject, vtkSmartPointer<vtkTexture> texture);
343  vtkSmartPointer<vtkTexture> GetBlockTexture(vtkDataObject* dataObject) const;
344  bool HasBlockTexture(vtkDataObject* dataObject) const;
345  bool HasBlockTextures() const;
346  void RemoveBlockTexture(vtkDataObject* dataObject);
347  void RemoveBlockTextures();
349 
356  static void ComputeVisibleBounds(
357  vtkCompositeDataDisplayAttributes* cda, vtkDataObject* dobj, double bounds[6]);
358 
363  static vtkDataObject* DataObjectFromIndex(
364  unsigned int flat_index, vtkDataObject* parent_obj, unsigned int current_flat_index = 0);
365 
366  void VisitVisibilities(std::function<bool(vtkDataObject*, bool)> visitor)
367  {
368  for (auto entry : this->BlockVisibilities)
369  {
370  if (visitor(entry.first, entry.second))
371  {
372  break;
373  }
374  }
375  }
376 
377 protected:
380 
381 private:
383  void operator=(const vtkCompositeDataDisplayAttributes&) = delete;
384 
393  static void ComputeVisibleBoundsInternal(vtkCompositeDataDisplayAttributes* cda,
394  vtkDataObject* dobj, vtkBoundingBox* bbox, bool parentVisible = true);
395 
396  using BoolMap = std::unordered_map<vtkDataObject*, bool>;
397  using DoubleMap = std::unordered_map<vtkDataObject*, double>;
398  using IntMap = std::unordered_map<vtkDataObject*, int>;
399  using VtkIdTypeMap = std::unordered_map<vtkDataObject*, vtkIdType>;
400  using ColorMap = std::unordered_map<vtkDataObject*, vtkColor3d>;
401  using RangeMap = std::unordered_map<vtkDataObject*, vtkVector2d>;
402  using StringMap = std::unordered_map<vtkDataObject*, std::string>;
403  using LookupTableMap = std::unordered_map<vtkDataObject*, vtkSmartPointer<vtkScalarsToColors>>;
404  using TextureMap = std::unordered_map<vtkDataObject*, vtkSmartPointer<vtkTexture>>;
405 
406  BoolMap BlockVisibilities;
407  ColorMap BlockColors;
408  DoubleMap BlockOpacities;
409  StringMap BlockMaterials;
410  BoolMap BlockPickabilities;
411  BoolMap BlockScalarVisibilities;
412  BoolMap BlockUseLookupTableScalarRanges;
413  BoolMap BlockInterpolateScalarsBeforeMappings;
414  IntMap BlockColorModes;
415  IntMap BlockScalarModes;
416  IntMap BlockArrayAccessModes;
417  IntMap BlockArrayComponents;
418  IntMap BlockArrayIds;
419  RangeMap BlockScalarRanges;
420  StringMap BlockArrayNames;
421  LookupTableMap BlockLookupTables;
422  VtkIdTypeMap BlockFieldDataTupleIds;
423  TextureMap BlockTextures;
424 
425  friend class vtkCompositeDataDisplayAttributesSerDesHelper;
426 };
427 
428 VTK_ABI_NAMESPACE_END
429 #endif // vtkCompositeDataDisplayAttributes_h
Deserialize VTK objects from JSON.
abstract base class for most VTK objects
Definition: vtkObject.h:52
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:363
Superclass for mapping scalar values to colors.
#define VTK_MARSHALMANUAL
a simple class to control print indentation
Definition: vtkIndent.h:28
handles properties associated with a texture map
Definition: vtkTexture.h:58
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
Serialize VTK objects to JSON.
Definition: vtkSerializer.h:30
general representation of visualization data
Definition: vtkDataObject.h:55
Fast, simple class for representing and operating on 3D bounds.