forked from Kitware/VTK
-
Notifications
You must be signed in to change notification settings - Fork 0
/
vtkImageWriter.h
144 lines (120 loc) · 4.25 KB
/
vtkImageWriter.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
/*=========================================================================
Program: Visualization Toolkit
Module: vtkImageWriter.h
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
All rights reserved.
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notice for more information.
=========================================================================*/
/**
* @class vtkImageWriter
* @brief Writes images to files.
*
* vtkImageWriter writes images to files with any data type. The data type of
* the file is the same scalar type as the input. The dimensionality
* determines whether the data will be written in one or multiple files.
* This class is used as the superclass of most image writing classes
* such as vtkBMPWriter etc. It supports streaming.
*/
#ifndef vtkImageWriter_h
#define vtkImageWriter_h
#include "vtkIOImageModule.h" // For export macro
#include "vtkImageAlgorithm.h"
class VTKIOIMAGE_EXPORT vtkImageWriter : public vtkImageAlgorithm
{
public:
static vtkImageWriter *New();
vtkTypeMacro(vtkImageWriter,vtkImageAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent) override;
//@{
/**
* Specify file name for the image file. You should specify either
* a FileName or a FilePrefix. Use FilePrefix if the data is stored
* in multiple files.
*/
vtkSetStringMacro(FileName);
vtkGetStringMacro(FileName);
//@}
//@{
/**
* Specify file prefix for the image file(s).You should specify either
* a FileName or FilePrefix. Use FilePrefix if the data is stored
* in multiple files.
*/
vtkSetStringMacro(FilePrefix);
vtkGetStringMacro(FilePrefix);
//@}
//@{
/**
* The snprintf format used to build filename from FilePrefix and number.
*/
vtkSetStringMacro(FilePattern);
vtkGetStringMacro(FilePattern);
//@}
//@{
/**
* What dimension are the files to be written. Usually this is 2, or 3.
* If it is 2 and the input is a volume then the volume will be
* written as a series of 2d slices.
*/
vtkSetMacro(FileDimensionality, int);
vtkGetMacro(FileDimensionality, int);
//@}
/**
* Set/Get the input object from the image pipeline.
*/
vtkImageData *GetInput();
/**
* The main interface which triggers the writer to start.
*/
virtual void Write();
void DeleteFiles();
protected:
vtkImageWriter();
~vtkImageWriter() override;
int FileDimensionality;
char *FilePrefix;
char *FilePattern;
char *FileName;
int FileNumber;
int FileLowerLeft;
char *InternalFileName;
size_t InternalFileNameSize;
virtual void RecursiveWrite(int dim,
vtkImageData *region,
vtkInformation*inInfo,
ostream *file);
virtual void RecursiveWrite(int dim,
vtkImageData *cache,
vtkImageData *data,
vtkInformation* inInfo,
ostream *file);
virtual void WriteFile(ostream *file, vtkImageData *data,
int extent[6], int wExtent[6]);
virtual void WriteFileHeader(ostream *, vtkImageData *, int [6]) {}
virtual void WriteFileTrailer(ostream *, vtkImageData *) {}
// Required for subclasses that need to prevent the writer
// from touching the file system. The getter/setter are only
// available in these subclasses.
vtkTypeUBool WriteToMemory;
// subclasses that do write to memory can override this
// to implement the simple case
virtual void MemoryWrite(int,
vtkImageData *,
int [6],
vtkInformation*) {};
// This is called by the superclass.
// This is the method you should override.
int RequestData(vtkInformation *request,
vtkInformationVector** inputVector,
vtkInformationVector* outputVector) override;
int MinimumFileNumber;
int MaximumFileNumber;
int FilesDeleted;
private:
vtkImageWriter(const vtkImageWriter&) = delete;
void operator=(const vtkImageWriter&) = delete;
};
#endif