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=========================================================================*/
150#ifndef vtkImageReader2_h
151#define vtkImageReader2_h
152
153#include "vtkIOImageModule.h" // For export macro
154#include "vtkImageAlgorithm.h"
155
156class vtkStringArray;
157
158#define VTK_FILE_BYTE_ORDER_BIG_ENDIAN 0
159#define VTK_FILE_BYTE_ORDER_LITTLE_ENDIAN 1
160
161class VTKIOIMAGE_EXPORT vtkImageReader2 : public vtkImageAlgorithm
162{
163public:
166 void PrintSelf(ostream& os, vtkIndent indent) override;
167
169
173 virtual void SetFileName(VTK_FILEPATH const char*);
176
178
186 vtkGetObjectMacro(FileNames, vtkStringArray);
188
190
197 virtual void SetFilePrefix(VTK_FILEPATH const char*);
200
202
206 virtual void SetFilePattern(VTK_FILEPATH const char*);
209
215 virtual void SetMemoryBuffer(const void*);
216 virtual const void* GetMemoryBuffer() { return this->MemoryBuffer; }
217
221 virtual void SetMemoryBufferLength(vtkIdType buflen);
222 vtkIdType GetMemoryBufferLength() { return this->MemoryBufferLength; }
223
229 virtual void SetDataScalarType(int type);
230 virtual void SetDataScalarTypeToFloat() { this->SetDataScalarType(VTK_FLOAT); }
231 virtual void SetDataScalarTypeToDouble() { this->SetDataScalarType(VTK_DOUBLE); }
232 virtual void SetDataScalarTypeToInt() { this->SetDataScalarType(VTK_INT); }
233 virtual void SetDataScalarTypeToUnsignedInt() { this->SetDataScalarType(VTK_UNSIGNED_INT); }
234 virtual void SetDataScalarTypeToShort() { this->SetDataScalarType(VTK_SHORT); }
235 virtual void SetDataScalarTypeToUnsignedShort() { this->SetDataScalarType(VTK_UNSIGNED_SHORT); }
236 virtual void SetDataScalarTypeToChar() { this->SetDataScalarType(VTK_CHAR); }
237 virtual void SetDataScalarTypeToSignedChar() { this->SetDataScalarType(VTK_SIGNED_CHAR); }
238 virtual void SetDataScalarTypeToUnsignedChar() { this->SetDataScalarType(VTK_UNSIGNED_CHAR); }
239
241
244 vtkGetMacro(DataScalarType, int);
246
248
251 vtkSetMacro(NumberOfScalarComponents, int);
252 vtkGetMacro(NumberOfScalarComponents, int);
254
256
259 vtkSetVector6Macro(DataExtent, int);
260 vtkGetVector6Macro(DataExtent, int);
262
264
267 vtkSetMacro(FileDimensionality, int);
268 int GetFileDimensionality() { return this->FileDimensionality; }
270
272
275 vtkSetVector3Macro(DataSpacing, double);
276 vtkGetVector3Macro(DataSpacing, double);
278
280
283 vtkSetVector3Macro(DataOrigin, double);
284 vtkGetVector3Macro(DataOrigin, double);
286
288
291 vtkSetVectorMacro(DataDirection, double, 9);
292 vtkGetVectorMacro(DataDirection, double, 9);
294
296
299 unsigned long GetHeaderSize();
300 unsigned long GetHeaderSize(unsigned long slice);
302
307 virtual void SetHeaderSize(unsigned long size);
308
310
325 virtual int GetDataByteOrder();
326 virtual void SetDataByteOrder(int);
327 virtual const char* GetDataByteOrderAsString();
329
331
335 vtkSetMacro(FileNameSliceOffset, int);
336 vtkGetMacro(FileNameSliceOffset, int);
338
340
345 vtkSetMacro(FileNameSliceSpacing, int);
346 vtkGetMacro(FileNameSliceSpacing, int);
348
350
353 vtkSetMacro(SwapBytes, vtkTypeBool);
354 virtual vtkTypeBool GetSwapBytes() { return this->SwapBytes; }
355 vtkBooleanMacro(SwapBytes, vtkTypeBool);
357
358 istream* GetFile() { return this->File; }
359 vtkGetVectorMacro(DataIncrements, unsigned long, 4);
360
361 virtual int OpenFile();
362 void CloseFile();
363 virtual void SeekFile(int i, int j, int k);
364
366
370 vtkBooleanMacro(FileLowerLeft, vtkTypeBool);
371 vtkGetMacro(FileLowerLeft, vtkTypeBool);
372 vtkSetMacro(FileLowerLeft, vtkTypeBool);
374
376
379 virtual void ComputeInternalFileName(int slice);
380 vtkGetFilePathMacro(InternalFileName);
382
392 virtual int CanReadFile(VTK_FILEPATH const char* vtkNotUsed(fname)) { return 0; }
393
399 virtual const char* GetFileExtensions() { return nullptr; }
400
402
405 virtual const char* GetDescriptiveName() { return nullptr; }
406
407protected:
411
413
415 char* FileName;
420
421 const void* MemoryBuffer;
423
424 istream* File;
425 unsigned long DataIncrements[4];
426 int DataExtent[6];
428
430 unsigned long HeaderSize;
432 unsigned long ManualHeaderSize;
433
434 double DataSpacing[3];
435 double DataOrigin[3];
436 double DataDirection[9];
437
440
442 vtkInformationVector* outputVector) override;
443 virtual void ExecuteInformation();
445 virtual void ComputeDataIncrements();
446
447private:
448 vtkImageReader2(const vtkImageReader2&) = delete;
449 void operator=(const vtkImageReader2&) = delete;
450};
451
452#endif
general representation of visualization data
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:113
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