Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members File Members Related Pages
IO/vtkDataReader.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00044 #ifndef __vtkDataReader_h
00045 #define __vtkDataReader_h
00046
00047 #include "vtkSource.h"
00048
00049 #define VTK_ASCII 1
00050 #define VTK_BINARY 2
00051
00052 class vtkCharArray;
00053 class vtkDataArray;
00054 class vtkDataSet;
00055 class vtkDataSetAttributes;
00056 class vtkFieldData;
00057 class vtkPointSet;
00058 class vtkRectilinearGrid;
00059
00060 class VTK_IO_EXPORT vtkDataReader : public vtkSource
00061 {
00062 public:
00063 static vtkDataReader *New();
00064 vtkTypeRevisionMacro(vtkDataReader,vtkSource);
00065 void PrintSelf(ostream& os, vtkIndent indent);
00066
00068
00069 vtkSetStringMacro(FileName);
00070 vtkGetStringMacro(FileName);
00072
00074
00076 int IsFileValid(const char *dstype);
00077 int IsFileStructuredPoints() {
00078 return this->IsFileValid("structured_points");};
00079 int IsFilePolyData() {
00080 return this->IsFileValid("polydata");};
00081 int IsFileStructuredGrid() {
00082 return this->IsFileValid("structured_grid");};
00083 int IsFileUnstructuredGrid() {
00084 return this->IsFileValid("unstructured_grid");};
00085 int IsFileRectilinearGrid() {
00086 return this->IsFileValid("rectilinear_grid");};
00088
00090
00094 void SetInputString(const char *in);
00095 vtkGetStringMacro(InputString);
00096 void SetInputString(const char *in, int len);
00097 vtkGetMacro(InputStringLength, int);
00098 void SetBinaryInputString(const char *, int len);
00100
00102
00108 virtual void SetInputArray(vtkCharArray*);
00109 vtkGetObjectMacro(InputArray, vtkCharArray);
00111
00113
00114 vtkGetStringMacro(Header);
00116
00118
00120 vtkSetMacro(ReadFromInputString,int);
00121 vtkGetMacro(ReadFromInputString,int);
00122 vtkBooleanMacro(ReadFromInputString,int);
00124
00126
00128 vtkGetMacro(FileType,int);
00130
00132
00136 int GetNumberOfScalarsInFile()
00137 {this->CharacterizeFile(); return this->NumberOfScalarsInFile;}
00138 int GetNumberOfVectorsInFile()
00139 {this->CharacterizeFile(); return this->NumberOfVectorsInFile;}
00140 int GetNumberOfTensorsInFile()
00141 {this->CharacterizeFile(); return this->NumberOfTensorsInFile;}
00142 int GetNumberOfNormalsInFile()
00143 {this->CharacterizeFile(); return this->NumberOfNormalsInFile;}
00144 int GetNumberOfTCoordsInFile()
00145 {this->CharacterizeFile(); return this->NumberOfTCoordsInFile;}
00146 int GetNumberOfFieldDataInFile()
00147 {this->CharacterizeFile(); return this->NumberOfFieldDataInFile;}
00149
00151
00154 const char *GetScalarsNameInFile(int i);
00155 const char *GetVectorsNameInFile(int i);
00156 const char *GetTensorsNameInFile(int i);
00157 const char *GetNormalsNameInFile(int i);
00158 const char *GetTCoordsNameInFile(int i);
00159 const char *GetFieldDataNameInFile(int i);
00161
00163
00165 vtkSetStringMacro(ScalarsName);
00166 vtkGetStringMacro(ScalarsName);
00168
00170
00172 vtkSetStringMacro(VectorsName);
00173 vtkGetStringMacro(VectorsName);
00175
00177
00179 vtkSetStringMacro(TensorsName);
00180 vtkGetStringMacro(TensorsName);
00182
00184
00186 vtkSetStringMacro(NormalsName);
00187 vtkGetStringMacro(NormalsName);
00189
00191
00193 vtkSetStringMacro(TCoordsName);
00194 vtkGetStringMacro(TCoordsName);
00196
00198
00201 vtkSetStringMacro(LookupTableName);
00202 vtkGetStringMacro(LookupTableName);
00204
00206
00208 vtkSetStringMacro(FieldDataName);
00209 vtkGetStringMacro(FieldDataName);
00211
00213 int OpenVTKFile();
00214
00216 int ReadHeader();
00217
00221 int ReadCellData(vtkDataSet *ds, int numCells);
00222
00226 int ReadPointData(vtkDataSet *ds, int numPts);
00227
00229 int ReadPoints(vtkPointSet *ps, int numPts);
00230
00232 int ReadCells(int size, int *data);
00233
00235 int ReadCells(int size, int *data, int skip1, int read2, int skip3);
00236
00239 int ReadCoordinates(vtkRectilinearGrid *rg, int axes, int numCoords);
00240
00242
00243 vtkDataArray *ReadArray(const char *dataType, int numTuples, int numComp);
00244 vtkFieldData *ReadFieldData();
00246
00248
00250 int Read(char *);
00251 int Read(unsigned char *);
00252 int Read(short *);
00253 int Read(unsigned short *);
00254 int Read(int *);
00255 int Read(unsigned int *);
00256 int Read(long *);
00257 int Read(unsigned long *);
00258 int Read(float *);
00259 int Read(double *);
00261
00263 void CloseVTKFile();
00264
00265
00268 int ReadLine(char result[256]);
00269
00272 int ReadString(char result[256]);
00273
00275 char *LowerCase(char *str, const size_t len=256);
00276
00278 istream *GetIStream() {return this->IS;};
00279
00280
00281 protected:
00282 vtkDataReader();
00283 ~vtkDataReader();
00284
00285 char *FileName;
00286 int FileType;
00287 istream *IS;
00288
00289 char *ScalarsName;
00290 char *VectorsName;
00291 char *TensorsName;
00292 char *TCoordsName;
00293 char *NormalsName;
00294 char *LookupTableName;
00295 char *FieldDataName;
00296 char *ScalarLut;
00297
00298 int ReadFromInputString;
00299 char *InputString;
00300 int InputStringLength;
00301 int InputStringPos;
00302
00303 vtkSetStringMacro(ScalarLut);
00304 vtkGetStringMacro(ScalarLut);
00305
00306 char *Header;
00307
00308 int ReadScalarData(vtkDataSetAttributes *a, int num);
00309 int ReadVectorData(vtkDataSetAttributes *a, int num);
00310 int ReadNormalData(vtkDataSetAttributes *a, int num);
00311 int ReadTensorData(vtkDataSetAttributes *a, int num);
00312 int ReadCoScalarData(vtkDataSetAttributes *a, int num);
00313 int ReadLutData(vtkDataSetAttributes *a);
00314 int ReadTCoordsData(vtkDataSetAttributes *a, int num);
00315
00316 int ReadDataSetData(vtkDataSet *ds);
00317
00318
00319 int NumberOfScalarsInFile;
00320 char **ScalarsNameInFile;
00321 int ScalarsNameAllocSize;
00322 int NumberOfVectorsInFile;
00323 char **VectorsNameInFile;
00324 int VectorsNameAllocSize;
00325 int NumberOfTensorsInFile;
00326 char **TensorsNameInFile;
00327 int TensorsNameAllocSize;
00328 int NumberOfTCoordsInFile;
00329 char **TCoordsNameInFile;
00330 int TCoordsNameAllocSize;
00331 int NumberOfNormalsInFile;
00332 char **NormalsNameInFile;
00333 int NormalsNameAllocSize;
00334 int NumberOfFieldDataInFile;
00335 char **FieldDataNameInFile;
00336 int FieldDataNameAllocSize;
00337 vtkTimeStamp CharacteristicsTime;
00338
00339 void InitializeCharacteristics();
00340 int CharacterizeFile();
00341 void CheckFor(const char* name, char *line, int &num, char** &array,
00342 int& allocSize);
00343
00344 vtkCharArray* InputArray;
00345
00348 void DecodeArrayName(char *resname, const char* name);
00349
00350 private:
00351 vtkDataReader(const vtkDataReader&);
00352 void operator=(const vtkDataReader&);
00353 };
00354
00355 #endif
00356
00357