Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

dox/IO/vtkDataReader.h

Go to the documentation of this file.
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkDataReader.h,v $ 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 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 //BTX 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 //ETX 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 // This supports getting additional information from vtk files 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(); //read entire file, storing important characteristics 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&); // Not implemented. 00336 void operator=(const vtkDataReader&); // Not implemented. 00337 }; 00338 00339 #endif 00340 00341