VTK  9.3.20240329
vtkFieldDataToAttributeDataFilter.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
75 #ifndef vtkFieldDataToAttributeDataFilter_h
76 #define vtkFieldDataToAttributeDataFilter_h
77 
78 #include "vtkDataSetAlgorithm.h"
79 #include "vtkFiltersCoreModule.h" // For export macro
80 
81 #define VTK_DATA_OBJECT_FIELD 0
82 #define VTK_POINT_DATA_FIELD 1
83 #define VTK_CELL_DATA_FIELD 2
84 
85 #define VTK_CELL_DATA 0
86 #define VTK_POINT_DATA 1
87 
88 VTK_ABI_NAMESPACE_BEGIN
89 class vtkDataArray;
91 class vtkFieldData;
92 
93 class VTKFILTERSCORE_EXPORT vtkFieldDataToAttributeDataFilter : public vtkDataSetAlgorithm
94 {
95 public:
96  void PrintSelf(ostream& os, vtkIndent indent) override;
98 
104 
106 
112  vtkSetMacro(InputField, int);
113  vtkGetMacro(InputField, int);
114  void SetInputFieldToDataObjectField() { this->SetInputField(VTK_DATA_OBJECT_FIELD); }
115  void SetInputFieldToPointDataField() { this->SetInputField(VTK_POINT_DATA_FIELD); }
116  void SetInputFieldToCellDataField() { this->SetInputField(VTK_CELL_DATA_FIELD); }
118 
120 
123  vtkSetMacro(OutputAttributeData, int);
124  vtkGetMacro(OutputAttributeData, int);
125  void SetOutputAttributeDataToCellData() { this->SetOutputAttributeData(VTK_CELL_DATA); }
126  void SetOutputAttributeDataToPointData() { this->SetOutputAttributeData(VTK_POINT_DATA); }
128 
130 
138  int comp, const char* arrayName, int arrayComp, int min, int max, int normalize);
139  void SetScalarComponent(int comp, const char* arrayName, int arrayComp)
140  {
141  this->SetScalarComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);
142  }
143  const char* GetScalarComponentArrayName(int comp);
149 
151 
159  int comp, const char* arrayName, int arrayComp, int min, int max, int normalize);
160  void SetVectorComponent(int comp, const char* arrayName, int arrayComp)
161  {
162  this->SetVectorComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);
163  }
164  const char* GetVectorComponentArrayName(int comp);
170 
172 
180  int comp, const char* arrayName, int arrayComp, int min, int max, int normalize);
181  void SetNormalComponent(int comp, const char* arrayName, int arrayComp)
182  {
183  this->SetNormalComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);
184  }
185  const char* GetNormalComponentArrayName(int comp);
191 
193 
201  int comp, const char* arrayName, int arrayComp, int min, int max, int normalize);
202  void SetTensorComponent(int comp, const char* arrayName, int arrayComp)
203  {
204  this->SetTensorComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);
205  }
206  const char* GetTensorComponentArrayName(int comp);
212 
214 
222  int comp, const char* arrayName, int arrayComp, int min, int max, int normalize);
223  void SetTCoordComponent(int comp, const char* arrayName, int arrayComp)
224  {
225  this->SetTCoordComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);
226  }
227  const char* GetTCoordComponentArrayName(int comp);
233 
235 
239  vtkSetMacro(DefaultNormalize, vtkTypeBool);
240  vtkGetMacro(DefaultNormalize, vtkTypeBool);
241  vtkBooleanMacro(DefaultNormalize, vtkTypeBool);
243 
244  // Helper functions, made public to support other classes
245 
251  static int GetComponentsType(int numComp, vtkDataArray** arrays);
252 
259  static int ConstructArray(vtkDataArray* da, int comp, vtkDataArray* fieldArray, int fieldComp,
260  vtkIdType min, vtkIdType max, int normalize);
261 
265  static vtkDataArray* GetFieldArray(vtkFieldData* fd, const char* name, int comp);
266 
270  static void SetArrayName(vtkObject* self, char*& name, const char* newName);
271 
276  static int UpdateComponentRange(vtkDataArray* da, vtkIdType compRange[2]);
277 
282 
283 protected:
286 
288  vtkInformationVector*) override; // generate output data
289 
292 
293  int NumberOfScalarComponents; // the number of components to fill-in
294  char* ScalarArrays[4]; // the name of the arrays used to construct the scalar
295  int ScalarArrayComponents[4]; // the components of the arrays used to construct
296  vtkIdType ScalarComponentRange[4][2]; // the range of the components to use
297  int ScalarNormalize[4]; // flags control normalization
298 
299  char* VectorArrays[3]; // the name of the arrays used to construct the vectors
300  int VectorArrayComponents[3]; // the components of the arrays used to construct
301  vtkIdType VectorComponentRange[3][2]; // the range of the components to use
302  int VectorNormalize[3]; // flags control normalization
303 
304  char* GhostLevelArray; // the name of the array used to construct the ghost levels
305  int GhostLevelArrayComponent; // the component of the array used to construct
306  vtkIdType GhostLevelComponentRange[2]; // the range of the components to use
307  int GhostLevelNormalize; // flags control normalization
308 
309  char* NormalArrays[3]; // the name of the arrays used to construct the normals
310  int NormalArrayComponents[3]; // the components of the arrays used to construct
311  vtkIdType NormalComponentRange[3][2]; // the range of the components to use
312  int NormalNormalize[3]; // flags control normalization
313 
314  char* TensorArrays[9]; // the name of the arrays used to construct the tensors
315  int TensorArrayComponents[9]; // the components of the arrays used to construct
316  vtkIdType TensorComponentRange[9][2]; // the range of the components to use
317  int TensorNormalize[9]; // flags control normalization
318 
319  int NumberOfTCoordComponents; // the number of components to fill-in
320  char* TCoordArrays[3]; // the name of the arrays used to construct the tcoords
321  int TCoordArrayComponents[3]; // the components of the arrays used to construct
322  vtkIdType TCoordComponentRange[3][2]; // the range of the components to use
323  int TCoordNormalize[3]; // flags control normalization
324 
326 
328  vtkIdType componentRange[4][2], char* arrays[4], int arrayComponents[4], int normalize[4],
329  int numComp);
331  vtkIdType componentRange[3][2], char* arrays[3], int arrayComponents[3], int normalize[3]);
333  vtkIdType componentRange[2], char* array, int arrayComponent, int normalize);
335  vtkIdType componentRange[3][2], char* arrays[3], int arrayComponents[3], int normalize[3]);
337  vtkIdType componentRange[3][2], char* arrays[3], int arrayComponents[3], int normalize[3],
338  int numComp);
340  vtkIdType componentRange[9][2], char* arrays[9], int arrayComponents[9], int normalize[9]);
342 
343 private:
345  void operator=(const vtkFieldDataToAttributeDataFilter&) = delete;
346 };
347 
348 VTK_ABI_NAMESPACE_END
349 #endif
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:155
Superclass for algorithms that produce output of the same type as input.
represent and manipulate attribute data in a dataset
map field data to dataset attribute data
void SetOutputAttributeDataToPointData()
Specify which attribute data to output: point or cell data attributes.
static int GetComponentsType(int numComp, vtkDataArray **arrays)
Given an array of names of arrays in field data, return the common type for these arrays.
int GetNormalComponentMinRange(int comp)
Define the component(s) of the field to be used for the normal components.
void SetOutputAttributeDataToCellData()
Specify which attribute data to output: point or cell data attributes.
void SetInputFieldToCellDataField()
Specify which field data to use to generate the output attribute data.
int GetTensorComponentMaxRange(int comp)
Define the components of the field to be used for the tensor components.
int GetNormalComponentMaxRange(int comp)
Define the component(s) of the field to be used for the normal components.
void SetTensorComponent(int comp, const char *arrayName, int arrayComp)
Define the components of the field to be used for the tensor components.
void ConstructNormals(int num, vtkFieldData *fd, vtkDataSetAttributes *attr, vtkIdType componentRange[3][2], char *arrays[3], int arrayComponents[3], int normalize[3])
static int UpdateComponentRange(vtkDataArray *da, vtkIdType compRange[2])
Update the maximum and minimum component range values.
void ConstructVectors(int num, vtkFieldData *fd, vtkDataSetAttributes *attr, vtkIdType componentRange[3][2], char *arrays[3], int arrayComponents[3], int normalize[3])
const char * GetTensorComponentArrayName(int comp)
Define the components of the field to be used for the tensor components.
static void SetArrayName(vtkObject *self, char *&name, const char *newName)
Specify an array name for one of the components.
static vtkDataArray * GetFieldArray(vtkFieldData *fd, const char *name, int comp)
Return an array of a particular name from field data and do error checking.
const char * GetNormalComponentArrayName(int comp)
Define the component(s) of the field to be used for the normal components.
void SetInputFieldToDataObjectField()
Specify which field data to use to generate the output attribute data.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
int GetTCoordComponentArrayComponent(int comp)
Define the components of the field to be used for the cell texture coord components.
void ConstructFieldData(int num, vtkDataSetAttributes *attr)
void ConstructTCoords(int num, vtkFieldData *fd, vtkDataSetAttributes *attr, vtkIdType componentRange[3][2], char *arrays[3], int arrayComponents[3], int normalize[3], int numComp)
void SetNormalComponent(int comp, const char *arrayName, int arrayComp)
Define the component(s) of the field to be used for the normal components.
int GetTCoordComponentMaxRange(int comp)
Define the components of the field to be used for the cell texture coord components.
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called within ProcessRequest when a request asks the algorithm to do its work.
int GetTensorComponentMinRange(int comp)
Define the components of the field to be used for the tensor components.
static int ConstructArray(vtkDataArray *da, int comp, vtkDataArray *fieldArray, int fieldComp, vtkIdType min, vtkIdType max, int normalize)
Construct a portion of a data array (the comp portion) from another data array and its component.
int GetVectorComponentArrayComponent(int comp)
Define the component(s) of the field to be used for the vector components.
const char * GetScalarComponentArrayName(int comp)
Define the component(s) of the field to be used for the scalar components.
const char * GetTCoordComponentArrayName(int comp)
Define the components of the field to be used for the cell texture coord components.
int GetTensorComponentNormalizeFlag(int comp)
Define the components of the field to be used for the tensor components.
int GetScalarComponentMinRange(int comp)
Define the component(s) of the field to be used for the scalar components.
void SetVectorComponent(int comp, const char *arrayName, int arrayComp, int min, int max, int normalize)
Define the component(s) of the field to be used for the vector components.
int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
If output does not need exact extent, the I do not either.
int GetVectorComponentMaxRange(int comp)
Define the component(s) of the field to be used for the vector components.
int GetTensorComponentArrayComponent(int comp)
Define the components of the field to be used for the tensor components.
static vtkFieldDataToAttributeDataFilter * New()
Construct object with input field set to the data object field, and the output attribute data set to ...
const char * GetVectorComponentArrayName(int comp)
Define the component(s) of the field to be used for the vector components.
void SetTCoordComponent(int comp, const char *arrayName, int arrayComp)
Define the components of the field to be used for the cell texture coord components.
void SetScalarComponent(int comp, const char *arrayName, int arrayComp, int min, int max, int normalize)
Define the component(s) of the field to be used for the scalar components.
void ConstructGhostLevels(int num, vtkFieldData *fd, vtkDataSetAttributes *attr, vtkIdType componentRange[2], char *array, int arrayComponent, int normalize)
int GetTCoordComponentMinRange(int comp)
Define the components of the field to be used for the cell texture coord components.
void SetTCoordComponent(int comp, const char *arrayName, int arrayComp, int min, int max, int normalize)
Define the components of the field to be used for the cell texture coord components.
void ConstructTensors(int num, vtkFieldData *fd, vtkDataSetAttributes *attr, vtkIdType componentRange[9][2], char *arrays[9], int arrayComponents[9], int normalize[9])
void SetVectorComponent(int comp, const char *arrayName, int arrayComp)
Define the component(s) of the field to be used for the vector components.
int GetScalarComponentMaxRange(int comp)
Define the component(s) of the field to be used for the scalar components.
void SetScalarComponent(int comp, const char *arrayName, int arrayComp)
Define the component(s) of the field to be used for the scalar components.
void SetTensorComponent(int comp, const char *arrayName, int arrayComp, int min, int max, int normalize)
Define the components of the field to be used for the tensor components.
void ConstructScalars(int num, vtkFieldData *fd, vtkDataSetAttributes *attr, vtkIdType componentRange[4][2], char *arrays[4], int arrayComponents[4], int normalize[4], int numComp)
int GetNormalComponentArrayComponent(int comp)
Define the component(s) of the field to be used for the normal components.
int GetScalarComponentArrayComponent(int comp)
Define the component(s) of the field to be used for the scalar components.
int GetTCoordComponentNormalizeFlag(int comp)
Define the components of the field to be used for the cell texture coord components.
int GetVectorComponentMinRange(int comp)
Define the component(s) of the field to be used for the vector components.
int GetNormalComponentNormalizeFlag(int comp)
Define the component(s) of the field to be used for the normal components.
void SetInputFieldToPointDataField()
Specify which field data to use to generate the output attribute data.
void SetNormalComponent(int comp, const char *arrayName, int arrayComp, int min, int max, int normalize)
Define the component(s) of the field to be used for the normal components.
int GetScalarComponentNormalizeFlag(int comp)
Define the component(s) of the field to be used for the scalar components.
int GetVectorComponentNormalizeFlag(int comp)
Define the component(s) of the field to be used for the vector components.
represent and manipulate fields of data
Definition: vtkFieldData.h:162
a simple class to control print indentation
Definition: vtkIndent.h:108
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
abstract base class for most VTK objects
Definition: vtkObject.h:162
@ name
Definition: vtkX3D.h:219
int vtkTypeBool
Definition: vtkABI.h:64
#define VTK_POINT_DATA_FIELD
#define VTK_CELL_DATA_FIELD
#define VTK_DATA_OBJECT_FIELD
int vtkIdType
Definition: vtkType.h:315
#define max(a, b)