VTK  9.0.1
vtkCompositeDataDisplayAttributes.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkCompositeDataDisplayAttributes.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
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 
36 class vtkBoundingBox;
37 class vtkDataObject;
38 
39 class VTKRENDERINGCORE_EXPORT vtkCompositeDataDisplayAttributes : public vtkObject
40 {
41 public:
44  void PrintSelf(ostream& os, vtkIndent indent) override;
45 
49  bool HasBlockVisibilities() const;
50 
52 
55  void SetBlockVisibility(vtkDataObject* data_object, bool visible);
56  bool GetBlockVisibility(vtkDataObject* data_object) const;
58 
63  bool HasBlockVisibility(vtkDataObject* data_object) const;
64 
68  void RemoveBlockVisibility(vtkDataObject* data_object);
69 
74  void RemoveBlockVisibilities();
75  // This method is deprecated and will be removed in VTK 8.2. It is misspelled.
76  VTK_LEGACY(void RemoveBlockVisibilites());
77 
81  bool HasBlockPickabilities() const;
82 
84 
87  void SetBlockPickability(vtkDataObject* data_object, bool visible);
88  bool GetBlockPickability(vtkDataObject* data_object) const;
90 
95  bool HasBlockPickability(vtkDataObject* data_object) const;
96 
100  void RemoveBlockPickability(vtkDataObject* data_object);
101 
106  void RemoveBlockPickabilities();
107 
109 
112  void SetBlockColor(vtkDataObject* data_object, const double color[3]);
113  void GetBlockColor(vtkDataObject* data_object, double color[3]) const;
114  vtkColor3d GetBlockColor(vtkDataObject* data_object) const;
116 
120  bool HasBlockColors() const;
121 
125  bool HasBlockColor(vtkDataObject* data_object) const;
126 
130  void RemoveBlockColor(vtkDataObject* data_object);
131 
135  void RemoveBlockColors();
136 
138 
141  void SetBlockOpacity(vtkDataObject* data_object, double opacity);
142  double GetBlockOpacity(vtkDataObject* data_object) const;
144 
148  bool HasBlockOpacities() const;
149 
153  bool HasBlockOpacity(vtkDataObject* data_object) const;
154 
158  void RemoveBlockOpacity(vtkDataObject* data_object);
159 
163  void RemoveBlockOpacities();
164 
166 
170  void SetBlockMaterial(vtkDataObject* data_object, const std::string& material);
171  const std::string& GetBlockMaterial(vtkDataObject* data_object) const;
173 
177  bool HasBlockMaterials() const;
178 
182  bool HasBlockMaterial(vtkDataObject* data_object) const;
183 
187  void RemoveBlockMaterial(vtkDataObject* data_object);
188 
192  void RemoveBlockMaterials();
193 
200  static void ComputeVisibleBounds(
201  vtkCompositeDataDisplayAttributes* cda, vtkDataObject* dobj, double bounds[6]);
202 
207  static vtkDataObject* DataObjectFromIndex(
208  const unsigned int flat_index, vtkDataObject* parent_obj, unsigned int& current_flat_index);
209 
210  void VisitVisibilities(std::function<bool(vtkDataObject*, bool)> visitor)
211  {
212  for (auto entry : this->BlockVisibilities)
213  {
214  if (visitor(entry.first, entry.second))
215  {
216  break;
217  }
218  }
219  }
220 
221 protected:
224 
225 private:
227  void operator=(const vtkCompositeDataDisplayAttributes&) = delete;
228 
237  static void ComputeVisibleBoundsInternal(vtkCompositeDataDisplayAttributes* cda,
238  vtkDataObject* dobj, vtkBoundingBox* bbox, bool parentVisible = true);
239 
240  using BoolMap = std::unordered_map<vtkDataObject*, bool>;
241  using DoubleMap = std::unordered_map<vtkDataObject*, double>;
242  using ColorMap = std::unordered_map<vtkDataObject*, vtkColor3d>;
243  using StringMap = std::unordered_map<vtkDataObject*, std::string>;
244 
245  BoolMap BlockVisibilities;
246  ColorMap BlockColors;
247  DoubleMap BlockOpacities;
248  StringMap BlockMaterials;
249  BoolMap BlockPickabilities;
250 };
251 
252 #endif // vtkCompositeDataDisplayAttributes_h
vtkX3D::function
@ function
Definition: vtkX3D.h:255
vtkObject::New
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on.
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:62
vtkCompositeDataDisplayAttributes
Rendering attributes for a multi-block dataset.
Definition: vtkCompositeDataDisplayAttributes.h:39
vtkBoundingBox
Fast, simple class for dealing with 3D bounds.
Definition: vtkBoundingBox.h:34
vtkX3D::color
@ color
Definition: vtkX3D.h:227
vtkColor.h
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkObject::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkObject.h
vtkX3D::string
@ string
Definition: vtkX3D.h:496
vtkColor3d
Definition: vtkColor.h:246
vtkDataObject
general representation of visualization data
Definition: vtkDataObject.h:59
vtkCompositeDataDisplayAttributes::VisitVisibilities
void VisitVisibilities(std::function< bool(vtkDataObject *, bool)> visitor)
Definition: vtkCompositeDataDisplayAttributes.h:210