VTK  9.1.0
vtkImageReader2.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkImageReader2.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=========================================================================*/
50#ifndef vtkImageReader2_h
51#define vtkImageReader2_h
52
53#include "vtkIOImageModule.h" // For export macro
54#include "vtkImageAlgorithm.h"
55
56class vtkStringArray;
57
58#define VTK_FILE_BYTE_ORDER_BIG_ENDIAN 0
59#define VTK_FILE_BYTE_ORDER_LITTLE_ENDIAN 1
60
61class VTKIOIMAGE_EXPORT vtkImageReader2 : public vtkImageAlgorithm
62{
63public:
66 void PrintSelf(ostream& os, vtkIndent indent) override;
67
69
73 virtual void SetFileName(VTK_FILEPATH const char*);
76
78
86 vtkGetObjectMacro(FileNames, vtkStringArray);
88
90
97 virtual void SetFilePrefix(VTK_FILEPATH const char*);
100
102
106 virtual void SetFilePattern(VTK_FILEPATH const char*);
109
115 virtual void SetMemoryBuffer(const void*);
116 virtual const void* GetMemoryBuffer() { return this->MemoryBuffer; }
117
121 virtual void SetMemoryBufferLength(vtkIdType buflen);
122 vtkIdType GetMemoryBufferLength() { return this->MemoryBufferLength; }
123
129 virtual void SetDataScalarType(int type);
130 virtual void SetDataScalarTypeToFloat() { this->SetDataScalarType(VTK_FLOAT); }
131 virtual void SetDataScalarTypeToDouble() { this->SetDataScalarType(VTK_DOUBLE); }
132 virtual void SetDataScalarTypeToInt() { this->SetDataScalarType(VTK_INT); }
133 virtual void SetDataScalarTypeToUnsignedInt() { this->SetDataScalarType(VTK_UNSIGNED_INT); }
134 virtual void SetDataScalarTypeToShort() { this->SetDataScalarType(VTK_SHORT); }
135 virtual void SetDataScalarTypeToUnsignedShort() { this->SetDataScalarType(VTK_UNSIGNED_SHORT); }
136 virtual void SetDataScalarTypeToChar() { this->SetDataScalarType(VTK_CHAR); }
137 virtual void SetDataScalarTypeToSignedChar() { this->SetDataScalarType(VTK_SIGNED_CHAR); }
138 virtual void SetDataScalarTypeToUnsignedChar() { this->SetDataScalarType(VTK_UNSIGNED_CHAR); }
139
141
144 vtkGetMacro(DataScalarType, int);
146
148
151 vtkSetMacro(NumberOfScalarComponents, int);
152 vtkGetMacro(NumberOfScalarComponents, int);
154
156
159 vtkSetVector6Macro(DataExtent, int);
160 vtkGetVector6Macro(DataExtent, int);
162
164
167 vtkSetMacro(FileDimensionality, int);
168 int GetFileDimensionality() { return this->FileDimensionality; }
170
172
175 vtkSetVector3Macro(DataSpacing, double);
176 vtkGetVector3Macro(DataSpacing, double);
178
180
183 vtkSetVector3Macro(DataOrigin, double);
184 vtkGetVector3Macro(DataOrigin, double);
186
188
191 vtkSetVectorMacro(DataDirection, double, 9);
192 vtkGetVectorMacro(DataDirection, double, 9);
194
196
199 unsigned long GetHeaderSize();
200 unsigned long GetHeaderSize(unsigned long slice);
202
207 virtual void SetHeaderSize(unsigned long size);
208
210
225 virtual int GetDataByteOrder();
226 virtual void SetDataByteOrder(int);
227 virtual const char* GetDataByteOrderAsString();
229
231
235 vtkSetMacro(FileNameSliceOffset, int);
236 vtkGetMacro(FileNameSliceOffset, int);
238
240
245 vtkSetMacro(FileNameSliceSpacing, int);
246 vtkGetMacro(FileNameSliceSpacing, int);
248
250
253 vtkSetMacro(SwapBytes, vtkTypeBool);
254 virtual vtkTypeBool GetSwapBytes() { return this->SwapBytes; }
255 vtkBooleanMacro(SwapBytes, vtkTypeBool);
257
258 istream* GetFile() { return this->File; }
259 vtkGetVectorMacro(DataIncrements, unsigned long, 4);
260
261 virtual int OpenFile();
262 void CloseFile();
263 virtual void SeekFile(int i, int j, int k);
264
266
270 vtkBooleanMacro(FileLowerLeft, vtkTypeBool);
271 vtkGetMacro(FileLowerLeft, vtkTypeBool);
272 vtkSetMacro(FileLowerLeft, vtkTypeBool);
274
276
279 virtual void ComputeInternalFileName(int slice);
280 vtkGetFilePathMacro(InternalFileName);
282
292 virtual int CanReadFile(VTK_FILEPATH const char* vtkNotUsed(fname)) { return 0; }
293
299 virtual const char* GetFileExtensions() { return nullptr; }
300
302
305 virtual const char* GetDescriptiveName() { return nullptr; }
306
307protected:
311
313
315 char* FileName;
320
321 const void* MemoryBuffer;
323
324 istream* File;
325 unsigned long DataIncrements[4];
326 int DataExtent[6];
328
330 unsigned long HeaderSize;
332 unsigned long ManualHeaderSize;
333
334 double DataSpacing[3];
335 double DataOrigin[3];
336 double DataDirection[9];
337
340
342 vtkInformationVector* outputVector) override;
343 virtual void ExecuteInformation();
345 virtual void ComputeDataIncrements();
346
347private:
348 vtkImageReader2(const vtkImageReader2&) = delete;
349 void operator=(const vtkImageReader2&) = delete;
350};
351
352#endif
general representation of visualization data
Definition: vtkDataObject.h:69
Generic algorithm superclass for image algs.
Superclass of binary file readers.
virtual void ComputeDataIncrements()
vtkGetFilePathMacro(FilePrefix)
Specify file prefix for the image file or files.
vtkTypeBool FileLowerLeft
istream * GetFile()
void ExecuteDataWithInformation(vtkDataObject *data, vtkInformation *outInfo) override
This is a convenience method that is implemented in many subclasses instead of RequestData.
virtual const void * GetMemoryBuffer()
unsigned long GetHeaderSize()
Get the size of the header computed by this object.
virtual int GetDataByteOrder()
These methods should be used instead of the SwapBytes methods.
vtkGetFilePathMacro(InternalFileName)
Set/Get the internal file name.
virtual int OpenFile()
unsigned long GetHeaderSize(unsigned long slice)
Get the size of the header computed by this object.
virtual void SetMemoryBufferLength(vtkIdType buflen)
Specify the in memory image buffer length.
int GetFileDimensionality()
The number of dimensions stored in a file.
vtkTypeBool SwapBytes
virtual void SetMemoryBuffer(const void *)
Specify the in memory image buffer.
virtual void SetDataScalarTypeToSignedChar()
virtual const char * GetDataByteOrderAsString()
These methods should be used instead of the SwapBytes methods.
int RequestInformation(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) override
Subclasses can reimplement this method to collect information from their inputs and set information f...
virtual void SetFileName(VTK_FILEPATH const char *)
Specify file name for the image file.
virtual int CanReadFile(VTK_FILEPATH const char *vtkNotUsed(fname))
Return non zero if the reader can read the given file name.
virtual void ComputeInternalFileName(int slice)
Set/Get the internal file name.
virtual void SetDataScalarType(int type)
Set the data type of pixels in the file.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual void SetDataScalarTypeToInt()
virtual const char * GetFileExtensions()
Get the file extensions for this format.
vtkGetFilePathMacro(FilePattern)
The snprintf-style format string used to build filename from FilePrefix and slice number.
virtual void SetDataScalarTypeToDouble()
virtual const char * GetDescriptiveName()
Return a descriptive name for the file format that might be useful in a GUI.
vtkGetFilePathMacro(FileName)
Specify file name for the image file.
~vtkImageReader2() override
Return a descriptive name for the file format that might be useful in a GUI.
virtual void SetDataScalarTypeToChar()
unsigned long HeaderSize
vtkImageReader2()
Return a descriptive name for the file format that might be useful in a GUI.
virtual void SetDataByteOrderToLittleEndian()
These methods should be used instead of the SwapBytes methods.
vtkIdType MemoryBufferLength
virtual void SetHeaderSize(unsigned long size)
If there is a tail on the file, you want to explicitly set the header size.
virtual void SetDataScalarTypeToUnsignedChar()
const void * MemoryBuffer
virtual void SetDataByteOrder(int)
These methods should be used instead of the SwapBytes methods.
static vtkImageReader2 * New()
virtual void SetDataByteOrderToBigEndian()
These methods should be used instead of the SwapBytes methods.
unsigned long ManualHeaderSize
virtual void SetFilePrefix(VTK_FILEPATH const char *)
Specify file prefix for the image file or files.
virtual void SetDataScalarTypeToFloat()
virtual void SetDataScalarTypeToShort()
virtual void SeekFile(int i, int j, int k)
virtual void SetFileNames(vtkStringArray *)
Specify a list of file names.
virtual void SetDataScalarTypeToUnsignedShort()
vtkStringArray * FileNames
vtkIdType GetMemoryBufferLength()
virtual void SetDataScalarTypeToUnsignedInt()
virtual void ExecuteInformation()
virtual void SetFilePattern(VTK_FILEPATH const char *)
The snprintf-style format string used to build filename from FilePrefix and slice number.
virtual vtkTypeBool GetSwapBytes()
Set/Get the byte swapping to explicitly swap the bytes of a file.
a simple class to control print indentation
Definition: vtkIndent.h:43
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
a vtkAbstractArray subclass for strings
@ type
Definition: vtkX3D.h:522
@ size
Definition: vtkX3D.h:259
@ data
Definition: vtkX3D.h:321
int vtkTypeBool
Definition: vtkABI.h:69
#define VTK_SHORT
Definition: vtkType.h:48
int vtkIdType
Definition: vtkType.h:332
#define VTK_UNSIGNED_INT
Definition: vtkType.h:51
#define VTK_DOUBLE
Definition: vtkType.h:55
#define VTK_UNSIGNED_CHAR
Definition: vtkType.h:47
#define VTK_UNSIGNED_SHORT
Definition: vtkType.h:49
#define VTK_INT
Definition: vtkType.h:50
#define VTK_SIGNED_CHAR
Definition: vtkType.h:46
#define VTK_FLOAT
Definition: vtkType.h:54
#define VTK_CHAR
Definition: vtkType.h:45
#define VTK_FILEPATH