VTK
dox/IO/vtkImageReader2.h
Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    vtkImageReader2.h
00005 
00006   Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
00007   All rights reserved.
00008   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00009 
00010      This software is distributed WITHOUT ANY WARRANTY; without even
00011      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00012      PURPOSE.  See the above copyright notice for more information.
00013 
00014 =========================================================================*/
00046 #ifndef __vtkImageReader2_h
00047 #define __vtkImageReader2_h
00048 
00049 #include "vtkImageAlgorithm.h"
00050 
00051 class vtkStringArray;
00052 
00053 #define VTK_FILE_BYTE_ORDER_BIG_ENDIAN 0
00054 #define VTK_FILE_BYTE_ORDER_LITTLE_ENDIAN 1
00055 
00056 class VTK_IO_EXPORT vtkImageReader2 : public vtkImageAlgorithm
00057 {
00058 public:
00059   static vtkImageReader2 *New();
00060   vtkTypeMacro(vtkImageReader2,vtkImageAlgorithm);
00061   void PrintSelf(ostream& os, vtkIndent indent);   
00062 
00064 
00066   virtual void SetFileName(const char *);
00067   vtkGetStringMacro(FileName);
00069 
00071 
00075   virtual void SetFileNames(vtkStringArray *);
00076   vtkGetObjectMacro(FileNames, vtkStringArray);
00078 
00080 
00084   virtual void SetFilePrefix(const char *);
00085   vtkGetStringMacro(FilePrefix);
00087 
00089 
00091   virtual void SetFilePattern(const char *);
00092   vtkGetStringMacro(FilePattern);
00094 
00096 
00099   virtual void SetDataScalarType(int type);
00100   virtual void SetDataScalarTypeToFloat(){this->SetDataScalarType(VTK_FLOAT);}
00101   virtual void SetDataScalarTypeToDouble(){this->SetDataScalarType(VTK_DOUBLE);}
00102   virtual void SetDataScalarTypeToInt(){this->SetDataScalarType(VTK_INT);}
00103   virtual void SetDataScalarTypeToUnsignedInt(){this->SetDataScalarType(VTK_UNSIGNED_INT);}
00104   virtual void SetDataScalarTypeToShort(){this->SetDataScalarType(VTK_SHORT);}
00105   virtual void SetDataScalarTypeToUnsignedShort()
00106     {this->SetDataScalarType(VTK_UNSIGNED_SHORT);}
00107   virtual void SetDataScalarTypeToChar()
00108     {this->SetDataScalarType(VTK_CHAR);}
00109   virtual void SetDataScalarTypeToSignedChar()
00110     {this->SetDataScalarType(VTK_SIGNED_CHAR);}
00111   virtual void SetDataScalarTypeToUnsignedChar()
00112     {this->SetDataScalarType(VTK_UNSIGNED_CHAR);}
00114 
00116 
00117   vtkGetMacro(DataScalarType, int);
00119 
00121 
00122   vtkSetMacro(NumberOfScalarComponents,int);
00123   vtkGetMacro(NumberOfScalarComponents,int);
00125   
00127 
00128   vtkSetVector6Macro(DataExtent,int);
00129   vtkGetVector6Macro(DataExtent,int);
00131   
00133 
00134   vtkSetMacro(FileDimensionality, int);
00135   int GetFileDimensionality() {return this->FileDimensionality;}
00137   
00139 
00140   vtkSetVector3Macro(DataSpacing,double);
00141   vtkGetVector3Macro(DataSpacing,double);
00143   
00145 
00146   vtkSetVector3Macro(DataOrigin,double);
00147   vtkGetVector3Macro(DataOrigin,double);
00149 
00151 
00152   unsigned long GetHeaderSize();
00153   unsigned long GetHeaderSize(unsigned long slice);
00155 
00158   virtual void SetHeaderSize(unsigned long size);
00159   
00161 
00171   virtual void SetDataByteOrderToBigEndian();
00172   virtual void SetDataByteOrderToLittleEndian();
00173   virtual int GetDataByteOrder();
00174   virtual void SetDataByteOrder(int);
00175   virtual const char *GetDataByteOrderAsString();
00177 
00179 
00181   vtkSetMacro(FileNameSliceOffset,int);
00182   vtkGetMacro(FileNameSliceOffset,int);
00184 
00186 
00189   vtkSetMacro(FileNameSliceSpacing,int);
00190   vtkGetMacro(FileNameSliceSpacing,int);
00192 
00193 
00195 
00196   vtkSetMacro(SwapBytes,int);
00197   virtual int GetSwapBytes() {return this->SwapBytes;}
00198   vtkBooleanMacro(SwapBytes,int);
00200 
00201 //BTX
00202   ifstream *GetFile() {return this->File;}
00203   vtkGetVectorMacro(DataIncrements,unsigned long,4);
00204 //ETX
00205 
00206   virtual int OpenFile();
00207   virtual void SeekFile(int i, int j, int k);
00208 
00210 
00212   vtkBooleanMacro(FileLowerLeft, int);
00213   vtkGetMacro(FileLowerLeft, int);
00214   vtkSetMacro(FileLowerLeft, int);
00216 
00218 
00219   virtual void ComputeInternalFileName(int slice);
00220   vtkGetStringMacro(InternalFileName);
00222   
00224 
00230   virtual int CanReadFile(const char* vtkNotUsed(fname))
00231     {
00232       return 0;
00233     }
00235 
00237 
00239   virtual const char* GetFileExtensions()
00240     {
00241       return 0;
00242     }
00244 
00246 
00248   virtual const char* GetDescriptiveName()
00249     {
00250       return 0;
00251     }
00252 protected:
00253   vtkImageReader2();
00254   ~vtkImageReader2();
00256 
00257   vtkStringArray *FileNames;
00258 
00259   char *InternalFileName;
00260   char *FileName;
00261   char *FilePrefix;
00262   char *FilePattern;
00263   int NumberOfScalarComponents;
00264   int FileLowerLeft;
00265 
00266   ifstream *File;
00267   unsigned long DataIncrements[4];
00268   int DataExtent[6];
00269   int SwapBytes;
00270 
00271   int FileDimensionality;
00272   unsigned long HeaderSize;
00273   int DataScalarType;
00274   unsigned long ManualHeaderSize;
00275 
00276   double DataSpacing[3];
00277   double DataOrigin[3];
00278 
00279   int FileNameSliceOffset;
00280   int FileNameSliceSpacing;
00281   
00282   virtual int RequestInformation(vtkInformation* request,
00283                                  vtkInformationVector** inputVector,
00284                                  vtkInformationVector* outputVector);
00285   virtual void ExecuteInformation();
00286   virtual void ExecuteData(vtkDataObject *data);
00287   virtual void ComputeDataIncrements();
00288 private:
00289   vtkImageReader2(const vtkImageReader2&);  // Not implemented.
00290   void operator=(const vtkImageReader2&);  // Not implemented.
00291 };
00292 
00293 #endif