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 
156 class vtkStringArray;
157 
158 #define VTK_FILE_BYTE_ORDER_BIG_ENDIAN 0
159 #define VTK_FILE_BYTE_ORDER_LITTLE_ENDIAN 1
160 
161 class VTKIOIMAGE_EXPORT vtkImageReader2 : public vtkImageAlgorithm
162 {
163 public:
164  static vtkImageReader2* New();
166  void PrintSelf(ostream& os, vtkIndent indent) override;
167 
169 
173  virtual void SetFileName(VTK_FILEPATH const char*);
176 
178 
185  virtual void SetFileNames(vtkStringArray*);
186  vtkGetObjectMacro(FileNames, vtkStringArray);
188 
190 
197  virtual void SetFilePrefix(VTK_FILEPATH const char*);
198  vtkGetFilePathMacro(FilePrefix);
200 
202 
206  virtual void SetFilePattern(VTK_FILEPATH const char*);
207  vtkGetFilePathMacro(FilePattern);
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 
407 protected:
409  ~vtkImageReader2() override;
411 
413 
415  char* FileName;
416  char* FilePrefix;
417  char* FilePattern;
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 
447 private:
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
void ExecuteDataWithInformation(vtkDataObject *data, vtkInformation *outInfo) override
This is a convenience method that is implemented in many subclasses instead of RequestData.
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.
static vtkImageReader2 * New()
virtual const char * GetFileExtensions()
Get the file extensions for this format.
virtual void SetDataScalarTypeToSignedChar()
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 const char * GetDataByteOrderAsString()
These methods should be used instead of the SwapBytes methods.
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()
vtkGetFilePathMacro(FilePattern)
The snprintf-style format string used to build filename from FilePrefix and slice number.
virtual void SetDataScalarTypeToDouble()
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()
virtual const void * GetMemoryBuffer()
const void * MemoryBuffer
virtual void SetDataByteOrder(int)
These methods should be used instead of the SwapBytes methods.
virtual void SetDataByteOrderToBigEndian()
These methods should be used instead of the SwapBytes methods.
istream * GetFile()
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 const char * GetDescriptiveName()
Return a descriptive name for the file format that might be useful in a GUI.
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