OGS
VtkCompositeImageToCylindersFilter Class Reference

Detailed Description

Creates cylinders that stand on top of the image with the length of the corresponding first sub-pixel value (the red value). Useful to visualize precipitation maps as a 3d bar chart.

Definition at line 13 of file VtkCompositeImageToCylindersFilter.h.

#include <VtkCompositeImageToCylindersFilter.h>

Inheritance diagram for VtkCompositeImageToCylindersFilter:
[legend]
Collaboration diagram for VtkCompositeImageToCylindersFilter:
[legend]

Public Member Functions

 VtkCompositeImageToCylindersFilter (vtkAlgorithm *inputAlgorithm)
 ~VtkCompositeImageToCylindersFilter () override
void init () override
void SetUserProperty (QString name, QVariant value) override
 Sets a user property. This should be implemented by subclasses.
void SetUserVectorProperty (QString name, QList< QVariant > values) override
 Sets a vector user property. This should be implemented by subclasses.
Public Member Functions inherited from VtkCompositeFilter
 VtkCompositeFilter (vtkAlgorithm *inputAlgorithm)
 Constructor.
 ~VtkCompositeFilter () override
 Destructor.
int GetInputDataObjectType () const
int GetOutputDataObjectType () const
vtkAlgorithm * GetOutputAlgorithm () const
Public Member Functions inherited from VtkAlgorithmProperties
 VtkAlgorithmProperties (QObject *parent=nullptr)
 Constructor (sets default values)
 ~VtkAlgorithmProperties () override
vtkProperty * GetProperties () const
 Returns the vtk properties.
vtkTexture * GetTexture ()
 Returns a texture (if one has been assigned).
void SetTexture (vtkTexture *t)
 Sets a texture for the VtkVisPipelineItem.
vtkLookupTable * GetLookupTable (const QString &array_name)
 Returns the colour lookup table (if one has been assigned).
void RemoveLookupTable (const QString &array_name)
 Removes the lookup table for the given scalar.
void SetLookUpTable (const QString &array_name, vtkLookupTable *lut)
 Sets a colour lookup table for the given scalar array of the VtkVisPipelineItem.
void SetLookUpTable (const QString &array_name, const QString &filename)
 Loads a predefined color lookup table from a file for the specified scalar array.
bool GetScalarVisibility () const
 Returns the scalar visibility.
void SetScalarVisibility (bool on)
 Sets the scalar visibility.
QString GetName () const
 Returns the name. This is set to the file path if it is a source algorithm.
void SetName (QString name)
 Sets the name.
bool IsRemovable () const
 Is this algorithm removable from the pipeline (view).
QMap< QString, QVariant > * GetAlgorithmUserProperties () const
 Returns a map of user properties.
QMap< QString, QList< QVariant > > * GetAlgorithmUserVectorProperties () const
 Returns a map of vector user properties.
QVariant GetUserProperty (QString name) const
 Returns the value of a user property.
QList< QVariant > GetUserVectorProperty (QString name) const
 Returns a list of values of a vector user property.
void SetActiveAttribute (QString name)
 Set the active attribute.
QString GetActiveAttribute () const
 Returns the desired active attribute.

Private Attributes

VtkImageDataToLinePolyDataFilter_lineFilter

Additional Inherited Members

Signals inherited from VtkAlgorithmProperties
void ScalarVisibilityChanged (bool on)
Protected Member Functions inherited from VtkCompositeFilter
double GetInitialRadius () const
 Calculates a 1/200th of the largest extension of the bounding box (this is used as default radius for various filters)
Protected Attributes inherited from VtkCompositeFilter
int _inputDataObjectType
int _outputDataObjectType
vtkAlgorithm * _inputAlgorithm
vtkAlgorithm * _outputAlgorithm
Protected Attributes inherited from VtkAlgorithmProperties
vtkProperty * _property
vtkTexture * _texture
bool _scalarVisibility
std::map< QString, vtkLookupTable * > _lut
QString _name
QString _activeAttributeName
bool _removable
QMap< QString, QVariant > * _algorithmUserProperties
QMap< QString, QList< QVariant > > * _algorithmUserVectorProperties

Constructor & Destructor Documentation

◆ VtkCompositeImageToCylindersFilter()

VtkCompositeImageToCylindersFilter::VtkCompositeImageToCylindersFilter ( vtkAlgorithm * inputAlgorithm)
explicit

Definition at line 20 of file VtkCompositeImageToCylindersFilter.cpp.

22 : VtkCompositeFilter(inputAlgorithm), _lineFilter(nullptr)
23{
24 this->init();
25}
VtkCompositeFilter(vtkAlgorithm *inputAlgorithm)
Constructor.

References VtkCompositeFilter::VtkCompositeFilter(), _lineFilter, and init().

◆ ~VtkCompositeImageToCylindersFilter()

VtkCompositeImageToCylindersFilter::~VtkCompositeImageToCylindersFilter ( )
override

Definition at line 133 of file VtkCompositeImageToCylindersFilter.cpp.

134{
135 _lineFilter->Delete();
136}

References _lineFilter.

Member Function Documentation

◆ init()

void VtkCompositeImageToCylindersFilter::init ( )
overridevirtual

Implements VtkCompositeFilter.

Definition at line 27 of file VtkCompositeImageToCylindersFilter.cpp.

