Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

IO/vtkImageReader2.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkImageReader2.h,v $
00005   Language:  C++
00006 
00007   Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 
00008   All rights reserved.
00009   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00010 
00011      This software is distributed WITHOUT ANY WARRANTY; without even 
00012      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
00013      PURPOSE.  See the above copyright notice for more information.
00014 
00015 =========================================================================*/
00045 #ifndef __vtkImageReader2_h
00046 #define __vtkImageReader2_h
00047 
00048 #include "vtkImageSource.h"
00049 
00050 #define VTK_FILE_BYTE_ORDER_BIG_ENDIAN 0
00051 #define VTK_FILE_BYTE_ORDER_LITTLE_ENDIAN 1
00052 
00053 class VTK_IO_EXPORT vtkImageReader2 : public vtkImageSource
00054 {
00055 public:
00056   static vtkImageReader2 *New();
00057   vtkTypeRevisionMacro(vtkImageReader2,vtkImageSource);
00058   void PrintSelf(ostream& os, vtkIndent indent);   
00059 
00061 
00064   virtual void SetFileName(const char *);
00065   vtkGetStringMacro(FileName);
00067 
00069 
00072   virtual void SetFilePrefix(const char *);
00073   vtkGetStringMacro(FilePrefix);
00075 
00077 
00078   virtual void SetFilePattern(const char *);
00079   vtkGetStringMacro(FilePattern);
00081 
00083 
00086   virtual void SetDataScalarType(int type);
00087   virtual void SetDataScalarTypeToFloat(){this->SetDataScalarType(VTK_FLOAT);}
00088   virtual void SetDataScalarTypeToDouble(){this->SetDataScalarType(VTK_DOUBLE);}
00089   virtual void SetDataScalarTypeToInt(){this->SetDataScalarType(VTK_INT);}
00090   virtual void SetDataScalarTypeToShort(){this->SetDataScalarType(VTK_SHORT);}
00091   virtual void SetDataScalarTypeToUnsignedShort()
00092     {this->SetDataScalarType(VTK_UNSIGNED_SHORT);}
00093   virtual void SetDataScalarTypeToUnsignedChar()
00094     {this->SetDataScalarType(VTK_UNSIGNED_CHAR);}
00096 
00098 
00099   vtkGetMacro(DataScalarType, int);
00101 
00103 
00104   vtkSetMacro(NumberOfScalarComponents,int);
00105   vtkGetMacro(NumberOfScalarComponents,int);
00107   
00109 
00110   vtkSetVector6Macro(DataExtent,int);
00111   vtkGetVector6Macro(DataExtent,int);
00113   
00115 
00116   vtkSetMacro(FileDimensionality, int);
00117   int GetFileDimensionality() {return this->FileDimensionality;}
00119   
00121 
00122   vtkSetVector3Macro(DataSpacing,float);
00123   vtkGetVector3Macro(DataSpacing,float);
00125   
00127 
00128   vtkSetVector3Macro(DataOrigin,float);
00129   vtkGetVector3Macro(DataOrigin,float);
00131 
00133 
00134   unsigned long GetHeaderSize();
00135   unsigned long GetHeaderSize(unsigned long slice);
00137 
00140   virtual void SetHeaderSize(unsigned long size);
00141   
00143 
00153   virtual void SetDataByteOrderToBigEndian();
00154   virtual void SetDataByteOrderToLittleEndian();
00155   virtual int GetDataByteOrder();
00156   virtual void SetDataByteOrder(int);
00157   virtual const char *GetDataByteOrderAsString();
00159 
00161 
00163   vtkSetMacro(FileNameSliceOffset,int);
00164   vtkGetMacro(FileNameSliceOffset,int);
00166 
00168 
00171   vtkSetMacro(FileNameSliceSpacing,int);
00172   vtkGetMacro(FileNameSliceSpacing,int);
00174 
00175 
00177 
00178   vtkSetMacro(SwapBytes,int);
00179   virtual int GetSwapBytes() {return this->SwapBytes;}
00180   vtkBooleanMacro(SwapBytes,int);
00182 
00183 //BTX
00184   ifstream *GetFile() {return this->File;}
00185   vtkGetVectorMacro(DataIncrements,unsigned long,4);
00186 //ETX
00187 
00188   virtual int OpenFile();
00189   virtual void SeekFile(int i, int j, int k);
00190 
00192 
00194   vtkBooleanMacro(FileLowerLeft, int);
00195   vtkGetMacro(FileLowerLeft, int);
00196   vtkSetMacro(FileLowerLeft, int);
00198 
00200 
00201   virtual void ComputeInternalFileName(int slice);
00202   vtkGetStringMacro(InternalFileName);
00204   
00205 #ifndef VTK_REMOVE_LEGACY_CODE
00206 
00207   virtual vtkImageReader2* MakeObject();
00208 #endif
00209   
00211 
00217   virtual int CanReadFile(const char* vtkNotUsed(fname))
00218     {
00219       return 0;
00220     }
00222 
00224 
00226   virtual const char* GetFileExensions()
00227     {
00228       return 0;
00229     }
00231 
00233 
00235   virtual const char* GetDescriptiveName()
00236     {
00237       return 0;
00238     }
00240 protected:
00241   vtkImageReader2();
00242   ~vtkImageReader2();
00243 
00244   char *InternalFileName;
00245   char *FileName;
00246   char *FilePrefix;
00247   char *FilePattern;
00248   int NumberOfScalarComponents;
00249   int FileLowerLeft;
00250 
00251   ifstream *File;
00252   unsigned long DataIncrements[4];
00253   int DataExtent[6];
00254   int SwapBytes;
00255 
00256   int FileDimensionality;
00257   unsigned long HeaderSize;
00258   int DataScalarType;
00259   unsigned long ManualHeaderSize;
00260 
00261   float DataSpacing[3];
00262   float DataOrigin[3];
00263 
00264   int FileNameSliceOffset;
00265   int FileNameSliceSpacing;
00266   
00267   virtual void ExecuteInformation();
00268   virtual void ExecuteData(vtkDataObject *data);
00269   virtual void ComputeDataIncrements();
00270 private:
00271   vtkImageReader2(const vtkImageReader2&);  // Not implemented.
00272   void operator=(const vtkImageReader2&);  // Not implemented.
00273 };
00274 
00275 #endif