VTK  9.3.20240917
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
24VTK_ABI_NAMESPACE_BEGIN
26
27class VTKIOXML_EXPORT vtkXMLWriterBase : public vtkAlgorithm
28{
29public:
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
117
119
122 vtkSetMacro(WriteToOutputString, bool);
123 vtkGetMacro(WriteToOutputString, bool);
124 vtkBooleanMacro(WriteToOutputString, bool);
125 std::string GetOutputString() { return this->OutputString; }
127
129
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
224protected:
227
228 // Methods to define the file's major and minor version numbers.
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.
240 std::string OutputString;
241
242 // The output byte order.
244
245 // The output binary header word type.
247
248 // The output vtkIdType.
250
251 // The form of binary data to write. Used by subclasses to choose
252 // how to write data.
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
274private:
275 vtkXMLWriterBase(const vtkXMLWriterBase&) = delete;
276 void operator=(const vtkXMLWriterBase&) = delete;
277
278 bool WriteTimeValue = true;
279};
280
281VTK_ABI_NAMESPACE_END
282#endif
Superclass for all sources, filters, and sinks in VTK.
Abstract interface for data compression classes.
a simple class to control print indentation
Definition vtkIndent.h:108
Abstract base class for VTK-XML writers.
void SetByteOrderToBigEndian()
Get/Set the byte order of data written to the file.
virtual void SetIdType(int)
Get/Set the size of the vtkIdType values stored in the file.
vtkDataCompressor * Compressor
vtkGetFilePathMacro(FileName)
Get/Set the name of the output file.
vtkSetFilePathMacro(FileName)
Get/Set the name of the output file.
virtual int GetDataSetMajorVersion()
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual void SetHeaderType(int)
Get/Set the binary data header word type.
void SetIdTypeToInt32()
Get/Set the size of the vtkIdType values stored in the file.
void SetDataModeToBinary()
Get/Set the data mode used for the file's data.
void SetDataModeToAscii()
Get/Set the data mode used for the file's data.
void SetCompressionLevel(int compressorLevel)
Get/Set compression level.
void SetCompressorTypeToLZMA()
Convenience functions to set the compressor to certain known types.
virtual int GetDataSetMinorVersion()
void SetCompressorTypeToNone()
Convenience functions to set the compressor to certain known types.
void SetHeaderTypeToUInt32()
Get/Set the binary data header word type.
void SetCompressorTypeToLZ4()
Convenience functions to set the compressor to certain known types.
VTK_UNBLOCKTHREADS int Write()
Invoke the writer.
virtual void SetCompressor(vtkDataCompressor *)
Get/Set the compressor used to compress binary and appended data before writing to the file.
void SetIdTypeToInt64()
Get/Set the size of the vtkIdType values stored in the file.
std::string OutputString
virtual const char * GetDefaultFileExtension()=0
Get the default file extension for files written by this writer.
~vtkXMLWriterBase() override
void SetHeaderTypeToUInt64()
Get/Set the binary data header word type.
void SetCompressorTypeToZLib()
Convenience functions to set the compressor to certain known types.
virtual void SetBlockSize(size_t blockSize)
Get/Set the block size used in compression.
void SetByteOrderToLittleEndian()
Get/Set the byte order of data written to the file.
void SetCompressorType(int compressorType)
Convenience functions to set the compressor to certain known types.
void SetDataModeToAppended()
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.
#define VTK_UNBLOCKTHREADS