28{
29 this->_inputDataObjectType = VTK_IMAGE_DATA;
30 this->_outputDataObjectType = VTK_POLY_DATA;
31
33 _lineFilter->SetInputConnection(_inputAlgorithm->GetOutputPort());
34 _lineFilter->SetLengthScaleFactor(1);
35 (*_algorithmUserProperties)["LengthScaleFactor"] = 1.0;
36 _lineFilter->Update();
37
38 double range[2];
39 // The data is always on points
40 vtkDataSet::SafeDownCast(_lineFilter->GetOutputDataObject(0))
41 ->GetPointData()
42 ->GetScalars()
43 ->GetRange(range);
44
45 vtkLookupTable* colormap = vtkLookupTable::New();
46 colormap->SetTableRange(range[0], range[1]);
47 colormap->SetHueRange(0.0, 0.666);
48 colormap->SetNumberOfTableValues(256);
49 colormap->ForceBuild();
50 QList<QVariant> tableRangeList;
51 tableRangeList.push_back(range[0]);
52 tableRangeList.push_back(range[1]);
53 QList<QVariant> hueRangeList;
54 hueRangeList.push_back(0.0);
55 hueRangeList.push_back(0.666);
56 (*_algorithmUserVectorProperties)["TableRange"] = tableRangeList;
57 (*_algorithmUserVectorProperties)["HueRange"] = hueRangeList;
58
59 this->SetLookUpTable("P-Colors", colormap);
60
61 vtkTubeFilter* tubeFilter = vtkTubeFilter::New();
62 tubeFilter->SetInputConnection(_lineFilter->GetOutputPort());
63 tubeFilter->CappingOn();
64 tubeFilter->SetNumberOfSides(6);
65 tubeFilter->SetRadius(_lineFilter->GetImageSpacing() * 0.25);
66 (*_algorithmUserProperties)["NumberOfColors"] = 256;
67 (*_algorithmUserProperties)["Capping"] = true;
68 (*_algorithmUserProperties)["NumberOfSides"] = 6;
69 (*_algorithmUserProperties)["RadiusFactor"] = 0.25;
70
71 _outputAlgorithm = tubeFilter;
72}
void SetLookUpTable(const QString &array_name, vtkLookupTable *lut)
Sets a colour lookup table for the given scalar array of the VtkVisPipelineItem.
vtkAlgorithm * _outputAlgorithm
vtkAlgorithm * _inputAlgorithm
static VtkImageDataToLinePolyDataFilter * New()
Create new objects with New() because of VTKs reference counting.

References VtkCompositeFilter::_inputAlgorithm, VtkCompositeFilter::_inputDataObjectType, _lineFilter, VtkCompositeFilter::_outputAlgorithm, VtkCompositeFilter::_outputDataObjectType, VtkImageDataToLinePolyDataFilter::New(), and VtkAlgorithmProperties::SetLookUpTable().

Referenced by VtkCompositeImageToCylindersFilter().

◆ SetUserProperty()

void VtkCompositeImageToCylindersFilter::SetUserProperty ( QString name,
QVariant value )
overridevirtual

Sets a user property. This should be implemented by subclasses.

Reimplemented from VtkAlgorithmProperties.

Definition at line 74 of file VtkCompositeImageToCylindersFilter.cpp.

76{
78
79 _lineFilter->SetUserProperty(name, value);
80
81 // VtkImageDataToLinePolyDataFilter is equal to _firstAlgorithm
82 // vtkTubeFilter is equal _outputAlgorithm
83 if (name.compare("NumberOfColors") == 0)
84 {
85 vtkLookupTable* lut = this->GetLookupTable("P-Colors");
86 if (lut)
87 {
88 lut->SetNumberOfTableValues(value.toInt());
89 }
90 }
91 else if (name.compare("NumberOfSides") == 0)
92 {
93 static_cast<vtkTubeFilter*>(_outputAlgorithm)
94 ->SetNumberOfSides(value.toInt());
95 }
96 else if (name.compare("Capping") == 0)
97 {
98 static_cast<vtkTubeFilter*>(_outputAlgorithm)
99 ->SetCapping(value.toBool());
100 }
101 else if (name.compare("RadiusFactor") == 0)
102 {
103 static_cast<vtkTubeFilter*>(_outputAlgorithm)
104 ->SetRadius(_lineFilter->GetImageSpacing() * value.toDouble());
105 }
106}
vtkLookupTable * GetLookupTable(const QString &array_name)
Returns the colour lookup table (if one has been assigned).
virtual void SetUserProperty(QString name, QVariant value)
Sets a user property. This should be implemented by subclasses.

References _lineFilter, VtkCompositeFilter::_outputAlgorithm, VtkAlgorithmProperties::GetLookupTable(), and VtkAlgorithmProperties::SetUserProperty().

◆ SetUserVectorProperty()

void VtkCompositeImageToCylindersFilter::SetUserVectorProperty ( QString name,
QList< QVariant > values )
overridevirtual

Sets a vector user property. This should be implemented by subclasses.

Reimplemented from VtkAlgorithmProperties.

Definition at line 108 of file VtkCompositeImageToCylindersFilter.cpp.

110{
112
113 _lineFilter->SetUserVectorProperty(name, values);
114
115 if (name.compare("TableRange") == 0)
116 {
117 vtkLookupTable* lut = this->GetLookupTable("P-Colors");
118 if (lut)
119 {
120 lut->SetTableRange(values[0].toDouble(), values[1].toDouble());
121 }
122 }
123 else if (name.compare("HueRange") == 0)
124 {
125 vtkLookupTable* lut = this->GetLookupTable("P-Colors");
126 if (lut)
127 {
128 lut->SetHueRange(values[0].toDouble(), values[1].toDouble());
129 }
130 }
131}
virtual void SetUserVectorProperty(QString name, QList< QVariant > values)
Sets a vector user property. This should be implemented by subclasses.

References _lineFilter, VtkAlgorithmProperties::GetLookupTable(), and VtkAlgorithmProperties::SetUserVectorProperty().

Member Data Documentation

◆ _lineFilter


The documentation for this class was generated from the following files: