VTK
|
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 =========================================================================*/ 00034 #ifndef __vtkImageReader2_h 00035 #define __vtkImageReader2_h 00036 00037 #include "vtkImageAlgorithm.h" 00038 00039 class vtkStringArray; 00040 00041 #define VTK_FILE_BYTE_ORDER_BIG_ENDIAN 0 00042 #define VTK_FILE_BYTE_ORDER_LITTLE_ENDIAN 1 00043 00044 class VTK_IO_EXPORT vtkImageReader2 : public vtkImageAlgorithm 00045 { 00046 public: 00047 static vtkImageReader2 *New(); 00048 vtkTypeMacro(vtkImageReader2,vtkImageAlgorithm); 00049 void PrintSelf(ostream& os, vtkIndent indent); 00050 00052 00054 virtual void SetFileName(const char *); 00055 vtkGetStringMacro(FileName); 00057 00059 00063 virtual void SetFileNames(vtkStringArray *); 00064 vtkGetObjectMacro(FileNames, vtkStringArray); 00066 00068 00072 virtual void SetFilePrefix(const char *); 00073 vtkGetStringMacro(FilePrefix); 00075 00077 00079 virtual void SetFilePattern(const char *); 00080 vtkGetStringMacro(FilePattern); 00082 00084 00087 virtual void SetDataScalarType(int type); 00088 virtual void SetDataScalarTypeToFloat(){this->SetDataScalarType(VTK_FLOAT);} 00089 virtual void SetDataScalarTypeToDouble(){this->SetDataScalarType(VTK_DOUBLE);} 00090 virtual void SetDataScalarTypeToInt(){this->SetDataScalarType(VTK_INT);} 00091 virtual void SetDataScalarTypeToUnsignedInt(){this->SetDataScalarType(VTK_UNSIGNED_INT);} 00092 virtual void SetDataScalarTypeToShort(){this->SetDataScalarType(VTK_SHORT);} 00093 virtual void SetDataScalarTypeToUnsignedShort() 00094 {this->SetDataScalarType(VTK_UNSIGNED_SHORT);} 00095 virtual void SetDataScalarTypeToChar() 00096 {this->SetDataScalarType(VTK_CHAR);} 00097 virtual void SetDataScalarTypeToSignedChar() 00098 {this->SetDataScalarType(VTK_SIGNED_CHAR);} 00099 virtual void SetDataScalarTypeToUnsignedChar() 00100 {this->SetDataScalarType(VTK_UNSIGNED_CHAR);} 00102 00104 00105 vtkGetMacro(DataScalarType, int); 00107 00109 00110 vtkSetMacro(NumberOfScalarComponents,int); 00111 vtkGetMacro(NumberOfScalarComponents,int); 00113 00115 00116 vtkSetVector6Macro(DataExtent,int); 00117 vtkGetVector6Macro(DataExtent,int); 00119 00121 00122 vtkSetMacro(FileDimensionality, int); 00123 int GetFileDimensionality() {return this->FileDimensionality;} 00125 00127 00128 vtkSetVector3Macro(DataSpacing,double); 00129 vtkGetVector3Macro(DataSpacing,double); 00131 00133 00134 vtkSetVector3Macro(DataOrigin,double); 00135 vtkGetVector3Macro(DataOrigin,double); 00137 00139 00140 unsigned long GetHeaderSize(); 00141 unsigned long GetHeaderSize(unsigned long slice); 00143 00146 virtual void SetHeaderSize(unsigned long size); 00147 00149 00159 virtual void SetDataByteOrderToBigEndian(); 00160 virtual void SetDataByteOrderToLittleEndian(); 00161 virtual int GetDataByteOrder(); 00162 virtual void SetDataByteOrder(int); 00163 virtual const char *GetDataByteOrderAsString(); 00165 00167 00169 vtkSetMacro(FileNameSliceOffset,int); 00170 vtkGetMacro(FileNameSliceOffset,int); 00172 00174 00177 vtkSetMacro(FileNameSliceSpacing,int); 00178 vtkGetMacro(FileNameSliceSpacing,int); 00180 00181 00183 00184 vtkSetMacro(SwapBytes,int); 00185 virtual int GetSwapBytes() {return this->SwapBytes;} 00186 vtkBooleanMacro(SwapBytes,int); 00188 00189 //BTX 00190 ifstream *GetFile() {return this->File;} 00191 vtkGetVectorMacro(DataIncrements,unsigned long,4); 00192 //ETX 00193 00194 virtual int OpenFile(); 00195 virtual void SeekFile(int i, int j, int k); 00196 00198 00200 vtkBooleanMacro(FileLowerLeft, int); 00201 vtkGetMacro(FileLowerLeft, int); 00202 vtkSetMacro(FileLowerLeft, int); 00204 00206 00207 virtual void ComputeInternalFileName(int slice); 00208 vtkGetStringMacro(InternalFileName); 00210 00212 00218 virtual int CanReadFile(const char* vtkNotUsed(fname)) 00219 { 00220 return 0; 00221 } 00223 00225 00227 virtual const char* GetFileExtensions() 00228 { 00229 return 0; 00230 } 00232 00234 00236 virtual const char* GetDescriptiveName() 00237 { 00238 return 0; 00239 } 00241 protected: 00242 vtkImageReader2(); 00243 ~vtkImageReader2(); 00244 00245 vtkStringArray *FileNames; 00246 00247 char *InternalFileName; 00248 char *FileName; 00249 char *FilePrefix; 00250 char *FilePattern; 00251 int NumberOfScalarComponents; 00252 int FileLowerLeft; 00253 00254 ifstream *File; 00255 unsigned long DataIncrements[4]; 00256 int DataExtent[6]; 00257 int SwapBytes; 00258 00259 int FileDimensionality; 00260 unsigned long HeaderSize; 00261 int DataScalarType; 00262 unsigned long ManualHeaderSize; 00263 00264 double DataSpacing[3]; 00265 double DataOrigin[3]; 00266 00267 int FileNameSliceOffset; 00268 int FileNameSliceSpacing; 00269 00270 virtual int RequestInformation(vtkInformation* request, 00271 vtkInformationVector** inputVector, 00272 vtkInformationVector* outputVector); 00273 virtual void ExecuteInformation(); 00274 virtual void ExecuteData(vtkDataObject *data); 00275 virtual void ComputeDataIncrements(); 00276 private: 00277 vtkImageReader2(const vtkImageReader2&); // Not implemented. 00278 void operator=(const vtkImageReader2&); // Not implemented. 00279 }; 00280 00281 #endif