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

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 =========================================================================*/
00032 #ifndef __vtkImageReader2_h
00033 #define __vtkImageReader2_h
00034 
00035 #include "vtkImageSource.h"
00036 
00037 #define VTK_FILE_BYTE_ORDER_BIG_ENDIAN 0
00038 #define VTK_FILE_BYTE_ORDER_LITTLE_ENDIAN 1
00039 
00040 class VTK_IO_EXPORT vtkImageReader2 : public vtkImageSource
00041 {
00042 public:
00043   static vtkImageReader2 *New();
00044   vtkTypeRevisionMacro(vtkImageReader2,vtkImageSource);
00045   void PrintSelf(ostream& os, vtkIndent indent);   
00046 
00048 
00051   virtual void SetFileName(const char *);
00052   vtkGetStringMacro(FileName);
00054 
00056 
00059   virtual void SetFilePrefix(const char *);
00060   vtkGetStringMacro(FilePrefix);
00062 
00064 
00065   virtual void SetFilePattern(const char *);
00066   vtkGetStringMacro(FilePattern);
00068 
00070 
00073   virtual void SetDataScalarType(int type);
00074   virtual void SetDataScalarTypeToFloat(){this->SetDataScalarType(VTK_FLOAT);}
00075   virtual void SetDataScalarTypeToDouble(){this->SetDataScalarType(VTK_DOUBLE);}
00076   virtual void SetDataScalarTypeToInt(){this->SetDataScalarType(VTK_INT);}
00077   virtual void SetDataScalarTypeToShort(){this->SetDataScalarType(VTK_SHORT);}
00078   virtual void SetDataScalarTypeToUnsignedShort()
00079     {this->SetDataScalarType(VTK_UNSIGNED_SHORT);}
00080   virtual void SetDataScalarTypeToUnsignedChar()
00081     {this->SetDataScalarType(VTK_UNSIGNED_CHAR);}
00083 
00085 
00086   vtkGetMacro(DataScalarType, int);
00088 
00090 
00091   vtkSetMacro(NumberOfScalarComponents,int);
00092   vtkGetMacro(NumberOfScalarComponents,int);
00094   
00096 
00097   vtkSetVector6Macro(DataExtent,int);
00098   vtkGetVector6Macro(DataExtent,int);
00100   
00102 
00103   vtkSetMacro(FileDimensionality, int);
00104   int GetFileDimensionality() {return this->FileDimensionality;}
00106   
00108 
00109   vtkSetVector3Macro(DataSpacing,float);
00110   vtkGetVector3Macro(DataSpacing,float);
00112   
00114 
00115   vtkSetVector3Macro(DataOrigin,float);
00116   vtkGetVector3Macro(DataOrigin,float);
00118 
00120 
00121   unsigned long GetHeaderSize();
00122   unsigned long GetHeaderSize(unsigned long slice);
00124 
00127   virtual void SetHeaderSize(unsigned long size);
00128   
00130 
00140   virtual void SetDataByteOrderToBigEndian();
00141   virtual void SetDataByteOrderToLittleEndian();
00142   virtual int GetDataByteOrder();
00143   virtual void SetDataByteOrder(int);
00144   virtual const char *GetDataByteOrderAsString();
00146 
00148 
00150   vtkSetMacro(FileNameSliceOffset,int);
00151   vtkGetMacro(FileNameSliceOffset,int);
00153 
00155 
00158   vtkSetMacro(FileNameSliceSpacing,int);
00159   vtkGetMacro(FileNameSliceSpacing,int);
00161 
00162 
00164 
00165   vtkSetMacro(SwapBytes,int);
00166   virtual int GetSwapBytes() {return this->SwapBytes;}
00167   vtkBooleanMacro(SwapBytes,int);
00169 
00170 //BTX
00171   ifstream *GetFile() {return this->File;}
00172   vtkGetVectorMacro(DataIncrements,unsigned long,4);
00173 //ETX
00174 
00175   virtual int OpenFile();
00176   virtual void SeekFile(int i, int j, int k);
00177 
00179 
00181   vtkBooleanMacro(FileLowerLeft, int);
00182   vtkGetMacro(FileLowerLeft, int);
00183   vtkSetMacro(FileLowerLeft, int);
00185 
00187 
00188   virtual void ComputeInternalFileName(int slice);
00189   vtkGetStringMacro(InternalFileName);
00191   
00192 #ifndef VTK_REMOVE_LEGACY_CODE
00193 
00194   virtual vtkImageReader2* MakeObject();
00195 #endif
00196   
00198 
00204   virtual int CanReadFile(const char* vtkNotUsed(fname))
00205     {
00206       return 0;
00207     }
00209 
00211 
00213   virtual const char* GetFileExensions()
00214     {
00215       return 0;
00216     }
00218 
00220 
00222   virtual const char* GetDescriptiveName()
00223     {
00224       return 0;
00225     }
00227 protected:
00228   vtkImageReader2();
00229   ~vtkImageReader2();
00230 
00231   char *InternalFileName;
00232   char *FileName;
00233   char *FilePrefix;
00234   char *FilePattern;
00235   int NumberOfScalarComponents;
00236   int FileLowerLeft;
00237 
00238   ifstream *File;
00239   unsigned long DataIncrements[4];
00240   int DataExtent[6];
00241   int SwapBytes;
00242 
00243   int FileDimensionality;
00244   unsigned long HeaderSize;
00245   int DataScalarType;
00246   unsigned long ManualHeaderSize;
00247 
00248   float DataSpacing[3];
00249   float DataOrigin[3];
00250 
00251   int FileNameSliceOffset;
00252   int FileNameSliceSpacing;
00253   
00254   virtual void ExecuteInformation();
00255   virtual void ExecuteData(vtkDataObject *data);
00256   virtual void ComputeDataIncrements();
00257 private:
00258   vtkImageReader2(const vtkImageReader2&);  // Not implemented.
00259   void operator=(const vtkImageReader2&);  // Not implemented.
00260 };
00261 
00262 #endif