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
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;
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