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

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 "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 //BTX
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 //ETX
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   // This supports getting additional information from vtk files
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(); //read entire file, storing important characteristics
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&);  // Not implemented.
00409   void operator=(const vtkDataReader&);  // Not implemented.
00410 };
00411 
00412 #endif
00413 
00414 

Generated on Mon Jan 21 23:07:31 2008 for VTK by  doxygen 1.4.3-20050530