OGS
VtkCompositeColorByHeightFilter.cpp
Go to the documentation of this file.
1 
15 // ** INCLUDES **
17 
18 #include <vtkDataSetSurfaceFilter.h>
19 #include <vtkSmartPointer.h>
20 #include <vtkUnstructuredGrid.h>
21 
22 #include "VtkColorByHeightFilter.h"
23 #include "VtkColorLookupTable.h"
24 
26  vtkAlgorithm* inputAlgorithm)
27  : VtkCompositeFilter(inputAlgorithm)
28 {
29  this->init();
30 }
31 
33 {
34  this->_inputDataObjectType = VTK_DATA_SET;
35  this->_outputDataObjectType = VTK_POLY_DATA;
36 
37  vtkSmartPointer<vtkDataSetSurfaceFilter> surfaceFilter;
39 
40  if (dynamic_cast<vtkUnstructuredGrid*>(
41  _inputAlgorithm->GetOutputDataObject(0)))
42  {
43  surfaceFilter = vtkSmartPointer<vtkDataSetSurfaceFilter>::New();
44  surfaceFilter->SetInputConnection(_inputAlgorithm->GetOutputPort());
45  heightFilter->SetInputConnection(surfaceFilter->GetOutputPort());
46  }
47  else
48  {
49  heightFilter->SetInputConnection(_inputAlgorithm->GetOutputPort());
50  }
51 
52  DataHolderLib::Color a{{0, 0, 255, 255}}; // blue
53  DataHolderLib::Color b{{0, 255, 0, 255}}; // green
54  DataHolderLib::Color c{{255, 255, 0, 255}}; // yellow
55  DataHolderLib::Color d{{155, 100, 50, 255}}; // brown
56  DataHolderLib::Color e{{255, 0, 0, 255}}; // red
57  VtkColorLookupTable* ColorLookupTable = heightFilter->GetColorLookupTable();
59  ColorLookupTable->setColor(-50, a);
60  ColorLookupTable->setColor(0, a);
61  ColorLookupTable->setColor(1, b); // instant change at 0m a.s.l.
62  ColorLookupTable->setColor(200, b); // green at about 200m a.s.l.
63  ColorLookupTable->setColor(
64  500, c); // yellow at about 500m and changing to red from then on
65  ColorLookupTable->setColor(1000, d);
66  ColorLookupTable->setColor(2000, e);
67  ColorLookupTable->SetTableRange(-35, 2000);
68  ColorLookupTable->Build();
69 
70  // This passes ownership of the ColorLookupTable to VtkVisPointSetItem
71  heightFilter->SetLookUpTable("P-Colors", ColorLookupTable);
72  heightFilter->Update();
73 
74  _outputAlgorithm = heightFilter;
75  _activeAttributeName = heightFilter->GetActiveAttribute();
76 }
77 
79  QVariant value)
80 {
81  Q_UNUSED(name);
82  Q_UNUSED(value);
83 }
Definition of the VtkColorByHeightFilter class.
Definition of the VtkColorLookupTable class.
Definition of the VtkCompositeColorByHeightFilter class.
QString GetActiveAttribute() const
Returns the desired active attribute.
void SetLookUpTable(const QString &array_name, vtkLookupTable *lut)
Sets a colour lookup table for the given scalar array of the VtkVisPipelineItem.
VTK filter object for colouring vtkPolyData objects based on z-coordinates.
static VtkColorByHeightFilter * New()
Create new objects with New() because of VTKs object reference counting.
Calculates and stores a colour lookup table.
void setColor(double pos, DataHolderLib::Color const &color)
void Build() override
Builds the colour table based on the previously set parameters. This method should only be called aft...
void setInterpolationType(DataHolderLib::LUTType type)
Sets the type of interpolation.
VtkCompositeColorByHeightFilter(vtkAlgorithm *inputAlgorithm)
void SetUserProperty(QString name, QVariant value) override
Sets a user property. This should be implemented by subclasses.
Is used to combine several filter in one VtkVisPipelineItem. You can use vtk filter and custom filter...
vtkAlgorithm * _outputAlgorithm
vtkAlgorithm * _inputAlgorithm
std::array< unsigned char, 4 > Color
Definition: Color.h:24