00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
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 vtkTypeRevisionMacro(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 SetDataScalarTypeToShort(){this->SetDataScalarType(VTK_SHORT);}
00092 virtual void SetDataScalarTypeToUnsignedShort()
00093 {this->SetDataScalarType(VTK_UNSIGNED_SHORT);}
00094 virtual void SetDataScalarTypeToUnsignedChar()
00095 {this->SetDataScalarType(VTK_UNSIGNED_CHAR);}
00097
00099
00100 vtkGetMacro(DataScalarType, int);
00102
00104
00105 vtkSetMacro(NumberOfScalarComponents,int);
00106 vtkGetMacro(NumberOfScalarComponents,int);
00108
00110
00111 vtkSetVector6Macro(DataExtent,int);
00112 vtkGetVector6Macro(DataExtent,int);
00114
00116
00117 vtkSetMacro(FileDimensionality, int);
00118 int GetFileDimensionality() {return this->FileDimensionality;}
00120
00122
00123 vtkSetVector3Macro(DataSpacing,double);
00124 vtkGetVector3Macro(DataSpacing,double);
00126
00128
00129 vtkSetVector3Macro(DataOrigin,double);
00130 vtkGetVector3Macro(DataOrigin,double);
00132
00134
00135 unsigned long GetHeaderSize();
00136 unsigned long GetHeaderSize(unsigned long slice);
00138
00141 virtual void SetHeaderSize(unsigned long size);
00142
00144
00154 virtual void SetDataByteOrderToBigEndian();
00155 virtual void SetDataByteOrderToLittleEndian();
00156 virtual int GetDataByteOrder();
00157 virtual void SetDataByteOrder(int);
00158 virtual const char *GetDataByteOrderAsString();
00160
00162
00164 vtkSetMacro(FileNameSliceOffset,int);
00165 vtkGetMacro(FileNameSliceOffset,int);
00167
00169
00172 vtkSetMacro(FileNameSliceSpacing,int);
00173 vtkGetMacro(FileNameSliceSpacing,int);
00175
00176
00178
00179 vtkSetMacro(SwapBytes,int);
00180 virtual int GetSwapBytes() {return this->SwapBytes;}
00181 vtkBooleanMacro(SwapBytes,int);
00183
00184
00185 ifstream *GetFile() {return this->File;}
00186 vtkGetVectorMacro(DataIncrements,unsigned long,4);
00187
00188
00189 virtual int OpenFile();
00190 virtual void SeekFile(int i, int j, int k);
00191
00193
00195 vtkBooleanMacro(FileLowerLeft, int);
00196 vtkGetMacro(FileLowerLeft, int);
00197 vtkSetMacro(FileLowerLeft, int);
00199
00201
00202 virtual void ComputeInternalFileName(int slice);
00203 vtkGetStringMacro(InternalFileName);
00205
00207
00213 virtual int CanReadFile(const char* vtkNotUsed(fname))
00214 {
00215 return 0;
00216 }
00218
00220
00222 virtual const char* GetFileExtensions()
00223 {
00224 return 0;
00225 }
00227
00229
00231 virtual const char* GetDescriptiveName()
00232 {
00233 return 0;
00234 }
00236 protected:
00237 vtkImageReader2();
00238 ~vtkImageReader2();
00239
00240 vtkStringArray *FileNames;
00241
00242 char *InternalFileName;
00243 char *FileName;
00244 char *FilePrefix;
00245 char *FilePattern;
00246 int NumberOfScalarComponents;
00247 int FileLowerLeft;
00248
00249 ifstream *File;
00250 unsigned long DataIncrements[4];
00251 int DataExtent[6];
00252 int SwapBytes;
00253
00254 int FileDimensionality;
00255 unsigned long HeaderSize;
00256 int DataScalarType;
00257 unsigned long ManualHeaderSize;
00258
00259 double DataSpacing[3];
00260 double DataOrigin[3];
00261
00262 int FileNameSliceOffset;
00263 int FileNameSliceSpacing;
00264
00265 virtual int RequestInformation(vtkInformation* request,
00266 vtkInformationVector** inputVector,
00267 vtkInformationVector* outputVector);
00268 virtual void ExecuteInformation();
00269 virtual void ExecuteData(vtkDataObject *data);
00270 virtual void ComputeDataIncrements();
00271 private:
00272 vtkImageReader2(const vtkImageReader2&);
00273 void operator=(const vtkImageReader2&);
00274 };
00275
00276 #endif