VTK
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 
37 class vtkBoundingBox;
38 class vtkDataObject;
39 
40 class VTKRENDERINGCORE_EXPORT 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  // This method is deprecated and will be removed in VTK 8.2. It is misspelled.
77  VTK_LEGACY(void RemoveBlockVisibilites());
78 
82  bool HasBlockPickabilities() const;
83 
85 
88  void SetBlockPickability(vtkDataObject* data_object, bool visible);
89  bool GetBlockPickability(vtkDataObject* data_object) const;
91 
96  bool HasBlockPickability(vtkDataObject* data_object) const;
97 
101  void RemoveBlockPickability(vtkDataObject* data_object);
102 
107  void RemoveBlockPickabilities();
108 
110 
113  void SetBlockColor(vtkDataObject* data_object, const double color[3]);
114  void GetBlockColor(vtkDataObject* data_object, double color[3]) const;
115  vtkColor3d GetBlockColor(vtkDataObject* data_object) const;
117 
121  bool HasBlockColors() const;
122 
126  bool HasBlockColor(vtkDataObject* data_object) const;
127 
131  void RemoveBlockColor(vtkDataObject* data_object);
132 
136  void RemoveBlockColors();
137 
139 
142  void SetBlockOpacity(vtkDataObject* data_object, double opacity);
143  double GetBlockOpacity(vtkDataObject* data_object) const;
145 
149  bool HasBlockOpacities() const;
150 
154  bool HasBlockOpacity(vtkDataObject* data_object) const;
155 
159  void RemoveBlockOpacity(vtkDataObject* data_object);
160 
164  void RemoveBlockOpacities();
165 
167 
171  void SetBlockMaterial(vtkDataObject* data_object, const std::string& material);
172  const std::string& GetBlockMaterial(vtkDataObject* data_object) const;
174 
178  bool HasBlockMaterials() const;
179 
183  bool HasBlockMaterial(vtkDataObject* data_object) const;
184 
188  void RemoveBlockMaterial(vtkDataObject* data_object);
189 
193  void RemoveBlockMaterials();
194 
201  static void ComputeVisibleBounds(
203  vtkDataObject *dobj,
204  double bounds[6]);
205 
210  static vtkDataObject* DataObjectFromIndex(const unsigned int flat_index,
211  vtkDataObject* parent_obj, unsigned int& current_flat_index);
212 
213  void VisitVisibilities(std::function<bool(vtkDataObject*, bool)> visitor)
214  {
215  for (auto entry : this->BlockVisibilities)
216  {
217  if (visitor(entry.first, entry.second))
218  {
219  break;
220  }
221  }
222  }
223 protected:
226 
227 private:
229  void operator=(const vtkCompositeDataDisplayAttributes&) = delete;
230 
239  static void ComputeVisibleBoundsInternal(
241  vtkDataObject *dobj,
242  vtkBoundingBox* bbox,
243  bool parentVisible = true);
244 
245  using BoolMap = std::unordered_map<vtkDataObject*, bool>;
246  using DoubleMap = std::unordered_map<vtkDataObject*, double>;
247  using ColorMap = std::unordered_map<vtkDataObject*, vtkColor3d>;
248  using StringMap = std::unordered_map<vtkDataObject*, std::string>;
249 
250  BoolMap BlockVisibilities;
251  ColorMap BlockColors;
252  DoubleMap BlockOpacities;
253  StringMap BlockMaterials;
254  BoolMap BlockPickabilities;
255 };
256 
257 #endif // vtkCompositeDataDisplayAttributes_h
vtkX3D::function
Definition: vtkX3D.h:249
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:53
vtkCompositeDataDisplayAttributes
Rendering attributes for a multi-block dataset.
Definition: vtkCompositeDataDisplayAttributes.h:40
vtkBoundingBox
Fast Simple Class for dealing with 3D bounds.
Definition: vtkBoundingBox.h:32
vtkX3D::color
Definition: vtkX3D.h:221
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
Definition: vtkX3D.h:490
vtkColor3d
Definition: vtkColor.h:231
vtkDataObject
general representation of visualization data
Definition: vtkDataObject.h:58
vtkCompositeDataDisplayAttributes::VisitVisibilities
void VisitVisibilities(std::function< bool(vtkDataObject *, bool)> visitor)
Definition: vtkCompositeDataDisplayAttributes.h:213