VTK  9.4.20251007
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
17
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// clang-format off
33#include "vtk_nlohmannjson.h"
34#include VTK_NLOHMANN_JSON(json.hpp)
35// clang-format on
36
37VTK_ABI_NAMESPACE_BEGIN
38class vtkBoundingBox;
39class vtkDataObject;
40class vtkDeserializer;
42class vtkSerializer;
43
45{
46public:
49 void PrintSelf(ostream& os, vtkIndent indent) override;
50
55
57
60 void SetBlockVisibility(vtkDataObject* data_object, bool visible);
61 bool GetBlockVisibility(vtkDataObject* data_object) const;
63
68 bool HasBlockVisibility(vtkDataObject* data_object) const;
69
74
80
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
104
110
112
115 void SetBlockScalarVisibility(vtkDataObject* data_object, bool value);
116 bool GetBlockScalarVisibility(vtkDataObject* data_object) const;
117 bool HasBlockScalarVisibility(vtkDataObject* data_object) const;
122
124
127 void SetBlockUseLookupTableScalarRange(vtkDataObject* data_object, bool value);
134
136
146
148
151 void SetBlockColor(vtkDataObject* data_object, const double color[3]);
152 void GetBlockColor(vtkDataObject* data_object, double color[3]) const;
155
159 bool HasBlockColors() const;
160
164 bool HasBlockColor(vtkDataObject* data_object) const;
165
169 void RemoveBlockColor(vtkDataObject* data_object);
170
175
177
180 void SetBlockOpacity(vtkDataObject* data_object, double opacity);
181 double GetBlockOpacity(vtkDataObject* data_object) const;
183
187 bool HasBlockOpacities() const;
188
192 bool HasBlockOpacity(vtkDataObject* data_object) const;
193
198
203
205
209 void SetBlockMaterial(vtkDataObject* data_object, const std::string& material);
210 const std::string& GetBlockMaterial(vtkDataObject* data_object) const;
212
216 bool HasBlockMaterials() const;
217
221 bool HasBlockMaterial(vtkDataObject* data_object) const;
222
227
232
234
237 void SetBlockColorMode(vtkDataObject* data_object, int value);
238 int GetBlockColorMode(vtkDataObject* data_object) const;
239 bool HasBlockColorMode(vtkDataObject* data_object) const;
240 bool HasBlockColorModes() const;
244
246
249 void SetBlockScalarMode(vtkDataObject* data_object, int value);
250 int GetBlockScalarMode(vtkDataObject* data_object) const;
251 bool HasBlockScalarMode(vtkDataObject* data_object) const;
256
258
261 void SetBlockArrayAccessMode(vtkDataObject* data_object, int value);
262 int GetBlockArrayAccessMode(vtkDataObject* data_object) const;
263 bool HasBlockArrayAccessMode(vtkDataObject* data_object) const;
268
270
273 void SetBlockArrayComponent(vtkDataObject* data_object, int value);
274 int GetBlockArrayComponent(vtkDataObject* data_object) const;
275 bool HasBlockArrayComponent(vtkDataObject* data_object) const;
280
282
285 void SetBlockArrayId(vtkDataObject* data_object, int value);
286 int GetBlockArrayId(vtkDataObject* data_object) const;
287 bool HasBlockArrayId(vtkDataObject* data_object) const;
288 bool HasBlockArrayIds() const;
292
294
297 void SetBlockScalarRange(vtkDataObject* data_object, const vtkVector2d& value);
299 bool HasBlockScalarRange(vtkDataObject* data_object) const;
304
306
309 void SetBlockArrayName(vtkDataObject* data_object, const std::string& value);
310 std::string GetBlockArrayName(vtkDataObject* data_object) const;
311 bool HasBlockArrayName(vtkDataObject* data_object) const;
312 bool HasBlockArrayNames() const;
316
318
323 bool HasBlockFieldDataTupleId(vtkDataObject* data_object) const;
328
330
335 bool HasBlockLookupTable(vtkDataObject* data_object) const;
340
348 vtkCompositeDataDisplayAttributes* cda, vtkDataObject* dobj, double bounds[6]);
349
355 unsigned int flat_index, vtkDataObject* parent_obj, unsigned int current_flat_index = 0);
356
357 void VisitVisibilities(std::function<bool(vtkDataObject*, bool)> visitor)
358 {
359 for (auto entry : this->BlockVisibilities)
360 {
361 if (visitor(entry.first, entry.second))
362 {
363 break;
364 }
365 }
366 }
367
368 nlohmann::json Serialize(vtkSerializer* serializer);
369 void Deserialize(const nlohmann::json& state, vtkDeserializer* deserializer);
370
371protected:
374
375private:
377 void operator=(const vtkCompositeDataDisplayAttributes&) = delete;
378
387 static void ComputeVisibleBoundsInternal(vtkCompositeDataDisplayAttributes* cda,
388 vtkDataObject* dobj, vtkBoundingBox* bbox, bool parentVisible = true);
389
390 using BoolMap = std::unordered_map<vtkDataObject*, bool>;
391 using DoubleMap = std::unordered_map<vtkDataObject*, double>;
392 using IntMap = std::unordered_map<vtkDataObject*, int>;
393 using VtkIdTypeMap = std::unordered_map<vtkDataObject*, vtkIdType>;
394 using ColorMap = std::unordered_map<vtkDataObject*, vtkColor3d>;
395 using RangeMap = std::unordered_map<vtkDataObject*, vtkVector2d>;
396 using StringMap = std::unordered_map<vtkDataObject*, std::string>;
397 using LookupTableMap = std::unordered_map<vtkDataObject*, vtkSmartPointer<vtkScalarsToColors>>;
398
399 BoolMap BlockVisibilities;
400 ColorMap BlockColors;
401 DoubleMap BlockOpacities;
402 StringMap BlockMaterials;
403 BoolMap BlockPickabilities;
404 BoolMap BlockScalarVisibilities;
405 BoolMap BlockUseLookupTableScalarRanges;
406 BoolMap BlockInterpolateScalarsBeforeMappings;
407 IntMap BlockColorModes;
408 IntMap BlockScalarModes;
409 IntMap BlockArrayAccessModes;
410 IntMap BlockArrayComponents;
411 IntMap BlockArrayIds;
412 RangeMap BlockScalarRanges;
413 StringMap BlockArrayNames;
414 LookupTableMap BlockLookupTables;
415 VtkIdTypeMap BlockFieldDataTupleIds;
416};
417
418VTK_ABI_NAMESPACE_END
419#endif // vtkCompositeDataDisplayAttributes_h
Fast, simple class for representing and operating on 3D bounds.
void SetBlockColorMode(vtkDataObject *data_object, int value)
bool GetBlockPickability(vtkDataObject *data_object) const
Set/get the pickability for the block with data_object.
void SetBlockMaterial(vtkDataObject *data_object, const std::string &material)
Set/get the material for the block with data_object.
void SetBlockScalarVisibility(vtkDataObject *data_object, bool value)
bool HasBlockOpacities() const
Returns true if any block has an opacity set.
int GetBlockArrayId(vtkDataObject *data_object) const
bool HasBlockVisibilities() const
Returns true if any block has any block visibility is set.
bool HasBlockMaterials() const
Returns true if any block has an material set.
void RemoveBlockArrayId(vtkDataObject *data_object)
void RemoveBlockFieldDataTupleId(vtkDataObject *data_object)
bool HasBlockScalarRange(vtkDataObject *data_object) const
vtkIdType GetBlockFieldDataTupleId(vtkDataObject *data_object) const
void SetBlockOpacity(vtkDataObject *data_object, double opacity)
Set/get the opacity for the block with data_object.
void SetBlockUseLookupTableScalarRange(vtkDataObject *data_object, bool value)
void RemoveBlockArrayName(vtkDataObject *data_object)
void SetBlockColor(vtkDataObject *data_object, const double color[3])
Set/get the color for the block with data_object.
bool HasBlockArrayName(vtkDataObject *data_object) const
void SetBlockScalarMode(vtkDataObject *data_object, int value)
void SetBlockVisibility(vtkDataObject *data_object, bool visible)
Set/get the visibility for the block with data_object.
void RemoveBlockLookupTable(vtkDataObject *data_object)
bool GetBlockVisibility(vtkDataObject *data_object) const
Set/get the visibility for the block with data_object.
void SetBlockPickability(vtkDataObject *data_object, bool visible)
Set/get the pickability for the block with data_object.
void SetBlockArrayComponent(vtkDataObject *data_object, int value)
void RemoveBlockVisibilities()
Removes all block visibility flags.
bool HasBlockArrayId(vtkDataObject *data_object) const
bool HasBlockOpacity(vtkDataObject *data_object) const
Returns true if the block with data_object has an opacity set.
bool HasBlockPickability(vtkDataObject *data_object) const
Returns true if the block with the given data_object has a pickability set.
static vtkCompositeDataDisplayAttributes * New()
void RemoveBlockOpacities()
Removes all block opacities.
void RemoveBlockColor(vtkDataObject *data_object)
Removes the block color for the block with data_object.
void RemoveBlockScalarVisibility(vtkDataObject *data_object)
void GetBlockColor(vtkDataObject *data_object, double color[3]) const
Set/get the color for the block with data_object.
std::string GetBlockArrayName(vtkDataObject *data_object) const
void VisitVisibilities(std::function< bool(vtkDataObject *, bool)> visitor)
bool GetBlockScalarVisibility(vtkDataObject *data_object) const
void RemoveBlockInterpolateScalarsBeforeMapping(vtkDataObject *data_object)
void SetBlockArrayName(vtkDataObject *data_object, const std::string &value)
double GetBlockOpacity(vtkDataObject *data_object) const
Set/get the opacity for the block with data_object.
bool HasBlockInterpolateScalarsBeforeMapping(vtkDataObject *data_object) const
nlohmann::json Serialize(vtkSerializer *serializer)
void SetBlockFieldDataTupleId(vtkDataObject *data_object, vtkIdType value)
bool HasBlockUseLookupTableScalarRange(vtkDataObject *data_object) const
bool HasBlockUseLookupTableScalarRanges() const
bool HasBlockColor(vtkDataObject *data_object) const
Returns true if the block with the given data_object has a color.
void Deserialize(const nlohmann::json &state, vtkDeserializer *deserializer)
void SetBlockArrayAccessMode(vtkDataObject *data_object, int value)
bool GetBlockUseLookupTableScalarRange(vtkDataObject *data_object) const
void SetBlockLookupTable(vtkDataObject *data_object, vtkSmartPointer< vtkScalarsToColors > lut)
bool HasBlockInterpolateScalarsBeforeMappings() const
void RemoveBlockMaterial(vtkDataObject *data_object)
Removes the set material for the block with data_object.
const std::string & GetBlockMaterial(vtkDataObject *data_object) const
Set/get the material for the block with data_object.
void RemoveBlockUseLookupTableScalarRange(vtkDataObject *data_object)
void RemoveBlockScalarRange(vtkDataObject *data_object)
bool HasBlockLookupTable(vtkDataObject *data_object) const
void RemoveBlockOpacity(vtkDataObject *data_object)
Removes the set opacity for the block with data_object.
bool HasBlockVisibility(vtkDataObject *data_object) const
Returns true if the block with the given data_object has a visibility set.
int GetBlockColorMode(vtkDataObject *data_object) const
int GetBlockArrayAccessMode(vtkDataObject *data_object) const
void RemoveBlockMaterials()
Removes all block materialss.
vtkVector2d GetBlockScalarRange(vtkDataObject *data_object) const
bool HasBlockFieldDataTupleId(vtkDataObject *data_object) const
bool HasBlockPickabilities() const
Returns true if any block has any block pickability is set.
bool HasBlockArrayAccessMode(vtkDataObject *data_object) const
int GetBlockScalarMode(vtkDataObject *data_object) const
bool GetBlockInterpolateScalarsBeforeMapping(vtkDataObject *data_object) const
void SetBlockScalarRange(vtkDataObject *data_object, const vtkVector2d &value)
void RemoveBlockScalarMode(vtkDataObject *data_object)
void RemoveBlockColorMode(vtkDataObject *data_object)
bool HasBlockColors() const
Returns true if any block has any block color is set.
bool HasBlockScalarVisibility(vtkDataObject *data_object) const
void RemoveBlockPickabilities()
Removes all block pickability flags.
bool HasBlockScalarMode(vtkDataObject *data_object) const
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void RemoveBlockVisibility(vtkDataObject *data_object)
Removes the block visibility flag for the block with data_object.
static void ComputeVisibleBounds(vtkCompositeDataDisplayAttributes *cda, vtkDataObject *dobj, double bounds[6])
If the input dobj is a vtkCompositeDataSet, we will loop over the hierarchy recursively starting from...
static vtkDataObject * DataObjectFromIndex(unsigned int flat_index, vtkDataObject *parent_obj, unsigned int current_flat_index=0)
Get the DataObject corresponding to the node with index flat_index under parent_obj.
void SetBlockInterpolateScalarsBeforeMapping(vtkDataObject *data_object, bool value)
bool HasBlockColorMode(vtkDataObject *data_object) const
bool HasBlockMaterial(vtkDataObject *data_object) const
Returns true if the block with data_object has an material set.
int GetBlockArrayComponent(vtkDataObject *data_object) const
void RemoveBlockArrayComponent(vtkDataObject *data_object)
void SetBlockArrayId(vtkDataObject *data_object, int value)
void RemoveBlockPickability(vtkDataObject *data_object)
Removes the block pickability flag for the block with data_object.
vtkSmartPointer< vtkScalarsToColors > GetBlockLookupTable(vtkDataObject *data_object) const
void RemoveBlockArrayAccessMode(vtkDataObject *data_object)
bool HasBlockArrayComponent(vtkDataObject *data_object) const
vtkColor3d GetBlockColor(vtkDataObject *data_object) const
Set/get the color for the block with data_object.
void RemoveBlockColors()
Removes all block colors.
general representation of visualization data
Deserialize VTK objects from JSON.
a simple class to control print indentation
Definition vtkIndent.h:29
Superclass for mapping scalar values to colors.
Serialize VTK objects to JSON.
Hold a reference to a vtkObjectBase instance.
int vtkIdType
Definition vtkType.h:315
#define VTK_MARSHALMANUAL