VTK  9.0.1
vtkFieldDataToAttributeDataFilter.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkFieldDataToAttributeDataFilter.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 =========================================================================*/
55 #ifndef vtkFieldDataToAttributeDataFilter_h
56 #define vtkFieldDataToAttributeDataFilter_h
57 
58 #include "vtkDataSetAlgorithm.h"
59 #include "vtkFiltersCoreModule.h" // For export macro
60 
61 #define VTK_DATA_OBJECT_FIELD 0
62 #define VTK_POINT_DATA_FIELD 1
63 #define VTK_CELL_DATA_FIELD 2
64 
65 #define VTK_CELL_DATA 0
66 #define VTK_POINT_DATA 1
67 
68 class vtkDataArray;
70 class vtkFieldData;
71 
72 class VTKFILTERSCORE_EXPORT vtkFieldDataToAttributeDataFilter : public vtkDataSetAlgorithm
73 {
74 public:
75  void PrintSelf(ostream& os, vtkIndent indent) override;
77 
83 
85 
91  vtkSetMacro(InputField, int);
92  vtkGetMacro(InputField, int);
93  void SetInputFieldToDataObjectField() { this->SetInputField(VTK_DATA_OBJECT_FIELD); }
94  void SetInputFieldToPointDataField() { this->SetInputField(VTK_POINT_DATA_FIELD); }
95  void SetInputFieldToCellDataField() { this->SetInputField(VTK_CELL_DATA_FIELD); }
97 
99 
102  vtkSetMacro(OutputAttributeData, int);
103  vtkGetMacro(OutputAttributeData, int);
104  void SetOutputAttributeDataToCellData() { this->SetOutputAttributeData(VTK_CELL_DATA); }
105  void SetOutputAttributeDataToPointData() { this->SetOutputAttributeData(VTK_POINT_DATA); }
107 
109 
117  int comp, const char* arrayName, int arrayComp, int min, int max, int normalize);
118  void SetScalarComponent(int comp, const char* arrayName, int arrayComp)
119  {
120  this->SetScalarComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);
121  }
122  const char* GetScalarComponentArrayName(int comp);
128 
130 
138  int comp, const char* arrayName, int arrayComp, int min, int max, int normalize);
139  void SetVectorComponent(int comp, const char* arrayName, int arrayComp)
140  {
141  this->SetVectorComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);
142  }
143  const char* GetVectorComponentArrayName(int comp);
149 
151 
159  int comp, const char* arrayName, int arrayComp, int min, int max, int normalize);
160  void SetNormalComponent(int comp, const char* arrayName, int arrayComp)
161  {
162  this->SetNormalComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);
163  }
164  const char* GetNormalComponentArrayName(int comp);
170 
172 
180  int comp, const char* arrayName, int arrayComp, int min, int max, int normalize);
181  void SetTensorComponent(int comp, const char* arrayName, int arrayComp)
182  {
183  this->SetTensorComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);
184  }
185  const char* GetTensorComponentArrayName(int comp);
191 
193 
201  int comp, const char* arrayName, int arrayComp, int min, int max, int normalize);
202  void SetTCoordComponent(int comp, const char* arrayName, int arrayComp)
203  {
204  this->SetTCoordComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);
205  }
206  const char* GetTCoordComponentArrayName(int comp);
212 
214 
218  vtkSetMacro(DefaultNormalize, vtkTypeBool);
219  vtkGetMacro(DefaultNormalize, vtkTypeBool);
220  vtkBooleanMacro(DefaultNormalize, vtkTypeBool);
222 
223  // Helper functions, made public to support other classes
224 
230  static int GetComponentsType(int numComp, vtkDataArray** arrays);
231 
238  static int ConstructArray(vtkDataArray* da, int comp, vtkDataArray* frray, int fieldComp,
239  vtkIdType min, vtkIdType max, int normalize);
240 
244  static vtkDataArray* GetFieldArray(vtkFieldData* fd, const char* name, int comp);
245 
249  static void SetArrayName(vtkObject* self, char*& name, const char* newName);
250 
255  static int UpdateComponentRange(vtkDataArray* da, vtkIdType compRange[2]);
256 
261 
262 protected:
265 
267  vtkInformationVector*) override; // generate output data
268 
271 
272  int NumberOfScalarComponents; // the number of components to fill-in
273  char* ScalarArrays[4]; // the name of the arrays used to construct the scalar
274  int ScalarArrayComponents[4]; // the components of the arrays used to construct
275  vtkIdType ScalarComponentRange[4][2]; // the range of the components to use
276  int ScalarNormalize[4]; // flags control normalization
277 
278  char* VectorArrays[3]; // the name of the arrays used to construct the vectors
279  int VectorArrayComponents[3]; // the components of the arrays used to construct
280  vtkIdType VectorComponentRange[3][2]; // the range of the components to use
281  int VectorNormalize[3]; // flags control normalization
282 
283  char* GhostLevelArray; // the name of the array used to construct the ghost levels
284  int GhostLevelArrayComponent; // the component of the array used to construct
285  vtkIdType GhostLevelComponentRange[2]; // the range of the components to use
286  int GhostLevelNormalize; // flags control normalization
287 
288  char* NormalArrays[3]; // the name of the arrays used to construct the normals
289  int NormalArrayComponents[3]; // the components of the arrays used to construct
290  vtkIdType NormalComponentRange[3][2]; // the range of the components to use
291  int NormalNormalize[3]; // flags control normalization
292 
293  char* TensorArrays[9]; // the name of the arrays used to construct the tensors
294  int TensorArrayComponents[9]; // the components of the arrays used to construct
295  vtkIdType TensorComponentRange[9][2]; // the range of the components to use
296  int TensorNormalize[9]; // flags control normalization
297 
298  int NumberOfTCoordComponents; // the number of components to fill-in
299  char* TCoordArrays[3]; // the name of the arrays used to construct the tcoords
300  int TCoordArrayComponents[3]; // the components of the arrays used to construct
301  vtkIdType TCoordComponentRange[3][2]; // the range of the components to use
302  int TCoordNormalize[3]; // flags control normalization
303 
305 
307  vtkIdType componentRange[4][2], char* arrays[4], int arrayComponents[4], int normalize[4],
308  int numComp);
310  vtkIdType componentRange[3][2], char* arrays[3], int arrayComponents[3], int normalize[3]);
312  vtkIdType componentRange[2], char* array, int arrayComponent, int normalize);
314  vtkIdType componentRange[3][2], char* arrays[3], int arrayComponents[3], int normalize[3]);
316  vtkIdType componentRange[3][2], char* arrays[3], int arrayComponents[3], int normalize[3],
317  int numComp);
319  vtkIdType componentRange[9][2], char* arrays[9], int arrayComponents[9], int normalize[9]);
321 
322 private:
324  void operator=(const vtkFieldDataToAttributeDataFilter&) = delete;
325 };
326 
327 #endif
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:50
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
static int GetComponentsType(int numComp, vtkDataArray **arrays)
Given an array of names of arrays in field data, return the common type for these arrays.
void SetTensorComponent(int comp, const char *arrayName, int arrayComp)
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)
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)
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
int GetTCoordComponentArrayComponent(int comp)
static int ConstructArray(vtkDataArray *da, int comp, vtkDataArray *frray, 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.
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)
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
This is called within ProcessRequest when a request asks the algorithm to do its work.
int GetVectorComponentArrayComponent(int comp)
const char * GetScalarComponentArrayName(int comp)
const char * GetTCoordComponentArrayName(int comp)
int GetTensorComponentNormalizeFlag(int comp)
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 GetTensorComponentArrayComponent(int comp)
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)
void SetTCoordComponent(int comp, const char *arrayName, int arrayComp)
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)
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)
void SetScalarComponent(int comp, const char *arrayName, int arrayComp)
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)
int GetScalarComponentArrayComponent(int comp)
int GetTCoordComponentNormalizeFlag(int comp)
int GetNormalComponentNormalizeFlag(int comp)
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)
int GetVectorComponentNormalizeFlag(int comp)
represent and manipulate fields of data
Definition: vtkFieldData.h:54
a simple class to control print indentation
Definition: vtkIndent.h:34
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
abstract base class for most VTK objects
Definition: vtkObject.h:63
@ name
Definition: vtkX3D.h:225
int vtkTypeBool
Definition: vtkABI.h:69
#define VTK_POINT_DATA_FIELD
#define VTK_CELL_DATA_FIELD
#define VTK_DATA_OBJECT_FIELD
int vtkIdType
Definition: vtkType.h:338
#define max(a, b)