VTK
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 =========================================================================*/
58 #ifndef vtkFieldDataToAttributeDataFilter_h
59 #define vtkFieldDataToAttributeDataFilter_h
60 
61 #include "vtkFiltersCoreModule.h" // For export macro
62 #include "vtkDataSetAlgorithm.h"
63 
64 #define VTK_DATA_OBJECT_FIELD 0
65 #define VTK_POINT_DATA_FIELD 1
66 #define VTK_CELL_DATA_FIELD 2
67 
68 #define VTK_CELL_DATA 0
69 #define VTK_POINT_DATA 1
70 
71 class vtkDataArray;
73 class vtkFieldData;
74 
75 class VTKFILTERSCORE_EXPORT vtkFieldDataToAttributeDataFilter : public vtkDataSetAlgorithm
76 {
77 public:
78  void PrintSelf(ostream& os, vtkIndent indent) override;
80 
86 
88 
94  vtkSetMacro(InputField,int);
95  vtkGetMacro(InputField,int);
97  {this->SetInputField(VTK_DATA_OBJECT_FIELD);};
99  {this->SetInputField(VTK_POINT_DATA_FIELD);};
101  {this->SetInputField(VTK_CELL_DATA_FIELD);};
103 
105 
108  vtkSetMacro(OutputAttributeData,int);
109  vtkGetMacro(OutputAttributeData,int);
111  {this->SetOutputAttributeData(VTK_CELL_DATA);};
113  {this->SetOutputAttributeData(VTK_POINT_DATA);};
115 
117 
124  void SetScalarComponent(int comp, const char *arrayName, int arrayComp,
125  int min, int max, int normalize);
126  void SetScalarComponent(int comp, const char *arrayName, int arrayComp)
127  {this->SetScalarComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);};
128  const char *GetScalarComponentArrayName(int comp);
129  int GetScalarComponentArrayComponent(int comp);
130  int GetScalarComponentMinRange(int comp);
131  int GetScalarComponentMaxRange(int comp);
132  int GetScalarComponentNormalizeFlag(int comp);
134 
136 
143  void SetVectorComponent(int comp, const char *arrayName, int arrayComp,
144  int min, int max, int normalize);
145  void SetVectorComponent(int comp, const char *arrayName, int arrayComp)
146  {this->SetVectorComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);};
147  const char *GetVectorComponentArrayName(int comp);
148  int GetVectorComponentArrayComponent(int comp);
149  int GetVectorComponentMinRange(int comp);
150  int GetVectorComponentMaxRange(int comp);
151  int GetVectorComponentNormalizeFlag(int comp);
153 
155 
162  void SetNormalComponent(int comp, const char *arrayName, int arrayComp,
163  int min, int max, int normalize);
164  void SetNormalComponent(int comp, const char *arrayName, int arrayComp)
165  {this->SetNormalComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);};
166  const char *GetNormalComponentArrayName(int comp);
167  int GetNormalComponentArrayComponent(int comp);
168  int GetNormalComponentMinRange(int comp);
169  int GetNormalComponentMaxRange(int comp);
170  int GetNormalComponentNormalizeFlag(int comp);
172 
174 
181  void SetTensorComponent(int comp, const char *arrayName, int arrayComp,
182  int min, int max, int normalize);
183  void SetTensorComponent(int comp, const char *arrayName, int arrayComp)
184  {this->SetTensorComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);};
185  const char *GetTensorComponentArrayName(int comp);
186  int GetTensorComponentArrayComponent(int comp);
187  int GetTensorComponentMinRange(int comp);
188  int GetTensorComponentMaxRange(int comp);
189  int GetTensorComponentNormalizeFlag(int comp);
191 
193 
200  void SetTCoordComponent(int comp, const char *arrayName, int arrayComp,
201  int min, int max, int normalize);
202  void SetTCoordComponent(int comp, const char *arrayName, int arrayComp)
203  {this->SetTCoordComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);};
204  const char *GetTCoordComponentArrayName(int comp);
205  int GetTCoordComponentArrayComponent(int comp);
206  int GetTCoordComponentMinRange(int comp);
207  int GetTCoordComponentMaxRange(int comp);
208  int GetTCoordComponentNormalizeFlag(int comp);
210 
212 
216  vtkSetMacro(DefaultNormalize,vtkTypeBool);
217  vtkGetMacro(DefaultNormalize,vtkTypeBool);
218  vtkBooleanMacro(DefaultNormalize,vtkTypeBool);
220 
221  // Helper functions, made public to support other classes
222 
228  static int GetComponentsType(int numComp, vtkDataArray **arrays);
229 
236  static int ConstructArray(vtkDataArray *da, int comp, vtkDataArray *frray,
237  int fieldComp, vtkIdType min, vtkIdType max,
238  int normalize);
239 
243  static vtkDataArray *GetFieldArray(vtkFieldData *fd, const char *name, int comp);
244 
248  static void SetArrayName(vtkObject *self, char* &name, const char *newName);
249 
254  static int UpdateComponentRange(vtkDataArray *da, vtkIdType compRange[2]);
255 
260 
261 protected:
264 
265  int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override; //generate output data
266 
269 
270  int NumberOfScalarComponents; //the number of components to fill-in
271  char *ScalarArrays[4]; //the name of the arrays used to construct the scalar
272  int ScalarArrayComponents[4]; //the components of the arrays used to construct
273  vtkIdType ScalarComponentRange[4][2]; //the range of the components to use
274  int ScalarNormalize[4]; //flags control normalization
275 
276  char *VectorArrays[3]; //the name of the arrays used to construct the vectors
277  int VectorArrayComponents[3]; //the components of the arrays used to construct
278  vtkIdType VectorComponentRange[3][2]; //the range of the components to use
279  int VectorNormalize[3]; //flags control normalization
280 
281  char *GhostLevelArray; //the name of the array used to construct the ghost levels
282  int GhostLevelArrayComponent; //the component of the array used to construct
283  vtkIdType GhostLevelComponentRange[2]; //the range of the components to use
284  int GhostLevelNormalize; //flags control normalization
285 
286  char *NormalArrays[3]; //the name of the arrays used to construct the normals
287  int NormalArrayComponents[3]; //the components of the arrays used to construct
288  vtkIdType NormalComponentRange[3][2]; //the range of the components to use
289  int NormalNormalize[3]; //flags control normalization
290 
291  char *TensorArrays[9]; //the name of the arrays used to construct the tensors
292  int TensorArrayComponents[9]; //the components of the arrays used to construct
293  vtkIdType TensorComponentRange[9][2]; //the range of the components to use
294  int TensorNormalize[9]; //flags control normalization
295 
296  int NumberOfTCoordComponents; //the number of components to fill-in
297  char *TCoordArrays[3]; //the name of the arrays used to construct the tcoords
298  int TCoordArrayComponents[3]; //the components of the arrays used to construct
299  vtkIdType TCoordComponentRange[3][2]; //the range of the components to use
300  int TCoordNormalize[3]; //flags control normalization
301 
303 
304  void ConstructScalars(int num, vtkFieldData *fd, vtkDataSetAttributes *attr,
305  vtkIdType componentRange[4][2], char *arrays[4],
306  int arrayComponents[4], int normalize[4], int numComp);
307  void ConstructVectors(int num, vtkFieldData *fd, vtkDataSetAttributes *attr,
308  vtkIdType componentRange[3][2], char *arrays[3],
309  int arrayComponents[3], int normalize[3]);
310  void ConstructGhostLevels(int num, vtkFieldData *fd,
311  vtkDataSetAttributes *attr,
312  vtkIdType componentRange[2],
313  char *array, int arrayComponent, int normalize);
314  void ConstructNormals(int num, vtkFieldData *fd, vtkDataSetAttributes *attr,
315  vtkIdType componentRange[3][2], char *arrays[3],
316  int arrayComponents[3], int normalize[3]);
317  void ConstructTCoords(int num, vtkFieldData *fd, vtkDataSetAttributes *attr,
318  vtkIdType componentRange[3][2], char *arrays[3],
319  int arrayComponents[3], int normalize[3], int numComp);
320  void ConstructTensors(int num, vtkFieldData *fd, vtkDataSetAttributes *attr,
321  vtkIdType componentRange[9][2], char *arrays[9],
322  int arrayComponents[9], int normalize[9]);
323  void ConstructFieldData(int num, vtkDataSetAttributes *attr);
324 
325 private:
327  void operator=(const vtkFieldDataToAttributeDataFilter&) = delete;
328 };
329 
330 #endif
331 
332 
vtkFieldDataToAttributeDataFilter
map field data to dataset attribute data
Definition: vtkFieldDataToAttributeDataFilter.h:75
vtkFieldDataToAttributeDataFilter::InputField
int InputField
Definition: vtkFieldDataToAttributeDataFilter.h:267
vtkFieldDataToAttributeDataFilter::SetInputFieldToDataObjectField
void SetInputFieldToDataObjectField()
Definition: vtkFieldDataToAttributeDataFilter.h:96
VTK_CELL_DATA
#define VTK_CELL_DATA
Definition: vtkFieldDataToAttributeDataFilter.h:68
vtkFieldDataToAttributeDataFilter::GhostLevelArrayComponent
int GhostLevelArrayComponent
Definition: vtkFieldDataToAttributeDataFilter.h:282
VTK_POINT_DATA_FIELD
#define VTK_POINT_DATA_FIELD
Definition: vtkFieldDataToAttributeDataFilter.h:65
vtkIdType
int vtkIdType
Definition: vtkType.h:347
vtkDataSetAttributes
represent and manipulate attribute data in a dataset
Definition: vtkDataSetAttributes.h:59
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:41
vtkFieldDataToAttributeDataFilter::GhostLevelNormalize
int GhostLevelNormalize
Definition: vtkFieldDataToAttributeDataFilter.h:284
vtkFieldDataToAttributeDataFilter::NumberOfTCoordComponents
int NumberOfTCoordComponents
Definition: vtkFieldDataToAttributeDataFilter.h:296
vtkObject
abstract base class for most VTK objects
Definition: vtkObject.h:59
vtkDataSetAlgorithm::RequestData
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called within ProcessRequest when a request asks the algorithm to do its work.
Definition: vtkDataSetAlgorithm.h:180
vtkFieldDataToAttributeDataFilter::SetInputFieldToCellDataField
void SetInputFieldToCellDataField()
Definition: vtkFieldDataToAttributeDataFilter.h:100
vtkDataArray
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:54
vtkFieldDataToAttributeDataFilter::OutputAttributeData
int OutputAttributeData
Definition: vtkFieldDataToAttributeDataFilter.h:268
VTK_CELL_DATA_FIELD
#define VTK_CELL_DATA_FIELD
Definition: vtkFieldDataToAttributeDataFilter.h:66
max
#define max(a, b)
Definition: vtkX3DExporterFIWriterHelper.h:31
vtkFieldData
represent and manipulate fields of data
Definition: vtkFieldData.h:56
vtkFieldDataToAttributeDataFilter::GhostLevelArray
char * GhostLevelArray
Definition: vtkFieldDataToAttributeDataFilter.h:281
vtkDataSetAlgorithm
Superclass for algorithms that produce output of the same type as input.
Definition: vtkDataSetAlgorithm.h:48
vtkFieldDataToAttributeDataFilter::SetTensorComponent
void SetTensorComponent(int comp, const char *arrayName, int arrayComp)
Definition: vtkFieldDataToAttributeDataFilter.h:183
vtkFieldDataToAttributeDataFilter::SetOutputAttributeDataToCellData
void SetOutputAttributeDataToCellData()
Definition: vtkFieldDataToAttributeDataFilter.h:110
VTK_POINT_DATA
#define VTK_POINT_DATA
Definition: vtkFieldDataToAttributeDataFilter.h:69
vtkFieldDataToAttributeDataFilter::NumberOfScalarComponents
int NumberOfScalarComponents
Definition: vtkFieldDataToAttributeDataFilter.h:270
VTK_DATA_OBJECT_FIELD
#define VTK_DATA_OBJECT_FIELD
Definition: vtkFieldDataToAttributeDataFilter.h:64
vtkFieldDataToAttributeDataFilter::SetScalarComponent
void SetScalarComponent(int comp, const char *arrayName, int arrayComp)
Definition: vtkFieldDataToAttributeDataFilter.h:126
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkDataSetAlgorithm::New
static vtkDataSetAlgorithm * New()
vtkFieldDataToAttributeDataFilter::SetOutputAttributeDataToPointData
void SetOutputAttributeDataToPointData()
Definition: vtkFieldDataToAttributeDataFilter.h:112
vtkFieldDataToAttributeDataFilter::SetNormalComponent
void SetNormalComponent(int comp, const char *arrayName, int arrayComp)
Definition: vtkFieldDataToAttributeDataFilter.h:164
vtkX3D::name
Definition: vtkX3D.h:219
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:86
vtkFieldDataToAttributeDataFilter::SetInputFieldToPointDataField
void SetInputFieldToPointDataField()
Definition: vtkFieldDataToAttributeDataFilter.h:98
vtkDataSetAlgorithm.h
vtkDataSetAlgorithm::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkDataSetAlgorithm::RequestUpdateExtent
virtual int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called within ProcessRequest when each filter in the pipeline decides what portion of its inp...
Definition: vtkDataSetAlgorithm.h:152
vtkFieldDataToAttributeDataFilter::SetVectorComponent
void SetVectorComponent(int comp, const char *arrayName, int arrayComp)
Definition: vtkFieldDataToAttributeDataFilter.h:145
vtkFieldDataToAttributeDataFilter::SetTCoordComponent
void SetTCoordComponent(int comp, const char *arrayName, int arrayComp)
Definition: vtkFieldDataToAttributeDataFilter.h:202
vtkFieldDataToAttributeDataFilter::DefaultNormalize
vtkTypeBool DefaultNormalize
Definition: vtkFieldDataToAttributeDataFilter.h:302
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69