VTK  9.7.1
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
46 #ifndef vtkFieldDataToAttributeDataFilter_h
47 #define vtkFieldDataToAttributeDataFilter_h
48 
49 #include "vtkDataSetAlgorithm.h"
50 #include "vtkFiltersCoreModule.h" // For export macro
51 #include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
52 
53 #define VTK_DATA_OBJECT_FIELD 0
54 #define VTK_POINT_DATA_FIELD 1
55 #define VTK_CELL_DATA_FIELD 2
56 
57 #define VTK_CELL_DATA 0
58 #define VTK_POINT_DATA 1
59 
60 VTK_ABI_NAMESPACE_BEGIN
61 class vtkDataArray;
63 class vtkFieldData;
64 
66  : public vtkDataSetAlgorithm
67 {
68 public:
69  void PrintSelf(ostream& os, vtkIndent indent) override;
71 
77 
79 
85  vtkSetMacro(InputField, int);
86  vtkGetMacro(InputField, int);
87  void SetInputFieldToDataObjectField() { this->SetInputField(VTK_DATA_OBJECT_FIELD); }
88  void SetInputFieldToPointDataField() { this->SetInputField(VTK_POINT_DATA_FIELD); }
89  void SetInputFieldToCellDataField() { this->SetInputField(VTK_CELL_DATA_FIELD); }
91 
93 
96  vtkSetMacro(OutputAttributeData, int);
97  vtkGetMacro(OutputAttributeData, int);
98  void SetOutputAttributeDataToCellData() { this->SetOutputAttributeData(VTK_CELL_DATA); }
99  void SetOutputAttributeDataToPointData() { this->SetOutputAttributeData(VTK_POINT_DATA); }
101 
103 
110  void SetScalarComponent(
111  int comp, const char* arrayName, int arrayComp, int min, int max, int normalize);
112  void SetScalarComponent(int comp, const char* arrayName, int arrayComp)
113  {
114  this->SetScalarComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);
115  }
116  const char* GetScalarComponentArrayName(int comp);
117  int GetScalarComponentArrayComponent(int comp);
118  int GetScalarComponentMinRange(int comp);
119  int GetScalarComponentMaxRange(int comp);
120  int GetScalarComponentNormalizeFlag(int comp);
122 
124 
131  void SetVectorComponent(
132  int comp, const char* arrayName, int arrayComp, int min, int max, int normalize);
133  void SetVectorComponent(int comp, const char* arrayName, int arrayComp)
134  {
135  this->SetVectorComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);
136  }
137  const char* GetVectorComponentArrayName(int comp);
138  int GetVectorComponentArrayComponent(int comp);
139  int GetVectorComponentMinRange(int comp);
140  int GetVectorComponentMaxRange(int comp);
141  int GetVectorComponentNormalizeFlag(int comp);
143 
145 
152  void SetNormalComponent(
153  int comp, const char* arrayName, int arrayComp, int min, int max, int normalize);
154  void SetNormalComponent(int comp, const char* arrayName, int arrayComp)
155  {
156  this->SetNormalComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);
157  }
158  const char* GetNormalComponentArrayName(int comp);
159  int GetNormalComponentArrayComponent(int comp);
160  int GetNormalComponentMinRange(int comp);
161  int GetNormalComponentMaxRange(int comp);
162  int GetNormalComponentNormalizeFlag(int comp);
164 
166 
173  void SetTensorComponent(
174  int comp, const char* arrayName, int arrayComp, int min, int max, int normalize);
175  void SetTensorComponent(int comp, const char* arrayName, int arrayComp)
176  {
177  this->SetTensorComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);
178  }
179  const char* GetTensorComponentArrayName(int comp);
180  int GetTensorComponentArrayComponent(int comp);
181  int GetTensorComponentMinRange(int comp);
182  int GetTensorComponentMaxRange(int comp);
183  int GetTensorComponentNormalizeFlag(int comp);
185 
187 
194  void SetTCoordComponent(
195  int comp, const char* arrayName, int arrayComp, int min, int max, int normalize);
196  void SetTCoordComponent(int comp, const char* arrayName, int arrayComp)
197  {
198  this->SetTCoordComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);
199  }
200  const char* GetTCoordComponentArrayName(int comp);
201  int GetTCoordComponentArrayComponent(int comp);
202  int GetTCoordComponentMinRange(int comp);
203  int GetTCoordComponentMaxRange(int comp);
204  int GetTCoordComponentNormalizeFlag(int comp);
206 
208 
212  vtkSetMacro(DefaultNormalize, vtkTypeBool);
213  vtkGetMacro(DefaultNormalize, vtkTypeBool);
214  vtkBooleanMacro(DefaultNormalize, vtkTypeBool);
216 
217  // Helper functions, made public to support other classes
218 
224  static int GetComponentsType(int numComp, vtkDataArray** arrays);
225 
232  static int ConstructArray(vtkDataArray* da, int comp, vtkDataArray* fieldArray, int fieldComp,
233  vtkIdType min, vtkIdType max, int normalize);
234 
238  static vtkDataArray* GetFieldArray(vtkFieldData* fd, const char* name, int comp);
239 
243  static void SetArrayName(vtkObject* self, char*& name, const char* newName);
244 
249  static int UpdateComponentRange(vtkDataArray* da, vtkIdType compRange[2]);
250 
255 
256 protected:
259 
261  vtkInformationVector*) override; // generate output data
262 
265 
266  int NumberOfScalarComponents; // the number of components to fill-in
267  char* ScalarArrays[4]; // the name of the arrays used to construct the scalar
268  int ScalarArrayComponents[4]; // the components of the arrays used to construct
269  vtkIdType ScalarComponentRange[4][2]; // the range of the components to use
270  int ScalarNormalize[4]; // flags control normalization
271 
272  char* VectorArrays[3]; // the name of the arrays used to construct the vectors
273  int VectorArrayComponents[3]; // the components of the arrays used to construct
274  vtkIdType VectorComponentRange[3][2]; // the range of the components to use
275  int VectorNormalize[3]; // flags control normalization
276 
277  char* GhostLevelArray; // the name of the array used to construct the ghost levels
278  int GhostLevelArrayComponent; // the component of the array used to construct
279  vtkIdType GhostLevelComponentRange[2]; // the range of the components to use
280  int GhostLevelNormalize; // flags control normalization
281 
282  char* NormalArrays[3]; // the name of the arrays used to construct the normals
283  int NormalArrayComponents[3]; // the components of the arrays used to construct
284  vtkIdType NormalComponentRange[3][2]; // the range of the components to use
285  int NormalNormalize[3]; // flags control normalization
286 
287  char* TensorArrays[9]; // the name of the arrays used to construct the tensors
288  int TensorArrayComponents[9]; // the components of the arrays used to construct
289  vtkIdType TensorComponentRange[9][2]; // the range of the components to use
290  int TensorNormalize[9]; // flags control normalization
291 
292  int NumberOfTCoordComponents; // the number of components to fill-in
293  char* TCoordArrays[3]; // the name of the arrays used to construct the tcoords
294  int TCoordArrayComponents[3]; // the components of the arrays used to construct
295  vtkIdType TCoordComponentRange[3][2]; // the range of the components to use
296  int TCoordNormalize[3]; // flags control normalization
297 
299 
300  void ConstructScalars(int num, vtkFieldData* fd, vtkDataSetAttributes* attr,
301  vtkIdType componentRange[4][2], char* arrays[4], int arrayComponents[4], int normalize[4],
302  int numComp);
303  void ConstructVectors(int num, vtkFieldData* fd, vtkDataSetAttributes* attr,
304  vtkIdType componentRange[3][2], char* arrays[3], int arrayComponents[3], int normalize[3]);
305  void ConstructGhostLevels(int num, vtkFieldData* fd, vtkDataSetAttributes* attr,
306  vtkIdType componentRange[2], char* array, int arrayComponent, int normalize);
307  void ConstructNormals(int num, vtkFieldData* fd, vtkDataSetAttributes* attr,
308  vtkIdType componentRange[3][2], char* arrays[3], int arrayComponents[3], int normalize[3]);
309  void ConstructTCoords(int num, vtkFieldData* fd, vtkDataSetAttributes* attr,
310  vtkIdType componentRange[3][2], char* arrays[3], int arrayComponents[3], int normalize[3],
311  int numComp);
312  void ConstructTensors(int num, vtkFieldData* fd, vtkDataSetAttributes* attr,
313  vtkIdType componentRange[9][2], char* arrays[9], int arrayComponents[9], int normalize[9]);
314  void ConstructFieldData(int num, vtkDataSetAttributes* attr);
315 
316 private:
318  void operator=(const vtkFieldDataToAttributeDataFilter&) = delete;
319 };
320 
321 VTK_ABI_NAMESPACE_END
322 #endif
#define VTK_POINT_DATA_FIELD
abstract base class for most VTK objects
Definition: vtkObject.h:52
void SetTCoordComponent(int comp, const char *arrayName, int arrayComp)
Define the components of the field to be used for the cell texture coord components.
Store vtkAlgorithm input/output information.
void SetVectorComponent(int comp, const char *arrayName, int arrayComp)
Define the component(s) of the field to be used for the vector components.
map field data to dataset attribute data
int vtkIdType
Definition: vtkType.h:363
int vtkTypeBool
Definition: vtkABI.h:64
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetInputFieldToCellDataField()
Specify which field data to use to generate the output attribute data.
a simple class to control print indentation
Definition: vtkIndent.h:28
void SetOutputAttributeDataToPointData()
Specify which attribute data to output: point or cell data attributes.
void SetScalarComponent(int comp, const char *arrayName, int arrayComp)
Define the component(s) of the field to be used for the scalar components.
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:44
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called within ProcessRequest when a request asks the algorithm to do its work.
represent and manipulate attribute data in a dataset
void SetInputFieldToPointDataField()
Specify which field data to use to generate the output attribute data.
virtual int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called within ProcessRequest when each filter in the pipeline decides what portion of its inp...
void SetNormalComponent(int comp, const char *arrayName, int arrayComp)
Define the component(s) of the field to be used for the normal components.
#define VTK_DATA_OBJECT_FIELD
void SetTensorComponent(int comp, const char *arrayName, int arrayComp)
Define the components of the field to be used for the tensor components.
void SetOutputAttributeDataToCellData()
Specify which attribute data to output: point or cell data attributes.
Store zero or more vtkInformation instances.
#define VTK_MARSHALAUTO
Superclass for algorithms that produce output of the same type as input.
void SetInputFieldToDataObjectField()
Specify which field data to use to generate the output attribute data.
#define VTK_CELL_DATA_FIELD
static vtkDataSetAlgorithm * New()
#define max(a, b)
Represents and manipulates a collection of data arrays.
Definition: vtkFieldData.h:51