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 =========================================================================*/ 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