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 "vtkAlgorithm.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 vtkAlgorithm
00045 {
00046 public:
00047 static vtkDataReader *New();
00048 vtkTypeRevisionMacro(vtkDataReader,vtkAlgorithm);
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
00198 vtkSetMacro(ReadAllScalars,int);
00199 vtkGetMacro(ReadAllScalars,int);
00200 vtkBooleanMacro(ReadAllScalars,int);
00202
00204
00205 vtkSetMacro(ReadAllVectors,int);
00206 vtkGetMacro(ReadAllVectors,int);
00207 vtkBooleanMacro(ReadAllVectors,int);
00209
00211
00212 vtkSetMacro(ReadAllNormals,int);
00213 vtkGetMacro(ReadAllNormals,int);
00214 vtkBooleanMacro(ReadAllNormals,int);
00216
00218
00219 vtkSetMacro(ReadAllTensors,int);
00220 vtkGetMacro(ReadAllTensors,int);
00221 vtkBooleanMacro(ReadAllTensors,int);
00223
00225
00226 vtkSetMacro(ReadAllColorScalars,int);
00227 vtkGetMacro(ReadAllColorScalars,int);
00228 vtkBooleanMacro(ReadAllColorScalars,int);
00230
00232
00233 vtkSetMacro(ReadAllTCoords,int);
00234 vtkGetMacro(ReadAllTCoords,int);
00235 vtkBooleanMacro(ReadAllTCoords,int);
00237
00239
00240 vtkSetMacro(ReadAllFields,int);
00241 vtkGetMacro(ReadAllFields,int);
00242 vtkBooleanMacro(ReadAllFields,int);
00244
00246 int OpenVTKFile();
00247
00249 int ReadHeader();
00250
00254 int ReadCellData(vtkDataSet *ds, int numCells);
00255
00259 int ReadPointData(vtkDataSet *ds, int numPts);
00260
00262 int ReadPoints(vtkPointSet *ps, int numPts);
00263
00265 int ReadCells(int size, int *data);
00266
00268 int ReadCells(int size, int *data, int skip1, int read2, int skip3);
00269
00272 int ReadCoordinates(vtkRectilinearGrid *rg, int axes, int numCoords);
00273
00275
00276 vtkDataArray *ReadArray(const char *dataType, int numTuples, int numComp);
00277 vtkFieldData *ReadFieldData();
00279
00281
00283 int Read(char *);
00284 int Read(unsigned char *);
00285 int Read(short *);
00286 int Read(unsigned short *);
00287 int Read(int *);
00288 int Read(unsigned int *);
00289 int Read(long *);
00290 int Read(unsigned long *);
00291 int Read(float *);
00292 int Read(double *);
00294
00296 void CloseVTKFile();
00297
00298
00301 int ReadLine(char result[256]);
00302
00305 int ReadString(char result[256]);
00306
00308 char *LowerCase(char *str, const size_t len=256);
00309
00311 istream *GetIStream() {return this->IS;};
00312
00313
00316 virtual int ReadMetaData(vtkInformation *) { return 1; }
00317
00318 protected:
00319 vtkDataReader();
00320 ~vtkDataReader();
00321
00322 char *FileName;
00323 int FileType;
00324 istream *IS;
00325
00326 char *ScalarsName;
00327 char *VectorsName;
00328 char *TensorsName;
00329 char *TCoordsName;
00330 char *NormalsName;
00331 char *LookupTableName;
00332 char *FieldDataName;
00333 char *ScalarLut;
00334
00335 int ReadFromInputString;
00336 char *InputString;
00337 int InputStringLength;
00338 int InputStringPos;
00339
00340 vtkSetStringMacro(ScalarLut);
00341 vtkGetStringMacro(ScalarLut);
00342
00343 char *Header;
00344
00345 int ReadScalarData(vtkDataSetAttributes *a, int num);
00346 int ReadVectorData(vtkDataSetAttributes *a, int num);
00347 int ReadNormalData(vtkDataSetAttributes *a, int num);
00348 int ReadTensorData(vtkDataSetAttributes *a, int num);
00349 int ReadCoScalarData(vtkDataSetAttributes *a, int num);
00350 int ReadLutData(vtkDataSetAttributes *a);
00351 int ReadTCoordsData(vtkDataSetAttributes *a, int num);
00352
00353 int ReadDataSetData(vtkDataSet *ds);
00354
00355
00356 int NumberOfScalarsInFile;
00357 char **ScalarsNameInFile;
00358 int ScalarsNameAllocSize;
00359 int NumberOfVectorsInFile;
00360 char **VectorsNameInFile;
00361 int VectorsNameAllocSize;
00362 int NumberOfTensorsInFile;
00363 char **TensorsNameInFile;
00364 int TensorsNameAllocSize;
00365 int NumberOfTCoordsInFile;
00366 char **TCoordsNameInFile;
00367 int TCoordsNameAllocSize;
00368 int NumberOfNormalsInFile;
00369 char **NormalsNameInFile;
00370 int NormalsNameAllocSize;
00371 int NumberOfFieldDataInFile;
00372 char **FieldDataNameInFile;
00373 int FieldDataNameAllocSize;
00374 vtkTimeStamp CharacteristicsTime;
00375
00376 int ReadAllScalars;
00377 int ReadAllVectors;
00378 int ReadAllNormals;
00379 int ReadAllTensors;
00380 int ReadAllColorScalars;
00381 int ReadAllTCoords;
00382 int ReadAllFields;
00383
00384 void InitializeCharacteristics();
00385 int CharacterizeFile();
00386 void CheckFor(const char* name, char *line, int &num, char** &array,
00387 int& allocSize);
00388
00389 vtkCharArray* InputArray;
00390
00393 void DecodeArrayName(char *resname, const char* name);
00394
00395 virtual int ProcessRequest(vtkInformation *, vtkInformationVector **,
00396 vtkInformationVector *);
00397 virtual int RequestData(vtkInformation *, vtkInformationVector **,
00398 vtkInformationVector *)
00399 { return 1; }
00400 virtual int RequestUpdateExtent(vtkInformation *, vtkInformationVector **,
00401 vtkInformationVector *)
00402 { return 1; }
00403 virtual int RequestInformation(vtkInformation *, vtkInformationVector **,
00404 vtkInformationVector *)
00405 { return 1; }
00406
00407 private:
00408 vtkDataReader(const vtkDataReader&);
00409 void operator=(const vtkDataReader&);
00410 };
00411
00412 #endif
00413
00414