IO/vtkDataReader.h Source File

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

# 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 =========================================================================*/
    00044 #ifndef __vtkDataReader_h
    00045 #define __vtkDataReader_h
    00046
    00047 #include "vtkSource.h"
    00048
    00049 #define VTK_ASCII 1
    00050 #define VTK_BINARY 2
    00051
    00052 class vtkCharArray;
    00053 class vtkDataArray;
    00054 class vtkDataSet;
    00055 class vtkDataSetAttributes;
    00056 class vtkFieldData;
    00057 class vtkPointSet;
    00058 class vtkRectilinearGrid;
    00059
    00060 class VTK_IO_EXPORT vtkDataReader : public vtkSource
    00061 {
    00062 public:
    00063   static vtkDataReader *New();
    00064   vtkTypeRevisionMacro(vtkDataReader,vtkSource);
    00065   void PrintSelf(ostream& os, vtkIndent indent);
    00066
    00068
    00069   vtkSetStringMacro(FileName);
    00070   vtkGetStringMacro(FileName);
    00072
    00074
    00076   int IsFileValid(const char *dstype);
    00077   int IsFileStructuredPoints() {
    00078     return this->IsFileValid("structured_points");};
    00079   int IsFilePolyData() {
    00080     return this->IsFileValid("polydata");};
    00081   int IsFileStructuredGrid() {
    00082     return this->IsFileValid("structured_grid");};
    00083   int IsFileUnstructuredGrid() {
    00084     return this->IsFileValid("unstructured_grid");};
    00085   int IsFileRectilinearGrid() {
    00086     return this->IsFileValid("rectilinear_grid");};
    00088
    00090
    00094   void SetInputString(const char *in);
    00095   vtkGetStringMacro(InputString);
    00096   void SetInputString(const char *in, int len);
    00097   vtkGetMacro(InputStringLength, int);
    00098   void SetBinaryInputString(const char *, int len);
    00100
    00102
    00108   virtual void SetInputArray(vtkCharArray*);
    00109   vtkGetObjectMacro(InputArray, vtkCharArray);
    00111
    00113
    00114   vtkGetStringMacro(Header);
    00116
    00118
    00120   vtkSetMacro(ReadFromInputString,int);
    00121   vtkGetMacro(ReadFromInputString,int);
    00122   vtkBooleanMacro(ReadFromInputString,int);
    00124
    00126
    00128   vtkGetMacro(FileType,int);
    00130
    00132
    00136   int GetNumberOfScalarsInFile()
    00137     {this->CharacterizeFile(); return this->NumberOfScalarsInFile;}
    00138   int GetNumberOfVectorsInFile()
    00139     {this->CharacterizeFile(); return this->NumberOfVectorsInFile;}
    00140   int GetNumberOfTensorsInFile()
    00141     {this->CharacterizeFile(); return this->NumberOfTensorsInFile;}
    00142   int GetNumberOfNormalsInFile()
    00143     {this->CharacterizeFile(); return this->NumberOfNormalsInFile;}
    00144   int GetNumberOfTCoordsInFile()
    00145     {this->CharacterizeFile(); return this->NumberOfTCoordsInFile;}
    00146   int GetNumberOfFieldDataInFile()
    00147     {this->CharacterizeFile(); return this->NumberOfFieldDataInFile;}
    00149
    00151
    00154   const char *GetScalarsNameInFile(int i);
    00155   const char *GetVectorsNameInFile(int i);
    00156   const char *GetTensorsNameInFile(int i);
    00157   const char *GetNormalsNameInFile(int i);
    00158   const char *GetTCoordsNameInFile(int i);
    00159   const char *GetFieldDataNameInFile(int i);
    00161
    00163
    00165   vtkSetStringMacro(ScalarsName);
    00166   vtkGetStringMacro(ScalarsName);
    00168
    00170
    00172   vtkSetStringMacro(VectorsName);
    00173   vtkGetStringMacro(VectorsName);
    00175
    00177
    00179   vtkSetStringMacro(TensorsName);
    00180   vtkGetStringMacro(TensorsName);
    00182
    00184
    00186   vtkSetStringMacro(NormalsName);
    00187   vtkGetStringMacro(NormalsName);
    00189
    00191
    00193   vtkSetStringMacro(TCoordsName);
    00194   vtkGetStringMacro(TCoordsName);
    00196
    00198
    00201   vtkSetStringMacro(LookupTableName);
    00202   vtkGetStringMacro(LookupTableName);
    00204
    00206
    00208   vtkSetStringMacro(FieldDataName);
    00209   vtkGetStringMacro(FieldDataName);
    00211
    00213   int OpenVTKFile();
    00214
    00216   int ReadHeader();
    00217
    00221   int ReadCellData(vtkDataSet *ds, int numCells);
    00222
    00226   int ReadPointData(vtkDataSet *ds, int numPts);
    00227
    00229   int ReadPoints(vtkPointSet *ps, int numPts);
    00230
    00232   int ReadCells(int size, int *data);
    00233
    00235   int ReadCells(int size, int *data, int skip1, int read2, int skip3);
    00236
    00239   int ReadCoordinates(vtkRectilinearGrid *rg, int axes, int numCoords);
    00240
    00242
    00243   vtkDataArray *ReadArray(const char *dataType, int numTuples, int numComp);
    00244   vtkFieldData *ReadFieldData();
    00246
    00248
    00250   int Read(char *);
    00251   int Read(unsigned char *);
    00252   int Read(short *);
    00253   int Read(unsigned short *);
    00254   int Read(int *);
    00255   int Read(unsigned int *);
    00256   int Read(long *);
    00257   int Read(unsigned long *);
    00258   int Read(float *);
    00259   int Read(double *);
    00261
    00263   void CloseVTKFile();
    00264
    00265 //BTX
    00268   int ReadLine(char result[256]);
    00269
    00272   int ReadString(char result[256]);
    00273
    00275   char *LowerCase(char *str, const size_t len=256);
    00276
    00278   istream *GetIStream() {return this->IS;};
    00279 //ETX
    00280
    00281 protected:
    00282   vtkDataReader();
    00283   ~vtkDataReader();
    00284
    00285   char *FileName;
    00286   int FileType;
    00287   istream *IS;
    00288
    00289   char *ScalarsName;
    00290   char *VectorsName;
    00291   char *TensorsName;
    00292   char *TCoordsName;
    00293   char *NormalsName;
    00294   char *LookupTableName;
    00295   char *FieldDataName;
    00296   char *ScalarLut;
    00297
    00298   int ReadFromInputString;
    00299   char *InputString;
    00300   int InputStringLength;
    00301   int InputStringPos;
    00302
    00303   vtkSetStringMacro(ScalarLut);
    00304   vtkGetStringMacro(ScalarLut);
    00305
    00306   char *Header;
    00307
    00308   int ReadScalarData(vtkDataSetAttributes *a, int num);
    00309   int ReadVectorData(vtkDataSetAttributes *a, int num);
    00310   int ReadNormalData(vtkDataSetAttributes *a, int num);
    00311   int ReadTensorData(vtkDataSetAttributes *a, int num);
    00312   int ReadCoScalarData(vtkDataSetAttributes *a, int num);
    00313   int ReadLutData(vtkDataSetAttributes *a);
    00314   int ReadTCoordsData(vtkDataSetAttributes *a, int num);
    00315
    00316   int ReadDataSetData(vtkDataSet *ds);
    00317
    00318   // This supports getting additional information from vtk files
    00319   int  NumberOfScalarsInFile;
    00320   char **ScalarsNameInFile;
    00321   int ScalarsNameAllocSize;
    00322   int  NumberOfVectorsInFile;
    00323   char **VectorsNameInFile;
    00324   int VectorsNameAllocSize;
    00325   int  NumberOfTensorsInFile;
    00326   char **TensorsNameInFile;
    00327   int TensorsNameAllocSize;
    00328   int  NumberOfTCoordsInFile;
    00329   char **TCoordsNameInFile;
    00330   int TCoordsNameAllocSize;
    00331   int  NumberOfNormalsInFile;
    00332   char **NormalsNameInFile;
    00333   int NormalsNameAllocSize;
    00334   int  NumberOfFieldDataInFile;
    00335   char **FieldDataNameInFile;
    00336   int FieldDataNameAllocSize;
    00337   vtkTimeStamp CharacteristicsTime;
    00338
    00339   void InitializeCharacteristics();
    00340   int CharacterizeFile(); //read entire file, storing important characteristics
    00341   void CheckFor(const char* name, char *line, int &num, char** &array,
    00342                 int& allocSize);
    00343
    00344   vtkCharArray* InputArray;
    00345
    00348   void DecodeArrayName(char *resname, const char* name);
    00349
    00350 private:
    00351   vtkDataReader(const vtkDataReader&);  // Not implemented.
    00352   void operator=(const vtkDataReader&);  // Not implemented.
    00353 };
    00354
    00355 #endif
    00356
    00357