IO/vtkDataReader.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00028 #ifndef __vtkDataReader_h
00029 #define __vtkDataReader_h
00030
00031 #include "vtkSource.h"
00032
00033 #define VTK_ASCII 1
00034 #define VTK_BINARY 2
00035
00036 class vtkCharArray;
00037 class vtkDataArray;
00038 class vtkDataSet;
00039 class vtkDataSetAttributes;
00040 class vtkFieldData;
00041 class vtkPointSet;
00042 class vtkRectilinearGrid;
00043
00044 class VTK_IO_EXPORT vtkDataReader : public vtkSource
00045 {
00046 public:
00047 static vtkDataReader *New();
00048 vtkTypeRevisionMacro(vtkDataReader,vtkSource);
00049 void PrintSelf(ostream& os, vtkIndent indent);
00050
00052
00053 vtkSetStringMacro(FileName);
00054 vtkGetStringMacro(FileName);
00056
00058
00060 int IsFileValid(const char *dstype);
00061 int IsFileStructuredPoints() {
00062 return this->IsFileValid("structured_points");};
00063 int IsFilePolyData() {
00064 return this->IsFileValid("polydata");};
00065 int IsFileStructuredGrid() {
00066 return this->IsFileValid("structured_grid");};
00067 int IsFileUnstructuredGrid() {
00068 return this->IsFileValid("unstructured_grid");};
00069 int IsFileRectilinearGrid() {
00070 return this->IsFileValid("rectilinear_grid");};
00072
00074
00078 void SetInputString(const char *in);
00079 vtkGetStringMacro(InputString);
00080 void SetInputString(const char *in, int len);
00081 vtkGetMacro(InputStringLength, int);
00082 void SetBinaryInputString(const char *, int len);
00084
00086
00092 virtual void SetInputArray(vtkCharArray*);
00093 vtkGetObjectMacro(InputArray, vtkCharArray);
00095
00097
00098 vtkGetStringMacro(Header);
00100
00102
00104 vtkSetMacro(ReadFromInputString,int);
00105 vtkGetMacro(ReadFromInputString,int);
00106 vtkBooleanMacro(ReadFromInputString,int);
00108
00110
00112 vtkGetMacro(FileType,int);
00114
00116
00120 int GetNumberOfScalarsInFile()
00121 {this->CharacterizeFile(); return this->NumberOfScalarsInFile;}
00122 int GetNumberOfVectorsInFile()
00123 {this->CharacterizeFile(); return this->NumberOfVectorsInFile;}
00124 int GetNumberOfTensorsInFile()
00125 {this->CharacterizeFile(); return this->NumberOfTensorsInFile;}
00126 int GetNumberOfNormalsInFile()
00127 {this->CharacterizeFile(); return this->NumberOfNormalsInFile;}
00128 int GetNumberOfTCoordsInFile()
00129 {this->CharacterizeFile(); return this->NumberOfTCoordsInFile;}
00130 int GetNumberOfFieldDataInFile()
00131 {this->CharacterizeFile(); return this->NumberOfFieldDataInFile;}
00133
00135
00138 const char *GetScalarsNameInFile(int i);
00139 const char *GetVectorsNameInFile(int i);
00140 const char *GetTensorsNameInFile(int i);
00141 const char *GetNormalsNameInFile(int i);
00142 const char *GetTCoordsNameInFile(int i);
00143 const char *GetFieldDataNameInFile(int i);
00145
00147
00149 vtkSetStringMacro(ScalarsName);
00150 vtkGetStringMacro(ScalarsName);
00152
00154
00156 vtkSetStringMacro(VectorsName);
00157 vtkGetStringMacro(VectorsName);
00159
00161
00163 vtkSetStringMacro(TensorsName);
00164 vtkGetStringMacro(TensorsName);
00166
00168
00170 vtkSetStringMacro(NormalsName);
00171 vtkGetStringMacro(NormalsName);
00173
00175
00177 vtkSetStringMacro(TCoordsName);
00178 vtkGetStringMacro(TCoordsName);
00180
00182
00185 vtkSetStringMacro(LookupTableName);
00186 vtkGetStringMacro(LookupTableName);
00188
00190
00192 vtkSetStringMacro(FieldDataName);
00193 vtkGetStringMacro(FieldDataName);
00195
00197 int OpenVTKFile();
00198
00200 int ReadHeader();
00201
00205 int ReadCellData(vtkDataSet *ds, int numCells);
00206
00210 int ReadPointData(vtkDataSet *ds, int numPts);
00211
00213 int ReadPoints(vtkPointSet *ps, int numPts);
00214
00216 int ReadCells(int size, int *data);
00217
00219 int ReadCells(int size, int *data, int skip1, int read2, int skip3);
00220
00223 int ReadCoordinates(vtkRectilinearGrid *rg, int axes, int numCoords);
00224
00226
00227 vtkDataArray *ReadArray(const char *dataType, int numTuples, int numComp);
00228 vtkFieldData *ReadFieldData();
00230
00232
00234 int Read(char *);
00235 int Read(unsigned char *);
00236 int Read(short *);
00237 int Read(unsigned short *);
00238 int Read(int *);
00239 int Read(unsigned int *);
00240 int Read(long *);
00241 int Read(unsigned long *);
00242 int Read(float *);
00243 int Read(double *);
00245
00247 void CloseVTKFile();
00248
00249
00252 int ReadLine(char result[256]);
00253
00256 int ReadString(char result[256]);
00257
00259 char *LowerCase(char *str, const size_t len=256);
00260
00262 istream *GetIStream() {return this->IS;};
00263
00264
00265 protected:
00266 vtkDataReader();
00267 ~vtkDataReader();
00268
00269 char *FileName;
00270 int FileType;
00271 istream *IS;
00272
00273 char *ScalarsName;
00274 char *VectorsName;
00275 char *TensorsName;
00276 char *TCoordsName;
00277 char *NormalsName;
00278 char *LookupTableName;
00279 char *FieldDataName;
00280 char *ScalarLut;
00281
00282 int ReadFromInputString;
00283 char *InputString;
00284 int InputStringLength;
00285 int InputStringPos;
00286
00287 vtkSetStringMacro(ScalarLut);
00288 vtkGetStringMacro(ScalarLut);
00289
00290 char *Header;
00291
00292 int ReadScalarData(vtkDataSetAttributes *a, int num);
00293 int ReadVectorData(vtkDataSetAttributes *a, int num);
00294 int ReadNormalData(vtkDataSetAttributes *a, int num);
00295 int ReadTensorData(vtkDataSetAttributes *a, int num);
00296 int ReadCoScalarData(vtkDataSetAttributes *a, int num);
00297 int ReadLutData(vtkDataSetAttributes *a);
00298 int ReadTCoordsData(vtkDataSetAttributes *a, int num);
00299
00300 int ReadDataSetData(vtkDataSet *ds);
00301
00302
00303 int NumberOfScalarsInFile;
00304 char **ScalarsNameInFile;
00305 int ScalarsNameAllocSize;
00306 int NumberOfVectorsInFile;
00307 char **VectorsNameInFile;
00308 int VectorsNameAllocSize;
00309 int NumberOfTensorsInFile;
00310 char **TensorsNameInFile;
00311 int TensorsNameAllocSize;
00312 int NumberOfTCoordsInFile;
00313 char **TCoordsNameInFile;
00314 int TCoordsNameAllocSize;
00315 int NumberOfNormalsInFile;
00316 char **NormalsNameInFile;
00317 int NormalsNameAllocSize;
00318 int NumberOfFieldDataInFile;
00319 char **FieldDataNameInFile;
00320 int FieldDataNameAllocSize;
00321 vtkTimeStamp CharacteristicsTime;
00322
00323 void InitializeCharacteristics();
00324 int CharacterizeFile();
00325 void CheckFor(const char* name, char *line, int &num, char** &array,
00326 int& allocSize);
00327
00328 vtkCharArray* InputArray;
00329
00332 void DecodeArrayName(char *resname, const char* name);
00333
00334 private:
00335 vtkDataReader(const vtkDataReader&);
00336 void operator=(const vtkDataReader&);
00337 };
00338
00339 #endif
00340
00341