VTK  9.2.6
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 =========================================================================*/
87 #ifndef vtkFieldDataToAttributeDataFilter_h
88 #define vtkFieldDataToAttributeDataFilter_h
89 
90 #include "vtkDataSetAlgorithm.h"
91 #include "vtkFiltersCoreModule.h" // For export macro
92 
93 #define VTK_DATA_OBJECT_FIELD 0
94 #define VTK_POINT_DATA_FIELD 1
95 #define VTK_CELL_DATA_FIELD 2
96 
97 #define VTK_CELL_DATA 0
98 #define VTK_POINT_DATA 1
99 
100 class vtkDataArray;
102 class vtkFieldData;
103 
104 class VTKFILTERSCORE_EXPORT vtkFieldDataToAttributeDataFilter : public vtkDataSetAlgorithm
105 {
106 public:
107  void PrintSelf(ostream& os, vtkIndent indent) override;
109 
115 
117 
123  vtkSetMacro(InputField, int);
124  vtkGetMacro(InputField, int);
125  void SetInputFieldToDataObjectField() { this->SetInputField(VTK_DATA_OBJECT_FIELD); }
126  void SetInputFieldToPointDataField() { this->SetInputField(VTK_POINT_DATA_FIELD); }
127  void SetInputFieldToCellDataField() { this->SetInputField(VTK_CELL_DATA_FIELD); }
129 
131 
134  vtkSetMacro(OutputAttributeData, int);
135  vtkGetMacro(OutputAttributeData, int);
136  void SetOutputAttributeDataToCellData() { this->SetOutputAttributeData(VTK_CELL_DATA); }
137  void SetOutputAttributeDataToPointData() { this->SetOutputAttributeData(VTK_POINT_DATA); }
139 
141 
149  int comp, const char* arrayName, int arrayComp, int min, int max, int normalize);
150  void SetScalarComponent(int comp, const char* arrayName, int arrayComp)
151  {
152  this->SetScalarComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);
153  }
154  const char* GetScalarComponentArrayName(int comp);
160 
162 
170  int comp, const char* arrayName, int arrayComp, int min, int max, int normalize);
171  void SetVectorComponent(int comp, const char* arrayName, int arrayComp)
172  {
173  this->SetVectorComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);
174  }
175  const char* GetVectorComponentArrayName(int comp);
181 
183 
191  int comp, const char* arrayName, int arrayComp, int min, int max, int normalize);
192  void SetNormalComponent(int comp, const char* arrayName, int arrayComp)
193  {
194  this->SetNormalComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);
195  }
196  const char* GetNormalComponentArrayName(int comp);
202 
204 
212  int comp, const char* arrayName, int arrayComp, int min, int max, int normalize);
213  void SetTensorComponent(int comp, const char* arrayName, int arrayComp)
214  {
215  this->SetTensorComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);
216  }
217  const char* GetTensorComponentArrayName(int comp);
223 
225 
233  int comp, const char* arrayName, int arrayComp, int min, int max, int normalize);
234  void SetTCoordComponent(int comp, const char* arrayName, int arrayComp)
235  {
236  this->SetTCoordComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);
237  }
238  const char* GetTCoordComponentArrayName(int comp);
244 
246 
250  vtkSetMacro(DefaultNormalize, vtkTypeBool);
251  vtkGetMacro(DefaultNormalize, vtkTypeBool);
252  vtkBooleanMacro(DefaultNormalize, vtkTypeBool);
254 
255  // Helper functions, made public to support other classes
256 
262  static int GetComponentsType(int numComp, vtkDataArray** arrays);
263 
270  static int ConstructArray(vtkDataArray* da, int comp, vtkDataArray* fieldArray, int fieldComp,
271  vtkIdType min, vtkIdType max, int normalize);
272 
276  static vtkDataArray* GetFieldArray(vtkFieldData* fd, const char* name, int comp);
277 
281  static void SetArrayName(vtkObject* self, char*& name, const char* newName);
282 
287  static int UpdateComponentRange(vtkDataArray* da, vtkIdType compRange[2]);
288 
293 
294 protected:
297 
299  vtkInformationVector*) override; // generate output data
300 
303 
304  int NumberOfScalarComponents; // the number of components to fill-in
305  char* ScalarArrays[4]; // the name of the arrays used to construct the scalar
306  int ScalarArrayComponents[4]; // the components of the arrays used to construct
307  vtkIdType ScalarComponentRange[4][2]; // the range of the components to use
308  int ScalarNormalize[4]; // flags control normalization
309 
310  char* VectorArrays[3]; // the name of the arrays used to construct the vectors
311  int VectorArrayComponents[3]; // the components of the arrays used to construct
312  vtkIdType VectorComponentRange[3][2]; // the range of the components to use
313  int VectorNormalize[3]; // flags control normalization
314 
315  char* GhostLevelArray; // the name of the array used to construct the ghost levels
316  int GhostLevelArrayComponent; // the component of the array used to construct
317  vtkIdType GhostLevelComponentRange[2]; // the range of the components to use
318  int GhostLevelNormalize; // flags control normalization
319 
320  char* NormalArrays[3]; // the name of the arrays used to construct the normals
321  int NormalArrayComponents[3]; // the components of the arrays used to construct
322  vtkIdType NormalComponentRange[3][2]; // the range of the components to use
323  int NormalNormalize[3]; // flags control normalization
324 
325  char* TensorArrays[9]; // the name of the arrays used to construct the tensors
326  int TensorArrayComponents[9]; // the components of the arrays used to construct
327  vtkIdType TensorComponentRange[9][2]; // the range of the components to use
328  int TensorNormalize[9]; // flags control normalization
329 
330  int NumberOfTCoordComponents; // the number of components to fill-in
331  char* TCoordArrays[3]; // the name of the arrays used to construct the tcoords
332  int TCoordArrayComponents[3]; // the components of the arrays used to construct
333  vtkIdType TCoordComponentRange[3][2]; // the range of the components to use
334  int TCoordNormalize[3]; // flags control normalization
335 
337 
339  vtkIdType componentRange[4][2], char* arrays[4], int arrayComponents[4], int normalize[4],
340  int numComp);
342  vtkIdType componentRange[3][2], char* arrays[3], int arrayComponents[3], int normalize[3]);
344  vtkIdType componentRange[2], char* array, int arrayComponent, int normalize);
346  vtkIdType componentRange[3][2], char* arrays[3], int arrayComponents[3], int normalize[3]);
348  vtkIdType componentRange[3][2], char* arrays[3], int arrayComponents[3], int normalize[3],
349  int numComp);
351  vtkIdType componentRange[9][2], char* arrays[9], int arrayComponents[9], int normalize[9]);
353 
354 private:
356  void operator=(const vtkFieldDataToAttributeDataFilter&) = delete;
357 };
358 
359 #endif
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:165
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:172
a simple class to control print indentation
Definition: vtkIndent.h:119
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
abstract base class for most VTK objects
Definition: vtkObject.h:82
@ 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:332
#define max(a, b)