VTK  9.7.1
vtkDataObjectToDataSetFilter.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
56 #ifndef vtkDataObjectToDataSetFilter_h
57 #define vtkDataObjectToDataSetFilter_h
58 
59 #include "vtkDataSetAlgorithm.h"
60 #include "vtkFiltersCoreModule.h" // For export macro
61 #include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
62 
63 VTK_ABI_NAMESPACE_BEGIN
64 class vtkCellArray;
65 class vtkDataArray;
66 class vtkDataSet;
67 class vtkPointSet;
68 class vtkPolyData;
69 class vtkRectilinearGrid;
70 class vtkStructuredGrid;
73 
74 class VTKFILTERSCORE_EXPORT VTK_MARSHALAUTO vtkDataObjectToDataSetFilter
75  : public vtkDataSetAlgorithm
76 {
77 public:
80  void PrintSelf(ostream& os, vtkIndent indent) override;
81 
86 
88 
91  void SetDataSetType(int);
92  vtkGetMacro(DataSetType, int);
93  void SetDataSetTypeToPolyData() { this->SetDataSetType(VTK_POLY_DATA); }
94  void SetDataSetTypeToStructuredPoints() { this->SetDataSetType(VTK_STRUCTURED_POINTS); }
95  void SetDataSetTypeToStructuredGrid() { this->SetDataSetType(VTK_STRUCTURED_GRID); }
96  void SetDataSetTypeToRectilinearGrid() { this->SetDataSetType(VTK_RECTILINEAR_GRID); }
97  void SetDataSetTypeToUnstructuredGrid() { this->SetDataSetType(VTK_UNSTRUCTURED_GRID); }
99 
101 
109  vtkDataSet* GetOutput(int idx);
116 
118 
130  void SetPointComponent(
131  int comp, const char* arrayName, int arrayComp, int min, int max, int normalize);
132  void SetPointComponent(int comp, const char* arrayName, int arrayComp)
133  {
134  this->SetPointComponent(comp, arrayName, arrayComp, -1, -1, this->DefaultNormalize);
135  }
136  const char* GetPointComponentArrayName(int comp);
137  int GetPointComponentArrayComponent(int comp);
138  int GetPointComponentMinRange(int comp);
139  int GetPointComponentMaxRange(int comp);
140  int GetPointComponentNormailzeFlag(int comp);
142 
144 
153  void SetVertsComponent(const char* arrayName, int arrayComp, int min, int max);
154  void SetVertsComponent(const char* arrayName, int arrayComp)
155  {
156  this->SetVertsComponent(arrayName, arrayComp, -1, -1);
157  }
158  const char* GetVertsComponentArrayName();
159  int GetVertsComponentArrayComponent();
160  int GetVertsComponentMinRange();
161  int GetVertsComponentMaxRange();
162  void SetLinesComponent(const char* arrayName, int arrayComp, int min, int max);
163  void SetLinesComponent(const char* arrayName, int arrayComp)
164  {
165  this->SetLinesComponent(arrayName, arrayComp, -1, -1);
166  }
167  const char* GetLinesComponentArrayName();
168  int GetLinesComponentArrayComponent();
169  int GetLinesComponentMinRange();
170  int GetLinesComponentMaxRange();
171  void SetPolysComponent(const char* arrayName, int arrayComp, int min, int max);
172  void SetPolysComponent(const char* arrayName, int arrayComp)
173  {
174  this->SetPolysComponent(arrayName, arrayComp, -1, -1);
175  }
176  const char* GetPolysComponentArrayName();
177  int GetPolysComponentArrayComponent();
178  int GetPolysComponentMinRange();
179  int GetPolysComponentMaxRange();
180  void SetStripsComponent(const char* arrayName, int arrayComp, int min, int max);
181  void SetStripsComponent(const char* arrayName, int arrayComp)
182  {
183  this->SetStripsComponent(arrayName, arrayComp, -1, -1);
184  }
185  const char* GetStripsComponentArrayName();
186  int GetStripsComponentArrayComponent();
187  int GetStripsComponentMinRange();
188  int GetStripsComponentMaxRange();
190 
192 
201  void SetCellTypeComponent(const char* arrayName, int arrayComp, int min, int max);
202  void SetCellTypeComponent(const char* arrayName, int arrayComp)
203  {
204  this->SetCellTypeComponent(arrayName, arrayComp, -1, -1);
205  }
206  const char* GetCellTypeComponentArrayName();
207  int GetCellTypeComponentArrayComponent();
208  int GetCellTypeComponentMinRange();
209  int GetCellTypeComponentMaxRange();
210  void SetCellConnectivityComponent(const char* arrayName, int arrayComp, int min, int max);
211  void SetCellConnectivityComponent(const char* arrayName, int arrayComp)
212  {
213  this->SetCellConnectivityComponent(arrayName, arrayComp, -1, -1);
214  }
215  const char* GetCellConnectivityComponentArrayName();
216  int GetCellConnectivityComponentArrayComponent();
217  int GetCellConnectivityComponentMinRange();
218  int GetCellConnectivityComponentMaxRange();
220 
222 
226  vtkSetMacro(DefaultNormalize, vtkTypeBool);
227  vtkGetMacro(DefaultNormalize, vtkTypeBool);
228  vtkBooleanMacro(DefaultNormalize, vtkTypeBool);
230 
232 
237  vtkSetVector3Macro(Dimensions, int);
238  vtkGetVectorMacro(Dimensions, int, 3);
240 
242 
246  vtkSetVector3Macro(Origin, double);
247  vtkGetVectorMacro(Origin, double, 3);
249 
251 
255  vtkSetVector3Macro(Spacing, double);
256  vtkGetVectorMacro(Spacing, double, 3);
258 
260 
266  void SetDimensionsComponent(const char* arrayName, int arrayComp, int min, int max);
267  void SetDimensionsComponent(const char* arrayName, int arrayComp)
268  {
269  this->SetDimensionsComponent(arrayName, arrayComp, -1, -1);
270  }
271  void SetSpacingComponent(const char* arrayName, int arrayComp, int min, int max);
272  void SetSpacingComponent(const char* arrayName, int arrayComp)
273  {
274  this->SetSpacingComponent(arrayName, arrayComp, -1, -1);
275  }
276  void SetOriginComponent(const char* arrayName, int arrayComp, int min, int max);
277  void SetOriginComponent(const char* arrayName, int arrayComp)
278  {
279  this->SetOriginComponent(arrayName, arrayComp, -1, -1);
280  }
282 
283 protected:
285  ~vtkDataObjectToDataSetFilter() override;
286 
288  vtkInformationVector*) override; // generate output data
291  int FillInputPortInformation(int port, vtkInformation* info) override;
293 
294  char Updating;
295 
296  // control flags used to generate the output dataset
297  int DataSetType; // the type of dataset to generate
298 
299  // Support definition of points
300  char* PointArrays[3]; // the name of the arrays
301  int PointArrayComponents[3]; // the array components used for x-y-z
302  vtkIdType PointComponentRange[3][2]; // the range of the components to use
303  int PointNormalize[3]; // flags control normalization
304 
305  // These define cells for vtkPolyData
306  char* VertsArray; // the name of the array
307  int VertsArrayComponent; // the array component
308  vtkIdType VertsComponentRange[2]; // the range of the components to use
309 
310  char* LinesArray; // the name of the array
311  int LinesArrayComponent; // the array component used for cell types
312  vtkIdType LinesComponentRange[2]; // the range of the components to use
313 
314  char* PolysArray; // the name of the array
315  int PolysArrayComponent; // the array component
316  vtkIdType PolysComponentRange[2]; // the range of the components to use
317 
318  char* StripsArray; // the name of the array
319  int StripsArrayComponent; // the array component
320  vtkIdType StripsComponentRange[2]; // the range of the components to use
321 
322  // Used to define vtkUnstructuredGrid datasets
323  char* CellTypeArray; // the name of the array
324  int CellTypeArrayComponent; // the array component used for cell types
325  vtkIdType CellTypeComponentRange[2]; // the range of the components to use
326 
327  char* CellConnectivityArray; // the name of the array
328  int CellConnectivityArrayComponent; // the array components used for cell connectivity
329  vtkIdType CellConnectivityComponentRange[2]; // the range of the components to use
330 
331  // helper methods (and attributes) to construct datasets
332  void SetArrayName(char*& name, char* newName);
333  vtkIdType ConstructPoints(vtkDataObject* input, vtkPointSet* ps);
334  vtkIdType ConstructPoints(vtkDataObject* input, vtkRectilinearGrid* rg);
335  int ConstructCells(vtkDataObject* input, vtkPolyData* pd);
336  int ConstructCells(vtkDataObject* input, vtkUnstructuredGrid* ug);
337  vtkCellArray* ConstructCellArray(vtkDataArray* da, int comp, vtkIdType compRange[2]);
338 
339  // Default value for normalization
341 
342  // Couple of different ways to specify dimensions, spacing, and origin.
343  int Dimensions[3];
344  double Origin[3];
345  double Spacing[3];
346 
347  char* DimensionsArray; // the name of the array
348  int DimensionsArrayComponent; // the component of the array used for dimensions
349  vtkIdType DimensionsComponentRange[2]; // the ComponentRange of the array for the dimensions
350 
351  char* OriginArray; // the name of the array
352  int OriginArrayComponent; // the component of the array used for Origins
353  vtkIdType OriginComponentRange[2]; // the ComponentRange of the array for the Origins
354 
355  char* SpacingArray; // the name of the array
356  int SpacingArrayComponent; // the component of the array used for Spacings
357  vtkIdType SpacingComponentRange[2]; // the ComponentRange of the array for the Spacings
358 
359  void ConstructDimensions(vtkDataObject* input);
360  void ConstructSpacing(vtkDataObject* input);
361  void ConstructOrigin(vtkDataObject* input);
362 
363 private:
365  void operator=(const vtkDataObjectToDataSetFilter&) = delete;
366 };
367 
368 VTK_ABI_NAMESPACE_END
369 #endif
vtkStructuredGrid * GetStructuredGridOutput()
Get the output as vtkStructuredGrid.
a dataset that is topologically regular with variable spacing in the three coordinate directions ...
Store vtkAlgorithm input/output information.
abstract class to specify dataset behavior
Definition: vtkDataSet.h:56
void SetCellConnectivityComponent(const char *arrayName, int arrayComp)
Define cell types and cell connectivity when creating unstructured grid data.
vtkRectilinearGrid * GetRectilinearGridOutput()
Get the output as vtkRectilinearGrid.
vtkUnstructuredGrid * GetUnstructuredGridOutput()
Get the output as vtkUnstructuredGrid.
concrete class for storing a set of points
Definition: vtkPointSet.h:58
int vtkIdType
Definition: vtkType.h:363
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:71
void SetStripsComponent(const char *arrayName, int arrayComp)
Define cell connectivity when creating vtkPolyData.
void SetDimensionsComponent(const char *arrayName, int arrayComp)
Alternative methods to specify the dimensions, spacing, and origin for those datasets requiring this ...
int vtkTypeBool
Definition: vtkABI.h:64
map field data to concrete dataset
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetDataSetTypeToStructuredGrid()
Control what type of data is generated for output.
void SetDataSetTypeToRectilinearGrid()
Control what type of data is generated for output.
a simple class to control print indentation
Definition: vtkIndent.h:28
vtkDataSet * GetOutput()
Get the output data object for a port on this algorithm.
vtkDataObject * GetInput()
Get the input data object.
void SetSpacingComponent(const char *arrayName, int arrayComp)
Alternative methods to specify the dimensions, spacing, and origin for those datasets requiring this ...
dataset represents arbitrary combinations of all possible cell types
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.
void SetDataSetTypeToUnstructuredGrid()
Control what type of data is generated for output.
void SetVertsComponent(const char *arrayName, int arrayComp)
Define cell connectivity when creating vtkPolyData.
void SetPointComponent(int comp, const char *arrayName, int arrayComp)
Define the component of the field to be used for the x, y, and z values of the points.
object to represent cell connectivity
Definition: vtkCellArray.h:177
virtual int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called within ProcessRequest when each filter in the pipeline decides what portion of its inp...
vtkStructuredPoints * GetStructuredPointsOutput()
Get the output as vtkStructuredPoints.
A subclass of ImageData.
virtual int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called within ProcessRequest when a request asks for Information.
topologically regular array of data
void SetDataSetTypeToStructuredPoints()
Control what type of data is generated for output.
void SetPolysComponent(const char *arrayName, int arrayComp)
Define cell connectivity when creating vtkPolyData.
void SetDataSetTypeToPolyData()
Control what type of data is generated for output.
Store zero or more vtkInformation instances.
#define VTK_MARSHALAUTO
Superclass for algorithms that produce output of the same type as input.
virtual int RequestDataObject(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector)
This is called within ProcessRequest when a request asks the algorithm to create empty output data ob...
void SetOriginComponent(const char *arrayName, int arrayComp)
Alternative methods to specify the dimensions, spacing, and origin for those datasets requiring this ...
general representation of visualization data
Definition: vtkDataObject.h:55
static vtkDataSetAlgorithm * New()
void SetCellTypeComponent(const char *arrayName, int arrayComp)
Define cell types and cell connectivity when creating unstructured grid data.
void SetLinesComponent(const char *arrayName, int arrayComp)
Define cell connectivity when creating vtkPolyData.
#define max(a, b)
int FillInputPortInformation(int port, vtkInformation *info) override
Fill the input port information objects for this algorithm.
vtkPolyData * GetPolyDataOutput()
Get the output as vtkPolyData.