00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
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
00187 ifstream *GetFile() {return this->File;}
00188 vtkGetVectorMacro(DataIncrements,unsigned long,4);
00189
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&);
00275 void operator=(const vtkImageReader2&);
00276 };
00277
00278 #endif