VTK  9.3.20240328
vtkXMLUnstructuredDataWriter.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
11 #ifndef vtkXMLUnstructuredDataWriter_h
12 #define vtkXMLUnstructuredDataWriter_h
13 
14 #include "vtkIOXMLModule.h" // For export macro
15 #include "vtkXMLWriter.h"
16 
17 #include <vtkSmartPointer.h> // for vtkSmartPointer
18 
19 VTK_ABI_NAMESPACE_BEGIN
20 class vtkPointSet;
21 class vtkCellArray;
22 class vtkCellIterator;
23 class vtkDataArray;
24 class vtkIdTypeArray;
26 
27 class VTKIOXML_EXPORT vtkXMLUnstructuredDataWriter : public vtkXMLWriter
28 {
29 public:
31  void PrintSelf(ostream& os, vtkIndent indent) override;
32 
34 
38  vtkSetMacro(NumberOfPieces, int);
39  vtkGetMacro(NumberOfPieces, int);
41 
43 
47  vtkSetMacro(WritePiece, int);
48  vtkGetMacro(WritePiece, int);
50 
52 
55  vtkSetMacro(GhostLevel, int);
56  vtkGetMacro(GhostLevel, int);
58 
59  // See the vtkAlgorithm for a description of what these do
62 
63 protected:
66 
68  const char* GetDataSetName() override = 0;
69  virtual void SetInputUpdateExtent(int piece, int numPieces, int ghostLevel);
70 
71  virtual int WriteHeader();
72  virtual int WriteAPiece();
73  virtual int WriteFooter();
74 
75  virtual void AllocatePositionArrays();
76  virtual void DeletePositionArrays();
77 
78  virtual int WriteInlineMode(vtkIndent indent);
80  virtual void WriteInlinePiece(vtkIndent indent);
81 
83  virtual void WriteAppendedPiece(int index, vtkIndent indent);
84  virtual void WriteAppendedPieceData(int index);
85 
86  void WriteCellsInline(const char* name, vtkCellIterator* cellIter, vtkIdType numCells,
87  vtkIdType cellSizeEstimate, vtkIndent indent);
88 
90  const char* name, vtkCellArray* cells, vtkDataArray* types, vtkIndent indent);
91 
92  // New API with face information for polyhedron cell support.
93  void WriteCellsInline(const char* name, vtkCellArray* cells, vtkDataArray* types,
94  vtkIdTypeArray* faces, vtkIdTypeArray* faceOffsets, vtkIndent indent);
95 
96  void WritePolyCellsInline(const char* name, vtkCellArray* cells, vtkDataArray* types,
97  vtkCellArray* faces, vtkCellArray* faceOffsets, vtkIndent indent);
98 
99  void WriteCellsInlineWorker(const char* name, vtkDataArray* types, vtkIndent indent);
100 
102  const char* name, vtkDataArray* types, vtkIndent indent, OffsetsManagerGroup* cellsManager);
103 
104  void WriteCellsAppended(const char* name, vtkDataArray* types, vtkIdTypeArray* faces,
105  vtkIdTypeArray* faceOffsets, vtkIndent indent, OffsetsManagerGroup* cellsManager);
106 
107  void WriteCellsAppended(const char* name, vtkCellIterator* cellIter, vtkIdType numCells,
108  vtkIndent indent, OffsetsManagerGroup* cellsManager);
109 
110  void WritePolyCellsAppended(const char* name, vtkDataArray* types, vtkCellArray* faces,
111  vtkCellArray* faceOffsets, vtkIndent indent, OffsetsManagerGroup* cellsManager);
112 
114  vtkCellArray* cells, vtkDataArray* types, int timestep, OffsetsManagerGroup* cellsManager);
115 
117  vtkIdType cellSizeEstimate, int timestep, OffsetsManagerGroup* cellsManager);
118 
119  // New API with face information for polyhedron cell support.
121  vtkIdTypeArray* faceOffsets, int timestep, OffsetsManagerGroup* cellsManager);
122 
124  vtkCellArray* faceOffsets, int timestep, OffsetsManagerGroup* cellsManager);
125 
127  vtkDataArray* types, int timestep, OffsetsManagerGroup* cellsManager);
128 
129  void ConvertCells(vtkCellIterator* cellIter, vtkIdType numCells, vtkIdType cellSizeEstimate);
130 
132 
133  // For polyhedron support, conversion results are stored in Faces and FaceOffsets
134  void ConvertFaces(vtkIdTypeArray* faces, vtkIdTypeArray* faceOffsets);
135  void ConvertPolyFaces(vtkCellArray* faces, vtkCellArray* faceOffsets);
136 
137  // Get the number of points/cells. Valid after Update has been
138  // invoked on the input.
141  void CalculateDataFractions(float* fractions);
142  void CalculateCellFractions(float* fractions, vtkIdType typesSize);
143 
144  // Number of pieces used for streaming.
146 
147  // Which piece to write, if not all.
149 
150  // The ghost level on each piece.
152 
153  // Positions of attributes for each piece.
154  vtkTypeInt64* NumberOfPointsPositions;
155 
156  // For TimeStep support
160 
161  // Hold the new cell representation arrays while writing a piece.
164 
166 
167  // Hold the face arrays for polyhedron cells.
170 
171 private:
173  void operator=(const vtkXMLUnstructuredDataWriter&) = delete;
174 };
175 
176 VTK_ABI_NAMESPACE_END
177 #endif
object to represent cell connectivity
Definition: vtkCellArray.h:285
Efficient cell iterator for vtkDataSet topologies.
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:154
dynamic, self-adjusting array of vtkIdType
a simple class to control print indentation
Definition: vtkIndent.h:108
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
concrete class for storing a set of points
Definition: vtkPointSet.h:97
dataset represents arbitrary combinations of all possible cell types
Superclass for VTK XML unstructured data writers.
void CalculateDataFractions(float *fractions)
void WriteCellsInline(const char *name, vtkCellIterator *cellIter, vtkIdType numCells, vtkIdType cellSizeEstimate, vtkIndent indent)
void WriteCellsAppended(const char *name, vtkDataArray *types, vtkIdTypeArray *faces, vtkIdTypeArray *faceOffsets, vtkIndent indent, OffsetsManagerGroup *cellsManager)
void ConvertCells(vtkCellArray *cells)
virtual void WriteAppendedPiece(int index, vtkIndent indent)
virtual vtkIdType GetNumberOfInputCells()=0
virtual void SetInputUpdateExtent(int piece, int numPieces, int ghostLevel)
void WriteCellsInline(const char *name, vtkCellArray *cells, vtkDataArray *types, vtkIndent indent)
void WriteCellsAppendedData(vtkCellArray *cells, vtkDataArray *types, vtkIdTypeArray *faces, vtkIdTypeArray *faceOffsets, int timestep, OffsetsManagerGroup *cellsManager)
const char * GetDataSetName() override=0
virtual void WriteAppendedPieceAttributes(int index)
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual void WriteInlinePiece(vtkIndent indent)
void WritePolyCellsAppendedData(vtkCellArray *cells, vtkDataArray *types, vtkCellArray *faces, vtkCellArray *faceOffsets, int timestep, OffsetsManagerGroup *cellsManager)
void ConvertPolyFaces(vtkCellArray *faces, vtkCellArray *faceOffsets)
void WriteCellsAppendedData(vtkCellIterator *cellIter, vtkIdType numCells, vtkIdType cellSizeEstimate, int timestep, OffsetsManagerGroup *cellsManager)
vtkSmartPointer< vtkDataArray > CellPoints
virtual int WriteInlineMode(vtkIndent indent)
void WriteCellsAppendedDataWorker(vtkDataArray *types, int timestep, OffsetsManagerGroup *cellsManager)
void WriteCellsInlineWorker(const char *name, vtkDataArray *types, vtkIndent indent)
void WriteCellsAppended(const char *name, vtkDataArray *types, vtkIndent indent, OffsetsManagerGroup *cellsManager)
virtual void WriteInlinePieceAttributes()
void WriteCellsAppendedData(vtkCellArray *cells, vtkDataArray *types, int timestep, OffsetsManagerGroup *cellsManager)
~vtkXMLUnstructuredDataWriter() override
vtkPointSet * GetInputAsPointSet()
virtual void WriteAppendedPieceData(int index)
vtkSmartPointer< vtkDataArray > CellOffsets
void ConvertCells(vtkCellIterator *cellIter, vtkIdType numCells, vtkIdType cellSizeEstimate)
void WriteCellsInline(const char *name, vtkCellArray *cells, vtkDataArray *types, vtkIdTypeArray *faces, vtkIdTypeArray *faceOffsets, vtkIndent indent)
virtual void AllocatePositionArrays()
void WritePolyCellsAppended(const char *name, vtkDataArray *types, vtkCellArray *faces, vtkCellArray *faceOffsets, vtkIndent indent, OffsetsManagerGroup *cellsManager)
void WritePolyCellsInline(const char *name, vtkCellArray *cells, vtkDataArray *types, vtkCellArray *faces, vtkCellArray *faceOffsets, vtkIndent indent)
virtual vtkIdType GetNumberOfInputPoints()
void CalculateCellFractions(float *fractions, vtkIdType typesSize)
void WriteCellsAppended(const char *name, vtkCellIterator *cellIter, vtkIdType numCells, vtkIndent indent, OffsetsManagerGroup *cellsManager)
vtkTypeBool ProcessRequest(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
Upstream/Downstream requests form the generalized interface through which executives invoke a algorit...
void ConvertFaces(vtkIdTypeArray *faces, vtkIdTypeArray *faceOffsets)
virtual void DeletePositionArrays()
Superclass for VTK's XML file writers.
Definition: vtkXMLWriter.h:54
@ name
Definition: vtkX3D.h:219
@ index
Definition: vtkX3D.h:246
int vtkTypeBool
Definition: vtkABI.h:64
int vtkIdType
Definition: vtkType.h:315