VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkImageReader2.h,v $ 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 =========================================================================*/ 00031 #ifndef __vtkImageReader2_h 00032 #define __vtkImageReader2_h 00033 00034 #include "vtkImageAlgorithm.h" 00035 00036 class vtkStringArray; 00037 00038 #define VTK_FILE_BYTE_ORDER_BIG_ENDIAN 0 00039 #define VTK_FILE_BYTE_ORDER_LITTLE_ENDIAN 1 00040 00041 class VTK_IO_EXPORT vtkImageReader2 : public vtkImageAlgorithm 00042 { 00043 public: 00044 static vtkImageReader2 *New(); 00045 vtkTypeRevisionMacro(vtkImageReader2,vtkImageAlgorithm); 00046 void PrintSelf(ostream& os, vtkIndent indent); 00047 00049 00051 virtual void SetFileName(const char *); 00052 vtkGetStringMacro(FileName); 00054 00056 00060 virtual void SetFileNames(vtkStringArray *); 00061 vtkGetObjectMacro(FileNames, vtkStringArray); 00063 00065 00069 virtual void SetFilePrefix(const char *); 00070 vtkGetStringMacro(FilePrefix); 00072 00074 00076 virtual void SetFilePattern(const char *); 00077 vtkGetStringMacro(FilePattern); 00079 00081 00084 virtual void SetDataScalarType(int type); 00085 virtual void SetDataScalarTypeToFloat(){this->SetDataScalarType(VTK_FLOAT);} 00086 virtual void SetDataScalarTypeToDouble(){this->SetDataScalarType(VTK_DOUBLE);} 00087 virtual void SetDataScalarTypeToInt(){this->SetDataScalarType(VTK_INT);} 00088 virtual void SetDataScalarTypeToUnsignedInt(){this->SetDataScalarType(VTK_UNSIGNED_INT);} 00089 virtual void SetDataScalarTypeToShort(){this->SetDataScalarType(VTK_SHORT);} 00090 virtual void SetDataScalarTypeToUnsignedShort() 00091 {this->SetDataScalarType(VTK_UNSIGNED_SHORT);} 00092 virtual void SetDataScalarTypeToChar() 00093 {this->SetDataScalarType(VTK_CHAR);} 00094 virtual void SetDataScalarTypeToSignedChar() 00095 {this->SetDataScalarType(VTK_SIGNED_CHAR);} 00096 virtual void SetDataScalarTypeToUnsignedChar() 00097 {this->SetDataScalarType(VTK_UNSIGNED_CHAR);} 00099 00101 00102 vtkGetMacro(DataScalarType, int); 00104 00106 00107 vtkSetMacro(NumberOfScalarComponents,int); 00108 vtkGetMacro(NumberOfScalarComponents,int); 00110 00112 00113 vtkSetVector6Macro(DataExtent,int); 00114 vtkGetVector6Macro(DataExtent,int); 00116 00118 00119 vtkSetMacro(FileDimensionality, int); 00120 int GetFileDimensionality() {return this->FileDimensionality;} 00122 00124 00125 vtkSetVector3Macro(DataSpacing,double); 00126 vtkGetVector3Macro(DataSpacing,double); 00128 00130 00131 vtkSetVector3Macro(DataOrigin,double); 00132 vtkGetVector3Macro(DataOrigin,double); 00134 00136 00137 unsigned long GetHeaderSize(); 00138 unsigned long GetHeaderSize(unsigned long slice); 00140 00143 virtual void SetHeaderSize(unsigned long size); 00144 00146 00156 virtual void SetDataByteOrderToBigEndian(); 00157 virtual void SetDataByteOrderToLittleEndian(); 00158 virtual int GetDataByteOrder(); 00159 virtual void SetDataByteOrder(int); 00160 virtual const char *GetDataByteOrderAsString(); 00162 00164 00166 vtkSetMacro(FileNameSliceOffset,int); 00167 vtkGetMacro(FileNameSliceOffset,int); 00169 00171 00174 vtkSetMacro(FileNameSliceSpacing,int); 00175 vtkGetMacro(FileNameSliceSpacing,int); 00177 00178 00180 00181 vtkSetMacro(SwapBytes,int); 00182 virtual int GetSwapBytes() {return this->SwapBytes;} 00183 vtkBooleanMacro(SwapBytes,int); 00185 00186 //BTX 00187 ifstream *GetFile() {return this->File;} 00188 vtkGetVectorMacro(DataIncrements,unsigned long,4); 00189 //ETX 00190 00191 virtual int OpenFile(); 00192 virtual void SeekFile(int i, int j, int k); 00193 00195 00197 vtkBooleanMacro(FileLowerLeft, int); 00198 vtkGetMacro(FileLowerLeft, int); 00199 vtkSetMacro(FileLowerLeft, int); 00201 00203 00204 virtual void ComputeInternalFileName(int slice); 00205 vtkGetStringMacro(InternalFileName); 00207 00209 00215 virtual int CanReadFile(const char* vtkNotUsed(fname)) 00216 { 00217 return 0; 00218 } 00220 00222 00224 virtual const char* GetFileExtensions() 00225 { 00226 return 0; 00227 } 00229 00231 00233 virtual const char* GetDescriptiveName() 00234 { 00235 return 0; 00236 } 00238 protected: 00239 vtkImageReader2(); 00240 ~vtkImageReader2(); 00241 00242 vtkStringArray *FileNames; 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 double DataSpacing[3]; 00262 double DataOrigin[3]; 00263 00264 int FileNameSliceOffset; 00265 int FileNameSliceSpacing; 00266 00267 virtual int RequestInformation(vtkInformation* request, 00268 vtkInformationVector** inputVector, 00269 vtkInformationVector* outputVector); 00270 virtual void ExecuteInformation(); 00271 virtual void ExecuteData(vtkDataObject *data); 00272 virtual void ComputeDataIncrements(); 00273 private: 00274 vtkImageReader2(const vtkImageReader2&); // Not implemented. 00275 void operator=(const vtkImageReader2&); // Not implemented. 00276 }; 00277 00278 #endif