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 Language: C++ 00006 00007 Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 00008 All rights reserved. 00009 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00010 00011 This software is distributed WITHOUT ANY WARRANTY; without even 00012 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00013 PURPOSE. See the above copyright notice for more information. 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 //BTX 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 //ETX 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 // This supports getting additional information from vtk files 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(); //read entire file, storing important characteristics 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&); // Not implemented. 00340 void operator=(const vtkDataReader&); // Not implemented. 00341 }; 00342 00343 #endif 00344 00345