VTK  9.7.1
vtkXMLWriterBase.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
16 #ifndef vtkXMLWriterBase_h
17 #define vtkXMLWriterBase_h
18 
19 #include "vtkAlgorithm.h"
20 #include "vtkIOXMLModule.h" // For export macro
21 
22 #include <string> // for std::string
23 
24 VTK_ABI_NAMESPACE_BEGIN
25 class vtkDataCompressor;
26 
27 class VTKIOXML_EXPORT vtkXMLWriterBase : public vtkAlgorithm
28 {
29 public:
31  void PrintSelf(ostream& os, vtkIndent indent) override;
32 
36  enum
37  {
39  LittleEndian
40  };
41 
48  enum
49  {
52  Appended
53  };
54 
60  enum
61  {
62  Int32 = 32,
63  Int64 = 64
64  };
65 
71  enum
72  {
73  UInt32 = 32,
74  UInt64 = 64
75  };
76 
78 
82  vtkSetMacro(ByteOrder, int);
83  vtkGetMacro(ByteOrder, int);
84  void SetByteOrderToBigEndian() { this->SetByteOrder(BigEndian); }
85  void SetByteOrderToLittleEndian() { this->SetByteOrder(LittleEndian); }
87 
89 
93  virtual void SetHeaderType(int);
94  vtkGetMacro(HeaderType, int);
95  void SetHeaderTypeToUInt32() { this->SetHeaderType(UInt32); }
96  void SetHeaderTypeToUInt64() { this->SetHeaderType(UInt64); }
98 
100 
104  virtual void SetIdType(int);
105  vtkGetMacro(IdType, int);
106  void SetIdTypeToInt32() { this->SetIdType(Int32); }
107  void SetIdTypeToInt64() { this->SetIdType(Int64); }
109 
111 
114  vtkSetFilePathMacro(FileName);
115  vtkGetFilePathMacro(FileName);
117 
119 
122  vtkSetMacro(WriteToOutputString, bool);
123  vtkGetMacro(WriteToOutputString, bool);
124  vtkBooleanMacro(WriteToOutputString, bool);
125  std::string GetOutputString() { return this->OutputString; }
127 
129 
133  virtual void SetCompressor(vtkDataCompressor*);
134  vtkGetObjectMacro(Compressor, vtkDataCompressor);
136 
138  {
142  LZMA
143  };
144 
146 
149  void SetCompressorType(int compressorType);
150  void SetCompressorTypeToNone() { this->SetCompressorType(NONE); }
151  void SetCompressorTypeToLZ4() { this->SetCompressorType(LZ4); }
152  void SetCompressorTypeToZLib() { this->SetCompressorType(ZLIB); }
153  void SetCompressorTypeToLZMA() { this->SetCompressorType(LZMA); }
155 
157 
161  void SetCompressionLevel(int compressorLevel);
162  vtkGetMacro(CompressionLevel, int);
164 
166 
172  virtual void SetBlockSize(size_t blockSize);
173  vtkGetMacro(BlockSize, size_t);
175 
177 
182  vtkSetMacro(DataMode, int);
183  vtkGetMacro(DataMode, int);
184  void SetDataModeToAscii() { this->SetDataMode(Ascii); }
185  void SetDataModeToBinary() { this->SetDataMode(Binary); }
186  void SetDataModeToAppended() { this->SetDataMode(Appended); }
188 
190 
197  vtkSetMacro(EncodeAppendedData, bool);
198  vtkGetMacro(EncodeAppendedData, bool);
199  vtkBooleanMacro(EncodeAppendedData, bool);
201 
203 
208  vtkGetMacro(WriteTimeValue, bool);
209  vtkSetMacro(WriteTimeValue, bool);
210  vtkBooleanMacro(WriteTimeValue, bool);
212 
216  virtual const char* GetDefaultFileExtension() = 0;
217 
222  int Write();
223 
224 protected:
226  ~vtkXMLWriterBase() override;
227 
228  // Methods to define the file's major and minor version numbers.
229  virtual int GetDataSetMajorVersion();
230  virtual int GetDataSetMinorVersion();
231 
232  // The name of the output file.
233  char* FileName;
234 
235  // Whether this object is writing to a string or a file.
236  // Default is 0: write to file.
238 
239  // The output string.
241 
242  // The output byte order.
244 
245  // The output binary header word type.
247 
248  // The output vtkIdType.
249  int IdType;
250 
251  // The form of binary data to write. Used by subclasses to choose
252  // how to write data.
253  int DataMode;
254 
255  // Whether to base64-encode the appended data section.
257 
258  // Compression information.
260  size_t BlockSize;
261 
262  // Compression Level for vtkDataCompressor objects
263  // 1 (worst compression, fastest) ... 9 (best compression, slowest)
265 
266  // This variable is used to ease transition to new versions of VTK XML files.
267  // If data that needs to be written satisfies certain conditions,
268  // the writer can use the previous file version version.
269  // For version change 0.1 -> 2.0 (UInt32 header) and 1.0 -> 2.0
270  // (UInt64 header), if data does not have a vtkGhostType array,
271  // the file is written with version: 0.1/1.0.
273 
274 private:
275  vtkXMLWriterBase(const vtkXMLWriterBase&) = delete;
276  void operator=(const vtkXMLWriterBase&) = delete;
277 
278  bool WriteTimeValue = true;
279 };
280 
281 VTK_ABI_NAMESPACE_END
282 #endif
void SetByteOrderToBigEndian()
Get/Set the byte order of data written to the file.
void SetDataModeToBinary()
Get/Set the data mode used for the file's data.
Abstract interface for data compression classes.
#define VTK_UNBLOCKTHREADS
void SetIdTypeToInt64()
Get/Set the size of the vtkIdType values stored in the file.
std::string OutputString
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetIdTypeToInt32()
Get/Set the size of the vtkIdType values stored in the file.
Superclass for all sources, filters, and sinks in VTK.
Definition: vtkAlgorithm.h:53
void SetCompressorTypeToZLib()
Convenience functions to set the compressor to certain known types.
a simple class to control print indentation
Definition: vtkIndent.h:28
Abstract base class for VTK-XML writers.
void SetCompressorTypeToNone()
Convenience functions to set the compressor to certain known types.
void SetHeaderTypeToUInt64()
Get/Set the binary data header word type.
vtkDataCompressor * Compressor
void SetHeaderTypeToUInt32()
Get/Set the binary data header word type.
void SetCompressorTypeToLZMA()
Convenience functions to set the compressor to certain known types.
void SetByteOrderToLittleEndian()
Get/Set the byte order of data written to the file.
void SetDataModeToAppended()
Get/Set the data mode used for the file's data.
void SetDataModeToAscii()
Get/Set the data mode used for the file's data.
std::string GetOutputString()
Enable writing to an OutputString instead of the default, a file.
void SetCompressorTypeToLZ4()
Convenience functions to set the compressor to certain known types.