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 =========================================================================*/
30 #ifndef vtkCompositeDataDisplayAttributes_h
31 #define vtkCompositeDataDisplayAttributes_h
32 #include <unordered_map> // for std::unordered_map
33 
34 #include "vtkColor.h" // for vtkColor3d
35 #include "vtkObject.h"
36 #include "vtkRenderingCoreModule.h" // for export macro
37 
38 
39 class vtkBoundingBox;
40 class vtkDataObject;
41 
42 class VTKRENDERINGCORE_EXPORT vtkCompositeDataDisplayAttributes : public vtkObject
43 {
44 public:
47  void PrintSelf(ostream& os, vtkIndent indent) override;
48 
52  bool HasBlockVisibilities() const;
53 
55 
58  void SetBlockVisibility(vtkDataObject* data_object, bool visible);
59  bool GetBlockVisibility(vtkDataObject* data_object) const;
61 
66  bool HasBlockVisibility(vtkDataObject* data_object) const;
67 
71  void RemoveBlockVisibility(vtkDataObject* data_object);
72 
77  void RemoveBlockVisibilities();
78  // This method is deprecated and will be removed in VTK 8.2. It is misspelled.
79  VTK_LEGACY(void RemoveBlockVisibilites());
80 
84  bool HasBlockPickabilities() const;
85 
87 
90  void SetBlockPickability(vtkDataObject* data_object, bool visible);
91  bool GetBlockPickability(vtkDataObject* data_object) const;
93 
98  bool HasBlockPickability(vtkDataObject* data_object) const;
99 
103  void RemoveBlockPickability(vtkDataObject* data_object);
104 
109  void RemoveBlockPickabilities();
110 
112 
115  void SetBlockColor(vtkDataObject* data_object, const double color[3]);
116  void GetBlockColor(vtkDataObject* data_object, double color[3]) const;
117  vtkColor3d GetBlockColor(vtkDataObject* data_object) const;
119 
123  bool HasBlockColors() const;
124 
128  bool HasBlockColor(vtkDataObject* data_object) const;
129 
133  void RemoveBlockColor(vtkDataObject* data_object);
134 
138  void RemoveBlockColors();
139 
141 
144  void SetBlockOpacity(vtkDataObject* data_object, double opacity);
145  double GetBlockOpacity(vtkDataObject* data_object) const;
147 
151  bool HasBlockOpacities() const;
152 
156  bool HasBlockOpacity(vtkDataObject* data_object) const;
157 
161  void RemoveBlockOpacity(vtkDataObject* data_object);
162 
166  void RemoveBlockOpacities();
167 
169 
173  void SetBlockMaterial(vtkDataObject* data_object, const std::string& material);
174  const std::string& GetBlockMaterial(vtkDataObject* data_object) const;
176 
180  bool HasBlockMaterials() const;
181 
185  bool HasBlockMaterial(vtkDataObject* data_object) const;
186 
190  void RemoveBlockMaterial(vtkDataObject* data_object);
191 
195  void RemoveBlockMaterials();
196 
203  static void ComputeVisibleBounds(
205  vtkDataObject *dobj,
206  double bounds[6]);
207 
212  static vtkDataObject* DataObjectFromIndex(const unsigned int flat_index,
213  vtkDataObject* parent_obj, unsigned int& current_flat_index);
214 
215 protected:
218 
219 private:
221  void operator=(const vtkCompositeDataDisplayAttributes&) = delete;
222 
231  static void ComputeVisibleBoundsInternal(
233  vtkDataObject *dobj,
234  vtkBoundingBox* bbox,
235  bool parentVisible = true);
236 
237  using BoolMap = std::unordered_map<vtkDataObject*, bool>;
238  using DoubleMap = std::unordered_map<vtkDataObject*, double>;
239  using ColorMap = std::unordered_map<vtkDataObject*, vtkColor3d>;
240  using StringMap = std::unordered_map<vtkDataObject*, std::string>;
241 
242  BoolMap BlockVisibilities;
243  ColorMap BlockColors;
244  DoubleMap BlockOpacities;
245  StringMap BlockMaterials;
246  BoolMap BlockPickabilities;
247 };
248 
249 #endif // vtkCompositeDataDisplayAttributes_h
abstract base class for most VTK objects
Definition: vtkObject.h:59
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
Rendering attributes for a multi-block dataset.
a simple class to control print indentation
Definition: vtkIndent.h:39
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:64
Fast Simple Class for dealing with 3D bounds.