00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00028 #ifndef __vtkImageReader2_h
00029 #define __vtkImageReader2_h
00030
00031 #include "vtkImageAlgorithm.h"
00032
00033 #define VTK_FILE_BYTE_ORDER_BIG_ENDIAN 0
00034 #define VTK_FILE_BYTE_ORDER_LITTLE_ENDIAN 1
00035
00036 class VTK_IO_EXPORT vtkImageReader2 : public vtkImageAlgorithm
00037 {
00038 public:
00039 static vtkImageReader2 *New();
00040 vtkTypeRevisionMacro(vtkImageReader2,vtkImageAlgorithm);
00041 void PrintSelf(ostream& os, vtkIndent indent);
00042
00044
00047 virtual void SetFileName(const char *);
00048 vtkGetStringMacro(FileName);
00050
00052
00055 virtual void SetFilePrefix(const char *);
00056 vtkGetStringMacro(FilePrefix);
00058
00060
00061 virtual void SetFilePattern(const char *);
00062 vtkGetStringMacro(FilePattern);
00064
00066
00069 virtual void SetDataScalarType(int type);
00070 virtual void SetDataScalarTypeToFloat(){this->SetDataScalarType(VTK_FLOAT);}
00071 virtual void SetDataScalarTypeToDouble(){this->SetDataScalarType(VTK_DOUBLE);}
00072 virtual void SetDataScalarTypeToInt(){this->SetDataScalarType(VTK_INT);}
00073 virtual void SetDataScalarTypeToShort(){this->SetDataScalarType(VTK_SHORT);}
00074 virtual void SetDataScalarTypeToUnsignedShort()
00075 {this->SetDataScalarType(VTK_UNSIGNED_SHORT);}
00076 virtual void SetDataScalarTypeToUnsignedChar()
00077 {this->SetDataScalarType(VTK_UNSIGNED_CHAR);}
00079
00081
00082 vtkGetMacro(DataScalarType, int);
00084
00086
00087 vtkSetMacro(NumberOfScalarComponents,int);
00088 vtkGetMacro(NumberOfScalarComponents,int);
00090
00092
00093 vtkSetVector6Macro(DataExtent,int);
00094 vtkGetVector6Macro(DataExtent,int);
00096
00098
00099 vtkSetMacro(FileDimensionality, int);
00100 int GetFileDimensionality() {return this->FileDimensionality;}
00102
00104
00105 vtkSetVector3Macro(DataSpacing,double);
00106 vtkGetVector3Macro(DataSpacing,double);
00108
00110
00111 vtkSetVector3Macro(DataOrigin,double);
00112 vtkGetVector3Macro(DataOrigin,double);
00114
00116
00117 unsigned long GetHeaderSize();
00118 unsigned long GetHeaderSize(unsigned long slice);
00120
00123 virtual void SetHeaderSize(unsigned long size);
00124
00126
00136 virtual void SetDataByteOrderToBigEndian();
00137 virtual void SetDataByteOrderToLittleEndian();
00138 virtual int GetDataByteOrder();
00139 virtual void SetDataByteOrder(int);
00140 virtual const char *GetDataByteOrderAsString();
00142
00144
00146 vtkSetMacro(FileNameSliceOffset,int);
00147 vtkGetMacro(FileNameSliceOffset,int);
00149
00151
00154 vtkSetMacro(FileNameSliceSpacing,int);
00155 vtkGetMacro(FileNameSliceSpacing,int);
00157
00158
00160
00161 vtkSetMacro(SwapBytes,int);
00162 virtual int GetSwapBytes() {return this->SwapBytes;}
00163 vtkBooleanMacro(SwapBytes,int);
00165
00166
00167 ifstream *GetFile() {return this->File;}
00168 vtkGetVectorMacro(DataIncrements,unsigned long,4);
00169
00170
00171 virtual int OpenFile();
00172 virtual void SeekFile(int i, int j, int k);
00173
00175
00177 vtkBooleanMacro(FileLowerLeft, int);
00178 vtkGetMacro(FileLowerLeft, int);
00179 vtkSetMacro(FileLowerLeft, int);
00181
00183
00184 virtual void ComputeInternalFileName(int slice);
00185 vtkGetStringMacro(InternalFileName);
00187
00189
00195 virtual int CanReadFile(const char* vtkNotUsed(fname))
00196 {
00197 return 0;
00198 }
00200
00202
00204 virtual const char* GetFileExtensions()
00205 {
00206 return 0;
00207 }
00209
00211
00213 virtual const char* GetDescriptiveName()
00214 {
00215 return 0;
00216 }
00218 protected:
00219 vtkImageReader2();
00220 ~vtkImageReader2();
00221
00222 char *InternalFileName;
00223 char *FileName;
00224 char *FilePrefix;
00225 char *FilePattern;
00226 int NumberOfScalarComponents;
00227 int FileLowerLeft;
00228
00229 ifstream *File;
00230 unsigned long DataIncrements[4];
00231 int DataExtent[6];
00232 int SwapBytes;
00233
00234 int FileDimensionality;
00235 unsigned long HeaderSize;
00236 int DataScalarType;
00237 unsigned long ManualHeaderSize;
00238
00239 double DataSpacing[3];
00240 double DataOrigin[3];
00241
00242 int FileNameSliceOffset;
00243 int FileNameSliceSpacing;
00244
00245 virtual int RequestInformation(vtkInformation* request,
00246 vtkInformationVector** inputVector,
00247 vtkInformationVector* outputVector);
00248 virtual void ExecuteInformation();
00249 virtual void ExecuteData(vtkDataObject *data);
00250 virtual void ComputeDataIncrements();
00251 private:
00252 vtkImageReader2(const vtkImageReader2&);
00253 void operator=(const vtkImageReader2&);
00254 };
00255
00256 #endif