1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197
|
/*=========================================================================
Program: Visualization Toolkit
Module: vtkCompositeDataDisplayAttributesLegacy.h
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
/**
* @class vtkCompositeDataDisplayAttributesLegacy
* @brief rendering attributes for a
* multi-block dataset.
*
* The vtkCompositeDataDisplayAttributesLegacy class stores display attributes
* for individual blocks in a multi-block dataset. Attributes are mapped to
* blocks through their flat-index; This is the mechanism used in legacy
* OpenGL classes.
*/
#ifndef vtkCompositeDataDisplayAttributesLegacy_h
#define vtkCompositeDataDisplayAttributesLegacy_h
#include "vtkColor.h" // for vtkColor3d
#include "vtkObject.h"
#include "vtkRenderingCoreModule.h" // for export macro
#include <map> // for std::map
VTK_ABI_NAMESPACE_BEGIN
class vtkBoundingBox;
class vtkDataObject;
class VTKRENDERINGCORE_EXPORT vtkCompositeDataDisplayAttributesLegacy : public vtkObject
{
public:
static vtkCompositeDataDisplayAttributesLegacy* New();
vtkTypeMacro(vtkCompositeDataDisplayAttributesLegacy, vtkObject);
void PrintSelf(ostream& os, vtkIndent indent) override;
/**
* Returns true if any block has any block visibility is set.
*/
bool HasBlockVisibilities() const;
///@{
/**
* Set/get the visibility for the block with \p flat_index.
*/
void SetBlockVisibility(unsigned int flat_index, bool visible);
bool GetBlockVisibility(unsigned int flat_index) const;
///@}
/**
* Returns true if the block with the given flat_index has a visibility
* set.
*/
bool HasBlockVisibility(unsigned int flat_index) const;
/**
* Removes the block visibility flag for the block with flat_index.
*/
void RemoveBlockVisibility(unsigned int flat_index);
/**
* Removes all block visibility flags. The effectively sets the visibility
* for all blocks to true.
*/
void RemoveBlockVisibilities();
/**
* Returns true if any block has any block visibility is set.
*/
bool HasBlockPickabilities() const;
///@{
/**
* Set/get the visibility for the block with \p flat_index.
*/
void SetBlockPickability(unsigned int flat_index, bool visible);
bool GetBlockPickability(unsigned int flat_index) const;
///@}
/**
* Returns true if the block with the given flat_index has a visibility
* set.
*/
bool HasBlockPickability(unsigned int flat_index) const;
/**
* Removes the block visibility flag for the block with flat_index.
*/
void RemoveBlockPickability(unsigned int flat_index);
/**
* Removes all block visibility flags. The effectively sets the visibility
* for all blocks to true.
*/
void RemoveBlockPickabilities();
///@{
/**
* Set/get the color for the block with \p flat_index.
*/
void SetBlockColor(unsigned int flat_index, const double color[3]);
void GetBlockColor(unsigned int flat_index, double color[3]) const;
vtkColor3d GetBlockColor(unsigned int flat_index) const;
///@}
/**
* Returns true if any block has any block color is set.
*/
bool HasBlockColors() const;
/**
* Returns true if the block with the given \p flat_index has a color.
*/
bool HasBlockColor(unsigned int flat_index) const;
/**
* Removes the block color for the block with \p flat_index.
*/
void RemoveBlockColor(unsigned int flat_index);
/**
* Removes all block colors.
*/
void RemoveBlockColors();
///@{
/**
* Set/get the opacity for the block with flat_index.
*/
void SetBlockOpacity(unsigned int flat_index, double opacity);
double GetBlockOpacity(unsigned int flat_index) const;
///@}
/**
* Returns true if any block has an opacity set.
*/
bool HasBlockOpacities() const;
/**
* Returns true if the block with flat_index has an opacity set.
*/
bool HasBlockOpacity(unsigned int flat_index) const;
/**
* Removes the set opacity for the block with flat_index.
*/
void RemoveBlockOpacity(unsigned int flat_index);
/**
* Removes all block opacities.
*/
void RemoveBlockOpacities();
// If the input \a dobj is a vtkCompositeDataSet, we will loop over the
// hierarchy recursively starting from initial index 0 and use only visible
// blocks, which is specified in the vtkCompositeDataDisplayAttributesLegacy \a cda,
// to compute the \a bounds.
static void ComputeVisibleBounds(
vtkCompositeDataDisplayAttributesLegacy* cda, vtkDataObject* dobj, double bounds[6]);
protected:
vtkCompositeDataDisplayAttributesLegacy();
~vtkCompositeDataDisplayAttributesLegacy() override;
private:
vtkCompositeDataDisplayAttributesLegacy(const vtkCompositeDataDisplayAttributesLegacy&) = delete;
void operator=(const vtkCompositeDataDisplayAttributesLegacy&) = delete;
/**
* If the input data \a dobj is a vtkCompositeDataSet, we will
* loop over the hierarchy recursively starting from initial index
* \a flat_index and use only visible blocks, which is
* specified in the vtkCompositeDataDisplayAttributesLegacy \a cda,
* to compute bounds and the result bounds will be set to
* the vtkBoundingBox \a bbox. The \a paraentVisible is the
* visibility for the starting flat_index.
*/
static void ComputeVisibleBoundsInternal(vtkCompositeDataDisplayAttributesLegacy* cda,
vtkDataObject* dobj, unsigned int& flat_index, vtkBoundingBox* bbox, bool parentVisible = true);
std::map<unsigned int, bool> BlockVisibilities;
std::map<unsigned int, vtkColor3d> BlockColors;
std::map<unsigned int, double> BlockOpacities;
std::map<unsigned int, bool> BlockPickabilities;
};
VTK_ABI_NAMESPACE_END
#endif // vtkCompositeDataDisplayAttributesLegacy_h
|