TTK
Loading...
Searching...
No Matches
ttkPointDataSelector.h
Go to the documentation of this file.
1
21
22#pragma once
23
24#include <array>
25#include <limits>
26#include <string>
27#include <vtkDataArraySelection.h>
28
29// VTK Module
30#include <ttkPointDataSelectorModule.h>
31
32// ttk code includes
33#include <ttkAlgorithm.h>
34
35class vtkDataSet;
36
37class TTKPOINTDATASELECTOR_EXPORT ttkPointDataSelector : public ttkAlgorithm {
38
39public:
42
43 vtkSetMacro(RegexpString, const std::string &);
44
45 void SetRangeId(int data0, int data1) {
46 RangeId[0] = data0;
47 RangeId[1] = data1;
48 Modified();
49 }
50 int *GetRangeId() {
51 return RangeId.data();
52 }
53
54 vtkSetMacro(RenameSelected, bool);
55 vtkGetMacro(RenameSelected, bool);
56
57 vtkSetMacro(SelectedFieldName, const std::string &);
58 vtkGetMacro(SelectedFieldName, std::string);
59
60 void AddScalarField(const std::string &s) {
61 SelectedFields.emplace_back(s);
62 Modified();
63 }
64
66 SelectedFields.clear();
67 Modified();
68 }
69
70 vtkDataArraySelection *GetRangeIds() {
71 vtkDataArraySelection *arr = vtkDataArraySelection::New();
72 arr->SetArraySetting("0", true);
73 const auto nFields = AvailableFields.size();
74 arr->SetArraySetting(
75 std::to_string(nFields == 0 ? 0 : nFields - 1).c_str(), true);
76 return arr;
77 }
78
79protected:
81
82 int RequestInformation(vtkInformation *request,
83 vtkInformationVector **inputVector,
84 vtkInformationVector *outputVector) override;
85
86 int FillInputPortInformation(int port, vtkInformation *info) override;
87 int FillOutputPortInformation(int port, vtkInformation *info) override;
88 int RequestData(vtkInformation *request,
89 vtkInformationVector **inputVector,
90 vtkInformationVector *outputVector) override;
91
92 void FillAvailableFields(vtkDataSet *input);
93
94private:
95 bool RenameSelected{false};
96 std::string SelectedFieldName{"SelectedField"};
97 std::vector<std::string> SelectedFields{};
98 std::vector<std::string> AvailableFields{};
99 std::string RegexpString{".*"};
100 std::array<int, 2> RangeId{0, std::numeric_limits<int>::max()};
101};
virtual int RequestData(vtkInformation *ttkNotUsed(request), vtkInformationVector **ttkNotUsed(inputVectors), vtkInformationVector *ttkNotUsed(outputVector))
virtual int RequestInformation(vtkInformation *ttkNotUsed(request), vtkInformationVector **ttkNotUsed(inputVectors), vtkInformationVector *ttkNotUsed(outputVector))
int FillInputPortInformation(int ttkNotUsed(port), vtkInformation *ttkNotUsed(info)) override
int FillOutputPortInformation(int ttkNotUsed(port), vtkInformation *ttkNotUsed(info)) override
TTK VTK-filter that selects scalar fields on input with shallow copy.
void AddScalarField(const std::string &s)
void SetRangeId(int data0, int data1)
static ttkPointDataSelector * New()
vtkDataArraySelection * GetRangeIds()