VTK  9.1.0
vtkArrayCalculator.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkArrayCalculator.h
5
6 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7 All rights reserved.
8 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9
10 This software is distributed WITHOUT ANY WARRANTY; without even
11 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12 PURPOSE. See the above copyright notice for more information.
13
14=========================================================================*/
81#ifndef vtkArrayCalculator_h
82#define vtkArrayCalculator_h
83
84#include "vtkDataObject.h" // For attribute types
85#include "vtkFiltersCoreModule.h" // For export macro
87#include "vtkTuple.h" // needed for vtkTuple
88#include <vector> // needed for vector
89
90class vtkDataSet;
91
92class VTKFILTERSCORE_EXPORT vtkArrayCalculator : public vtkPassInputTypeAlgorithm
93{
94public:
96 void PrintSelf(ostream& os, vtkIndent indent) override;
97
99
101
104 vtkSetStringMacro(Function);
105 vtkGetStringMacro(Function);
107
109
119 void AddScalarArrayName(const char* arrayName, int component = 0);
121 const char* arrayName, int component0 = 0, int component1 = 1, int component2 = 2);
123
125
131 void AddScalarVariable(const char* variableName, const char* arrayName, int component = 0);
132 void AddVectorVariable(const char* variableName, const char* arrayName, int component0 = 0,
133 int component1 = 1, int component2 = 2);
135
137
143 void AddCoordinateScalarVariable(const char* variableName, int component = 0);
145 const char* variableName, int component0 = 0, int component1 = 1, int component2 = 2);
147
149
155 vtkSetStringMacro(ResultArrayName);
156 vtkGetStringMacro(ResultArrayName);
158
160
164 vtkGetMacro(ResultArrayType, int);
165 vtkSetMacro(ResultArrayType, int);
167
169
175 vtkGetMacro(CoordinateResults, vtkTypeBool);
176 vtkSetMacro(CoordinateResults, vtkTypeBool);
177 vtkBooleanMacro(CoordinateResults, vtkTypeBool);
179
181
186 vtkGetMacro(ResultNormals, bool);
187 vtkSetMacro(ResultNormals, bool);
188 vtkBooleanMacro(ResultNormals, bool);
190
192
197 vtkGetMacro(ResultTCoords, bool);
198 vtkSetMacro(ResultTCoords, bool);
199 vtkBooleanMacro(ResultTCoords, bool);
201
206
207 static const int DEFAULT_ATTRIBUTE_TYPE = -1;
209
215 vtkSetMacro(AttributeType, int);
216 vtkGetMacro(AttributeType, int);
217 void SetAttributeTypeToDefault() { this->SetAttributeType(DEFAULT_ATTRIBUTE_TYPE); }
218 void SetAttributeTypeToPointData() { this->SetAttributeType(vtkDataObject::POINT); }
219 void SetAttributeTypeToCellData() { this->SetAttributeType(vtkDataObject::CELL); }
220 void SetAttributeTypeToEdgeData() { this->SetAttributeType(vtkDataObject::EDGE); }
221 void SetAttributeTypeToVertexData() { this->SetAttributeType(vtkDataObject::VERTEX); }
222 void SetAttributeTypeToRowData() { this->SetAttributeType(vtkDataObject::ROW); }
224
229
233 virtual void RemoveScalarVariables();
234
238 virtual void RemoveVectorVariables();
239
244
249
251
254 const std::vector<std::string>& GetScalarArrayNames() { return this->ScalarArrayNames; }
256 const std::vector<std::string>& GetVectorArrayNames() { return this->VectorArrayNames; }
258 const std::vector<std::string>& GetScalarVariableNames() { return this->ScalarVariableNames; }
260 const std::vector<std::string>& GetVectorVariableNames() { return this->VectorVariableNames; }
262 const std::vector<int>& GetSelectedScalarComponents() { return this->SelectedScalarComponents; }
264 const std::vector<vtkTuple<int, 3>>& GetSelectedVectorComponents()
265 {
266 return this->SelectedVectorComponents;
267 }
269 int GetNumberOfScalarArrays() { return static_cast<int>(this->ScalarArrayNames.size()); }
270 int GetNumberOfVectorArrays() { return static_cast<int>(this->VectorArrayNames.size()); }
272
274
280 vtkSetMacro(ReplaceInvalidValues, vtkTypeBool);
281 vtkGetMacro(ReplaceInvalidValues, vtkTypeBool);
282 vtkBooleanMacro(ReplaceInvalidValues, vtkTypeBool);
283 vtkSetMacro(ReplacementValue, double);
284 vtkGetMacro(ReplacementValue, double);
286
288
293 vtkSetMacro(IgnoreMissingArrays, bool);
294 vtkGetMacro(IgnoreMissingArrays, bool);
295 vtkBooleanMacro(IgnoreMissingArrays, bool);
297
302 {
303 FunctionParser, // vtkFunctionParser
304 ExprTkFunctionParser, // vtkExprTkFunctionParser
305 NumberOfFunctionParserTypes
306 };
307
309
315 {
316 this->FunctionParserType = FunctionParserTypes::FunctionParser;
317 this->Modified();
318 }
320 {
321 this->FunctionParserType = FunctionParserTypes::ExprTkFunctionParser;
322 this->Modified();
323 }
326
332
333protected:
336
338
340
345
353 static std::string CheckValidVariableName(const char* variableName);
354
356
357 char* Function;
359 std::vector<std::string> ScalarArrayNames;
360 std::vector<std::string> VectorArrayNames;
361 std::vector<std::string> ScalarVariableNames;
362 std::vector<std::string> VectorVariableNames;
364 std::vector<int> SelectedScalarComponents;
365 std::vector<vtkTuple<int, 3>> SelectedVectorComponents;
366
370
374 std::vector<std::string> CoordinateScalarVariableNames;
375 std::vector<std::string> CoordinateVectorVariableNames;
377 std::vector<vtkTuple<int, 3>> SelectedCoordinateVectorComponents;
378
380
381private:
382 vtkArrayCalculator(const vtkArrayCalculator&) = delete;
383 void operator=(const vtkArrayCalculator&) = delete;
384
385 // Do the bulk of the work
386 template <typename TFunctionParser>
387 int ProcessDataObject(vtkDataObject* input, vtkDataObject* output);
388};
389
390#endif
perform mathematical operations on data in field data arrays
FunctionParserTypes
Enum that includes the types of parsers that can be used.
void SetFunctionParserTypeToFunctionParser()
Set/Get the FunctionParser type that will be used.
const std::vector< std::string > & GetVectorArrayNames()
Methods to get information about the current variables.
void RemoveAllVariables()
Remove all the variable names and their associated array names.
const char * GetAttributeTypeAsString()
Returns a string representation of the calculator's AttributeType.
void SetAttributeTypeToVertexData()
Control which AttributeType the filter operates on (point data or cell data for vtkDataSets).
virtual void RemoveCoordinateVectorVariables()
Remove all the coordinate variables.
std::string GetVectorVariableName(int i)
Methods to get information about the current variables.
void SetAttributeTypeToRowData()
Control which AttributeType the filter operates on (point data or cell data for vtkDataSets).
const std::vector< vtkTuple< int, 3 > > & GetSelectedVectorComponents()
Methods to get information about the current variables.
void SetAttributeTypeToDefault()
Control which AttributeType the filter operates on (point data or cell data for vtkDataSets).
vtkSetEnumMacro(FunctionParserType, FunctionParserTypes)
Set/Get the FunctionParser type that will be used.
vtkTuple< int, 3 > GetSelectedVectorComponents(int i)
Methods to get information about the current variables.
const std::vector< std::string > & GetScalarArrayNames()
Methods to get information about the current variables.
int GetNumberOfVectorArrays()
Methods to get information about the current variables.
vtkTypeBool ReplaceInvalidValues
const std::vector< int > & GetSelectedScalarComponents()
Methods to get information about the current variables.
std::vector< std::string > VectorVariableNames
void AddScalarVariable(const char *variableName, const char *arrayName, int component=0)
Add a variable name, a corresponding array name, and which components of the array to use.
const std::vector< std::string > & GetScalarVariableNames()
Methods to get information about the current variables.
vtkTypeBool CoordinateResults
std::vector< vtkTuple< int, 3 > > SelectedVectorComponents
void SetAttributeTypeToEdgeData()
Control which AttributeType the filter operates on (point data or cell data for vtkDataSets).
vtkDataSet * GetDataSetOutput()
Returns the output of the filter downcast to a vtkDataSet or nullptr if the cast fails.
vtkGetEnumMacro(FunctionParserType, FunctionParserTypes)
Set/Get the FunctionParser type that will be used.
std::string GetScalarArrayName(int i)
Methods to get information about the current variables.
std::string GetScalarVariableName(int i)
Methods to get information about the current variables.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
int GetNumberOfScalarArrays()
Methods to get information about the current variables.
std::vector< vtkTuple< int, 3 > > SelectedCoordinateVectorComponents
void AddVectorArrayName(const char *arrayName, int component0=0, int component1=1, int component2=2)
Add an array name to the list of arrays used in the function and specify which components of the arra...
void AddCoordinateScalarVariable(const char *variableName, int component=0)
Add a variable name, a corresponding array name, and which components of the array to use.
virtual void RemoveVectorVariables()
Remove all the scalar variable names and their associated array names.
static std::string CheckValidVariableName(const char *variableName)
A variable name is valid if it's sanitized or enclosed in quotes.
void SetAttributeTypeToCellData()
Control which AttributeType the filter operates on (point data or cell data for vtkDataSets).
std::vector< int > SelectedScalarComponents
void AddVectorVariable(const char *variableName, const char *arrayName, int component0=0, int component1=1, int component2=2)
Add a variable name, a corresponding array name, and which components of the array to use.
FunctionParserTypes FunctionParserType
const std::vector< std::string > & GetVectorVariableNames()
Methods to get information about the current variables.
std::vector< std::string > CoordinateVectorVariableNames
int GetAttributeTypeFromInput(vtkDataObject *input)
Get the attribute type for the input.
void AddCoordinateVectorVariable(const char *variableName, int component0=0, int component1=1, int component2=2)
Add a variable name, a corresponding array name, and which components of the array to use.
std::vector< std::string > ScalarVariableNames
std::vector< int > SelectedCoordinateScalarComponents
void SetFunctionParserTypeToExprTkFunctionParser()
Set/Get the FunctionParser type that will be used.
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called within ProcessRequest when a request asks the algorithm to do its work.
std::vector< std::string > ScalarArrayNames
int GetSelectedScalarComponent(int i)
Methods to get information about the current variables.
virtual void RemoveScalarVariables()
Remove all the scalar variable names and their associated array names.
void AddScalarArrayName(const char *arrayName, int component=0)
Add an array name to the list of arrays used in the function and specify which components of the arra...
int FillInputPortInformation(int, vtkInformation *) override
Fill the input port information objects for this algorithm.
void SetAttributeTypeToPointData()
Control which AttributeType the filter operates on (point data or cell data for vtkDataSets).
~vtkArrayCalculator() override
virtual void RemoveCoordinateScalarVariables()
Remove all the coordinate variables.
std::vector< std::string > VectorArrayNames
std::string GetVectorArrayName(int i)
Methods to get information about the current variables.
std::vector< std::string > CoordinateScalarVariableNames
static vtkArrayCalculator * New()
general representation of visualization data
Definition: vtkDataObject.h:69
abstract class to specify dataset behavior
Definition: vtkDataSet.h:66
a simple class to control print indentation
Definition: vtkIndent.h:43
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
virtual void Modified()
Update the modification time for this object.
Superclass for algorithms that produce output of the same type as input.
@ component
Definition: vtkX3D.h:181
@ string
Definition: vtkX3D.h:496
int vtkTypeBool
Definition: vtkABI.h:69