VTK  9.3.1
vtkXMLHyperTreeGridWriter.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
54 #ifndef vtkXMLHyperTreeGridWriter_h
55 #define vtkXMLHyperTreeGridWriter_h
56 
57 #include "vtkIOXMLModule.h" // For export macro
58 #include "vtkSmartPointer.h" // For internal attributes
59 #include "vtkXMLWriter.h"
60 
61 #include <vector> // std::vector
62 
63 VTK_ABI_NAMESPACE_BEGIN
66 class vtkBitArray;
67 class vtkIdList;
68 class vtkHyperTree;
69 class vtkHyperTreeGrid;
71 class vtkTypeInt64Array;
72 class vtkTypeUInt32Array;
73 
74 class VTKIOXML_EXPORT vtkXMLHyperTreeGridWriter : public vtkXMLWriter
75 {
76 public:
78  void PrintSelf(ostream& os, vtkIndent indent) override;
80 
85 
89  const char* GetDefaultFileExtension() override;
90 
99  vtkSetMacro(DataSetMajorVersion, int);
100  vtkSetMacro(DataSetMinorVersion, int);
101 
102 protected:
104  ~vtkXMLHyperTreeGridWriter() override;
105 
106  const char* GetDataSetName() override;
107 
114  int GetDataSetMajorVersion() override { return DataSetMajorVersion; }
115  int GetDataSetMinorVersion() override { return DataSetMinorVersion; }
116 
117  // Specify that we require HyperTreeGrid input
118  int FillInputPortInformation(int port, vtkInformation* info) override;
119 
120  // The most important method, make the XML file for my input.
121  int WriteData() override;
122 
123  // <HyperTreeGrid ...
124  int StartPrimaryElement(vtkIndent);
125 
126  // ... dim, size, origin>
127  void WritePrimaryElementAttributes(ostream&, vtkIndent) override;
128 
129  // Grid coordinates and mask
130  int WriteGrid(vtkIndent);
131 
132  // Tree Descriptor and CellData
133  int WriteTrees_0(vtkIndent);
134  int WriteTrees_1(vtkIndent);
135  int WriteTrees_2(vtkIndent);
136 
137  // </HyperTreeGrid>
138  int FinishPrimaryElement(vtkIndent);
139 
140  // Descriptors for individual hypertrees
141  std::vector<vtkSmartPointer<vtkBitArray>> Descriptors;
142 
143  // Descriptors for individual hypertrees
144  std::vector<vtkSmartPointer<vtkTypeInt64Array>> NbVerticesByLevels;
145 
146  // Masks for individual hypertrees
147  std::vector<vtkSmartPointer<vtkBitArray>> Masks;
148 
149  // Ids (index selection) for individual hypertrees
150  std::vector<vtkSmartPointer<vtkIdList>> Ids;
151 
152  // Helper to simplify writing appended array data
153  void WriteAppendedArrayDataHelper(vtkAbstractArray* array, OffsetsManager& offsets);
154 
155  void WriteCellDataAppendedArrayDataHelper(vtkAbstractArray* array, vtkIdType numberOfVertices,
156  OffsetsManager& offsets, vtkHyperTree* tree);
157 
159  {
160  void Initialize();
161 
167  } MetaDataForVersion2;
168 
176 
178 
179  // Default choice
182 
183 private:
185  void operator=(const vtkXMLHyperTreeGridWriter&) = delete;
186 };
187 
188 VTK_ABI_NAMESPACE_END
189 #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:68
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:315
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:147
std::vector< vtkSmartPointer< vtkBitArray > > Masks
Superclass for VTK's XML file writers.
Definition: vtkXMLWriter.h:53
a simple class to control print indentation
Definition: vtkIndent.h:28
list of point or cell ids
Definition: vtkIdList.h:22
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:28
A data object structured as a tree.
Definition: vtkHyperTree.h:168
virtual const char * GetDefaultFileExtension()=0
Get the default file extension for files written by this writer.
static vtkAlgorithm * New()
Write VTK XML HyperTreeGrid files.