dox/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
00032 #ifndef __vtkDataReader_h
00033 #define __vtkDataReader_h
00034
00035 #include "vtkSource.h"
00036
00037 #define VTK_ASCII 1
00038 #define VTK_BINARY 2
00039
00040 class vtkCharArray;
00041 class vtkDataArray;
00042 class vtkDataSet;
00043 class vtkDataSetAttributes;
00044 class vtkFieldData;
00045 class vtkPointSet;
00046 class vtkRectilinearGrid;
00047
00048 class VTK_IO_EXPORT vtkDataReader : public vtkSource
00049 {
00050 public:
00051 static vtkDataReader *New();
00052 vtkTypeRevisionMacro(vtkDataReader,vtkSource);
00053 void PrintSelf(ostream& os, vtkIndent indent);
00054
00056
00057 vtkSetStringMacro(FileName);
00058 vtkGetStringMacro(FileName);
00060
00062
00064 int IsFileValid(const char *dstype);
00065 int IsFileStructuredPoints() {
00066 return this->IsFileValid("structured_points");};
00067 int IsFilePolyData() {
00068 return this->IsFileValid("polydata");};
00069 int IsFileStructuredGrid() {
00070 return this->IsFileValid("structured_grid");};
00071 int IsFileUnstructuredGrid() {
00072 return this->IsFileValid("unstructured_grid");};
00073 int IsFileRectilinearGrid() {
00074 return this->IsFileValid("rectilinear_grid");};
00076
00078
00082 void SetInputString(const char *in);
00083 vtkGetStringMacro(InputString);
00084 void SetInputString(const char *in, int len);
00085 vtkGetMacro(InputStringLength, int);
00086 void SetBinaryInputString(const char *, int len);
00088
00090
00096 virtual void SetInputArray(vtkCharArray*);
00097 vtkGetObjectMacro(InputArray, vtkCharArray);
00099
00101
00102 vtkGetStringMacro(Header);
00104
00106
00108 vtkSetMacro(ReadFromInputString,int);
00109 vtkGetMacro(ReadFromInputString,int);
00110 vtkBooleanMacro(ReadFromInputString,int);
00112
00114
00116 vtkGetMacro(FileType,int);
00118
00120
00124 int GetNumberOfScalarsInFile()
00125 {this->CharacterizeFile(); return this->NumberOfScalarsInFile;}
00126 int GetNumberOfVectorsInFile()
00127 {this->CharacterizeFile(); return this->NumberOfVectorsInFile;}
00128 int GetNumberOfTensorsInFile()
00129 {this->CharacterizeFile(); return this->NumberOfTensorsInFile;}
00130 int GetNumberOfNormalsInFile()
00131 {this->CharacterizeFile(); return this->NumberOfNormalsInFile;}
00132 int GetNumberOfTCoordsInFile()
00133 {this->CharacterizeFile(); return this->NumberOfTCoordsInFile;}
00134 int GetNumberOfFieldDataInFile()
00135 {this->CharacterizeFile(); return this->NumberOfFieldDataInFile;}
00137
00139
00142 const char *GetScalarsNameInFile(int i);
00143 const char *GetVectorsNameInFile(int i);
00144 const char *GetTensorsNameInFile(int i);
00145 const char *GetNormalsNameInFile(int i);
00146 const char *GetTCoordsNameInFile(int i);
00147 const char *GetFieldDataNameInFile(int i);
00149
00151
00153 vtkSetStringMacro(ScalarsName);
00154 vtkGetStringMacro(ScalarsName);
00156
00158
00160 vtkSetStringMacro(VectorsName);
00161 vtkGetStringMacro(VectorsName);
00163
00165
00167 vtkSetStringMacro(TensorsName);
00168 vtkGetStringMacro(TensorsName);
00170
00172
00174 vtkSetStringMacro(NormalsName);
00175 vtkGetStringMacro(NormalsName);
00177
00179
00181 vtkSetStringMacro(TCoordsName);
00182 vtkGetStringMacro(TCoordsName);
00184
00186
00189 vtkSetStringMacro(LookupTableName);
00190 vtkGetStringMacro(LookupTableName);
00192
00194
00196 vtkSetStringMacro(FieldDataName);
00197 vtkGetStringMacro(FieldDataName);
00199
00201 int OpenVTKFile();
00202
00204 int ReadHeader();
00205
00209 int ReadCellData(vtkDataSet *ds, int numCells);
00210
00214 int ReadPointData(vtkDataSet *ds, int numPts);
00215
00217 int ReadPoints(vtkPointSet *ps, int numPts);
00218
00220 int ReadCells(int size, int *data);
00221
00223 int ReadCells(int size, int *data, int skip1, int read2, int skip3);
00224
00227 int ReadCoordinates(vtkRectilinearGrid *rg, int axes, int numCoords);
00228
00230
00231 vtkDataArray *ReadArray(const char *dataType, int numTuples, int numComp);
00232 vtkFieldData *ReadFieldData();
00234
00236
00238 int Read(char *);
00239 int Read(unsigned char *);
00240 int Read(short *);
00241 int Read(unsigned short *);
00242 int Read(int *);
00243 int Read(unsigned int *);
00244 int Read(long *);
00245 int Read(unsigned long *);
00246 int Read(float *);
00247 int Read(double *);
00249
00251 void CloseVTKFile();
00252
00253
00256 int ReadLine(char result[256]);
00257
00260 int ReadString(char result[256]);
00261
00263 char *LowerCase(char *str, const size_t len=256);
00264
00266 istream *GetIStream() {return this->IS;};
00267
00268
00269 protected:
00270 vtkDataReader();
00271 ~vtkDataReader();
00272
00273 char *FileName;
00274 int FileType;
00275 istream *IS;
00276
00277 char *ScalarsName;
00278 char *VectorsName;
00279 char *TensorsName;
00280 char *TCoordsName;
00281 char *NormalsName;
00282 char *LookupTableName;
00283 char *FieldDataName;
00284 char *ScalarLut;
00285
00286 int ReadFromInputString;
00287 char *InputString;
00288 int InputStringLength;
00289 int InputStringPos;
00290
00291 vtkSetStringMacro(ScalarLut);
00292 vtkGetStringMacro(ScalarLut);
00293
00294 char *Header;
00295
00296 int ReadScalarData(vtkDataSetAttributes *a, int num);
00297 int ReadVectorData(vtkDataSetAttributes *a, int num);
00298 int ReadNormalData(vtkDataSetAttributes *a, int num);
00299 int ReadTensorData(vtkDataSetAttributes *a, int num);
00300 int ReadCoScalarData(vtkDataSetAttributes *a, int num);
00301 int ReadLutData(vtkDataSetAttributes *a);
00302 int ReadTCoordsData(vtkDataSetAttributes *a, int num);
00303
00304 int ReadDataSetData(vtkDataSet *ds);
00305
00306
00307 int NumberOfScalarsInFile;
00308 char **ScalarsNameInFile;
00309 int ScalarsNameAllocSize;
00310 int NumberOfVectorsInFile;
00311 char **VectorsNameInFile;
00312 int VectorsNameAllocSize;
00313 int NumberOfTensorsInFile;
00314 char **TensorsNameInFile;
00315 int TensorsNameAllocSize;
00316 int NumberOfTCoordsInFile;
00317 char **TCoordsNameInFile;
00318 int TCoordsNameAllocSize;
00319 int NumberOfNormalsInFile;
00320 char **NormalsNameInFile;
00321 int NormalsNameAllocSize;
00322 int NumberOfFieldDataInFile;
00323 char **FieldDataNameInFile;
00324 int FieldDataNameAllocSize;
00325 vtkTimeStamp CharacteristicsTime;
00326
00327 void InitializeCharacteristics();
00328 int CharacterizeFile();
00329 void CheckFor(const char* name, char *line, int &num, char** &array,
00330 int& allocSize);
00331
00332 vtkCharArray* InputArray;
00333
00336 void DecodeArrayName(char *resname, const char* name);
00337
00338 private:
00339 vtkDataReader(const vtkDataReader&);
00340 void operator=(const vtkDataReader&);
00341 };
00342
00343 #endif
00344
00345