VTK  9.0.1
vtkXMLUnstructuredDataWriter.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkXMLUnstructuredDataWriter.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 =========================================================================*/
23 #ifndef vtkXMLUnstructuredDataWriter_h
24 #define vtkXMLUnstructuredDataWriter_h
25 
26 #include "vtkIOXMLModule.h" // For export macro
27 #include "vtkXMLWriter.h"
28 
29 #include <vtkSmartPointer.h> // for vtkSmartPointer
30 
31 class vtkPointSet;
32 class vtkCellArray;
33 class vtkCellIterator;
34 class vtkDataArray;
35 class vtkIdTypeArray;
37 
38 class VTKIOXML_EXPORT vtkXMLUnstructuredDataWriter : public vtkXMLWriter
39 {
40 public:
42  void PrintSelf(ostream& os, vtkIndent indent) override;
43 
45 
49  vtkSetMacro(NumberOfPieces, int);
50  vtkGetMacro(NumberOfPieces, int);
52 
54 
58  vtkSetMacro(WritePiece, int);
59  vtkGetMacro(WritePiece, int);
61 
63 
66  vtkSetMacro(GhostLevel, int);
67  vtkGetMacro(GhostLevel, int);
69 
70  // See the vtkAlgorithm for a description of what these do
73 
74 protected:
76  ~vtkXMLUnstructuredDataWriter() override;
77 
78  vtkPointSet* GetInputAsPointSet();
79  const char* GetDataSetName() override = 0;
80  virtual void SetInputUpdateExtent(int piece, int numPieces, int ghostLevel);
81 
82  virtual int WriteHeader();
83  virtual int WriteAPiece();
84  virtual int WriteFooter();
85 
86  virtual void AllocatePositionArrays();
87  virtual void DeletePositionArrays();
88 
89  virtual int WriteInlineMode(vtkIndent indent);
90  virtual void WriteInlinePieceAttributes();
91  virtual void WriteInlinePiece(vtkIndent indent);
92 
93  virtual void WriteAppendedPieceAttributes(int index);
94  virtual void WriteAppendedPiece(int index, vtkIndent indent);
95  virtual void WriteAppendedPieceData(int index);
96 
97  void WriteCellsInline(const char* name, vtkCellIterator* cellIter, vtkIdType numCells,
98  vtkIdType cellSizeEstimate, vtkIndent indent);
99 
100  void WriteCellsInline(
101  const char* name, vtkCellArray* cells, vtkDataArray* types, vtkIndent indent);
102 
103  // New API with face infomration for polyhedron cell support.
104  void WriteCellsInline(const char* name, vtkCellArray* cells, vtkDataArray* types,
105  vtkIdTypeArray* faces, vtkIdTypeArray* faceOffsets, vtkIndent indent);
106 
107  void WriteCellsInlineWorker(const char* name, vtkDataArray* types, vtkIndent indent);
108 
109  void WriteCellsAppended(
110  const char* name, vtkDataArray* types, vtkIndent indent, OffsetsManagerGroup* cellsManager);
111 
112  void WriteCellsAppended(const char* name, vtkDataArray* types, vtkIdTypeArray* faces,
113  vtkIdTypeArray* faceOffsets, vtkIndent indent, OffsetsManagerGroup* cellsManager);
114 
115  void WriteCellsAppended(const char* name, vtkCellIterator* cellIter, vtkIdType numCells,
116  vtkIndent indent, OffsetsManagerGroup* cellsManager);
117 
118  void WriteCellsAppendedData(
119  vtkCellArray* cells, vtkDataArray* types, int timestep, OffsetsManagerGroup* cellsManager);
120 
121  void WriteCellsAppendedData(vtkCellIterator* cellIter, vtkIdType numCells,
122  vtkIdType cellSizeEstimate, int timestep, OffsetsManagerGroup* cellsManager);
123 
124  // New API with face infomration for polyhedron cell support.
125  void WriteCellsAppendedData(vtkCellArray* cells, vtkDataArray* types, vtkIdTypeArray* faces,
126  vtkIdTypeArray* faceOffsets, int timestep, OffsetsManagerGroup* cellsManager);
127 
128  void WriteCellsAppendedDataWorker(
129  vtkDataArray* types, int timestep, OffsetsManagerGroup* cellsManager);
130 
131  void ConvertCells(vtkCellIterator* cellIter, vtkIdType numCells, vtkIdType cellSizeEstimate);
132 
133  void ConvertCells(vtkCellArray* cells);
134 
135  // For polyhedron support, conversion results are stored in Faces and FaceOffsets
136  void ConvertFaces(vtkIdTypeArray* faces, vtkIdTypeArray* faceOffsets);
137 
138  // Get the number of points/cells. Valid after Update has been
139  // invoked on the input.
140  virtual vtkIdType GetNumberOfInputPoints();
141  virtual vtkIdType GetNumberOfInputCells() = 0;
142  void CalculateDataFractions(float* fractions);
143  void CalculateCellFractions(float* fractions, vtkIdType typesSize);
144 
145  // Number of pieces used for streaming.
147 
148  // Which piece to write, if not all.
150 
151  // The ghost level on each piece.
153 
154  // Positions of attributes for each piece.
155  vtkTypeInt64* NumberOfPointsPositions;
156 
157  // For TimeStep support
161 
162  // Hold the new cell representation arrays while writing a piece.
165 
167 
168  // Hold the face arrays for polyhedron cells.
171 
172 private:
174  void operator=(const vtkXMLUnstructuredDataWriter&) = delete;
175 };
176 
177 #endif
vtkXMLUnstructuredDataWriter::NumberOfPieces
int NumberOfPieces
Definition: vtkXMLUnstructuredDataWriter.h:146
vtkIdType
int vtkIdType
Definition: vtkType.h:338
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:35
vtkXMLUnstructuredDataWriter::WritePiece
int WritePiece
Definition: vtkXMLUnstructuredDataWriter.h:149
vtkXMLWriter.h
vtkXMLWriter::ProcessRequest
vtkTypeBool ProcessRequest(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) override
Upstream/Downstream requests form the generalized interface through which executives invoke a algorit...
vtkSmartPointer< vtkDataArray >
vtkXMLUnstructuredDataWriter::CellPoints
vtkSmartPointer< vtkDataArray > CellPoints
Definition: vtkXMLUnstructuredDataWriter.h:163
vtkDataArray
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:49
vtkXMLUnstructuredDataWriter::CellOffsets
vtkSmartPointer< vtkDataArray > CellOffsets
Definition: vtkXMLUnstructuredDataWriter.h:164
vtkXMLUnstructuredDataWriter::FaceOffsets
vtkIdTypeArray * FaceOffsets
Definition: vtkXMLUnstructuredDataWriter.h:170
vtkXMLUnstructuredDataWriter::PointsOM
OffsetsManagerGroup * PointsOM
Definition: vtkXMLUnstructuredDataWriter.h:158
vtkXMLWriter
Superclass for VTK's XML file writers.
Definition: vtkXMLWriter.h:61
vtkXMLUnstructuredDataWriter::Faces
vtkIdTypeArray * Faces
Definition: vtkXMLUnstructuredDataWriter.h:169
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkCellArray
object to represent cell connectivity
Definition: vtkCellArray.h:179
vtkSmartPointer.h
vtkXMLWriter::GetDataSetName
virtual const char * GetDataSetName()=0
OffsetsManagerGroup
Definition: vtkXMLOffsetsManager.h:107
vtkXMLUnstructuredDataWriter
Superclass for VTK XML unstructured data writers.
Definition: vtkXMLUnstructuredDataWriter.h:38
vtkX3D::name
@ name
Definition: vtkX3D.h:225
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:73
vtkXMLUnstructuredDataWriter::CellDataOM
OffsetsManagerArray * CellDataOM
Definition: vtkXMLUnstructuredDataWriter.h:160
OffsetsManagerArray
Definition: vtkXMLOffsetsManager.h:154
vtkIdTypeArray
dynamic, self-adjusting array of vtkIdType
Definition: vtkIdTypeArray.h:35
vtkXMLUnstructuredDataWriter::NumberOfPointsPositions
vtkTypeInt64 * NumberOfPointsPositions
Definition: vtkXMLUnstructuredDataWriter.h:155
vtkPointSet
abstract class for specifying dataset behavior
Definition: vtkPointSet.h:62
vtkUnstructuredGrid
dataset represents arbitrary combinations of all possible cell types
Definition: vtkUnstructuredGrid.h:92
vtkXMLUnstructuredDataWriter::CurrentPiece
int CurrentPiece
Definition: vtkXMLUnstructuredDataWriter.h:166
vtkCellIterator
Efficient cell iterator for vtkDataSet topologies.
Definition: vtkCellIterator.h:77
vtkXMLUnstructuredDataWriter::PointDataOM
OffsetsManagerArray * PointDataOM
Definition: vtkXMLUnstructuredDataWriter.h:159
vtkX3D::index
@ index
Definition: vtkX3D.h:252
vtkXMLUnstructuredDataWriter::GhostLevel
int GhostLevel
Definition: vtkXMLUnstructuredDataWriter.h:152
vtkXMLWriter::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69