VTK  9.2.6
vtkXMLHyperTreeGridWriter.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkXMLHyperTreeGridWriter.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 =========================================================================*/
66 #ifndef vtkXMLHyperTreeGridWriter_h
67 #define vtkXMLHyperTreeGridWriter_h
68 
69 #include "vtkIOXMLModule.h" // For export macro
70 #include "vtkSmartPointer.h" // For internal attributes
71 #include "vtkXMLWriter.h"
72 
73 #include <vector> // std::vector
74 
77 class vtkBitArray;
78 class vtkIdList;
79 class vtkHyperTree;
80 class vtkHyperTreeGrid;
82 class vtkTypeInt64Array;
83 class vtkTypeUInt32Array;
84 
85 class VTKIOXML_EXPORT vtkXMLHyperTreeGridWriter : public vtkXMLWriter
86 {
87 public:
89  void PrintSelf(ostream& os, vtkIndent indent) override;
91 
96 
100  const char* GetDefaultFileExtension() override;
101 
110  vtkSetMacro(DataSetMajorVersion, int);
111  vtkSetMacro(DataSetMinorVersion, int);
112 
113 protected:
115  ~vtkXMLHyperTreeGridWriter() override;
116 
117  const char* GetDataSetName() override;
118 
125  int GetDataSetMajorVersion() override { return DataSetMajorVersion; }
126  int GetDataSetMinorVersion() override { return DataSetMinorVersion; }
127 
128  // Specify that we require HyperTreeGrid input
129  int FillInputPortInformation(int port, vtkInformation* info) override;
130 
131  // The most important method, make the XML file for my input.
132  int WriteData() override;
133 
134  // <HyperTreeGrid ...
135  int StartPrimaryElement(vtkIndent);
136 
137  // ... dim, size, origin>
138  void WritePrimaryElementAttributes(ostream&, vtkIndent) override;
139 
140  // Grid coordinates and mask
141  int WriteGrid(vtkIndent);
142 
143  // Tree Descriptor and CellData
144  int WriteTrees_0(vtkIndent);
145  int WriteTrees_1(vtkIndent);
146  int WriteTrees_2(vtkIndent);
147 
148  // </HyperTreeGrid>
149  int FinishPrimaryElement(vtkIndent);
150 
151  // Descriptors for individual hypertrees
152  std::vector<vtkSmartPointer<vtkBitArray>> Descriptors;
153 
154  // Descriptors for individual hypertrees
155  std::vector<vtkSmartPointer<vtkTypeInt64Array>> NbVerticesByLevels;
156 
157  // Masks for individual hypertrees
158  std::vector<vtkSmartPointer<vtkBitArray>> Masks;
159 
160  // Ids (index selection) for individual hypertrees
161  std::vector<vtkSmartPointer<vtkIdList>> Ids;
162 
163  // Helper to simplify writing appended array data
164  void WriteAppendedArrayDataHelper(vtkAbstractArray* array, OffsetsManager& offsets);
165 
166  void WriteCellDataAppendedArrayDataHelper(vtkAbstractArray* array, vtkIdType numberOfVertices,
167  OffsetsManager& offsets, vtkHyperTree* tree);
168 
170  {
171  void Initialize();
172 
178  } MetaDataForVersion2;
179 
187 
189 
190  // Default choice
193 
194 private:
196  void operator=(const vtkXMLHyperTreeGridWriter&) = delete;
197 };
198 
199 #endif
std::vector< vtkSmartPointer< vtkBitArray > > Descriptors
virtual const char * GetDataSetName()=0
std::vector< vtkSmartPointer< vtkIdList > > Ids
vtkDataObject * GetInput()
Assign a data object as input.
Definition: vtkXMLWriter.h:79
Store vtkAlgorithm input/output information.
Abstract superclass for all arrays.
A dataset containing a grid of vtkHyperTree instances arranged as a rectilinear grid.
Helper class due to PIMPL excess.
OffsetsManagerGroup * NbVerticesByLevelOMG
int vtkIdType
Definition: vtkType.h:332
Objects for traversal a HyperTreeGrid.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual int WriteData()
Definition: vtkXMLWriter.h:158
std::vector< vtkSmartPointer< vtkBitArray > > Masks
Superclass for VTK's XML file writers.
Definition: vtkXMLWriter.h:64
a simple class to control print indentation
Definition: vtkIndent.h:39
list of point or cell ids
Definition: vtkIdList.h:33
int GetDataSetMajorVersion() override
Methods to define the file's major and minor version numbers.
virtual void WritePrimaryElementAttributes(ostream &os, vtkIndent indent)
virtual int FillInputPortInformation(int port, vtkInformation *info)
Fill the input port information objects for this algorithm.
std::vector< vtkSmartPointer< vtkTypeInt64Array > > NbVerticesByLevels
OffsetsManagerGroup * DepthPerTreeOMG
dynamic, self-adjusting array of bits
Definition: vtkBitArray.h:36
A data object structured as a tree.
Definition: vtkHyperTree.h:179
virtual const char * GetDefaultFileExtension()=0
Get the default file extension for files written by this writer.
static vtkAlgorithm * New()
Write VTK XML HyperTreeGrid files.