VTK
vtkDataReader.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkDataReader.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
28 #ifndef __vtkDataReader_h
29 #define __vtkDataReader_h
30 
31 #include "vtkAlgorithm.h"
32 
33 #define VTK_ASCII 1
34 #define VTK_BINARY 2
35 
36 class vtkAbstractArray;
37 class vtkCharArray;
38 class vtkDataSet;
40 class vtkFieldData;
41 class vtkGraph;
42 class vtkPointSet;
43 class vtkRectilinearGrid;
44 class vtkTable;
45 
47 {
48 public:
49  static vtkDataReader *New();
50  vtkTypeMacro(vtkDataReader,vtkAlgorithm);
51  void PrintSelf(ostream& os, vtkIndent indent);
52 
54 
55  vtkSetStringMacro(FileName);
56  vtkGetStringMacro(FileName);
58 
60 
62  int IsFileValid(const char *dstype);
64  return this->IsFileValid("structured_points");};
66  return this->IsFileValid("polydata");};
68  return this->IsFileValid("structured_grid");};
70  return this->IsFileValid("unstructured_grid");};
72  return this->IsFileValid("rectilinear_grid");};
74 
76 
80  void SetInputString(const char *in);
81  vtkGetStringMacro(InputString);
82  void SetInputString(const char *in, int len);
83  vtkGetMacro(InputStringLength, int);
84  void SetBinaryInputString(const char *, int len);
86 
88 
94  virtual void SetInputArray(vtkCharArray*);
95  vtkGetObjectMacro(InputArray, vtkCharArray);
97 
99 
100  vtkGetStringMacro(Header);
102 
104 
106  vtkSetMacro(ReadFromInputString,int);
107  vtkGetMacro(ReadFromInputString,int);
108  vtkBooleanMacro(ReadFromInputString,int);
110 
112 
114  vtkGetMacro(FileType,int);
116 
118 
123  {this->CharacterizeFile(); return this->NumberOfScalarsInFile;}
125  {this->CharacterizeFile(); return this->NumberOfVectorsInFile;}
127  {this->CharacterizeFile(); return this->NumberOfTensorsInFile;}
129  {this->CharacterizeFile(); return this->NumberOfNormalsInFile;}
131  {this->CharacterizeFile(); return this->NumberOfTCoordsInFile;}
133  {this->CharacterizeFile(); return this->NumberOfFieldDataInFile;}
135 
137 
140  const char *GetScalarsNameInFile(int i);
141  const char *GetVectorsNameInFile(int i);
142  const char *GetTensorsNameInFile(int i);
143  const char *GetNormalsNameInFile(int i);
144  const char *GetTCoordsNameInFile(int i);
145  const char *GetFieldDataNameInFile(int i);
147 
149 
151  vtkSetStringMacro(ScalarsName);
152  vtkGetStringMacro(ScalarsName);
154 
156 
158  vtkSetStringMacro(VectorsName);
159  vtkGetStringMacro(VectorsName);
161 
163 
165  vtkSetStringMacro(TensorsName);
166  vtkGetStringMacro(TensorsName);
168 
170 
172  vtkSetStringMacro(NormalsName);
173  vtkGetStringMacro(NormalsName);
175 
177 
179  vtkSetStringMacro(TCoordsName);
180  vtkGetStringMacro(TCoordsName);
182 
184 
187  vtkSetStringMacro(LookupTableName);
188  vtkGetStringMacro(LookupTableName);
190 
192 
194  vtkSetStringMacro(FieldDataName);
195  vtkGetStringMacro(FieldDataName);
197 
199 
200  vtkSetMacro(ReadAllScalars,int);
201  vtkGetMacro(ReadAllScalars,int);
202  vtkBooleanMacro(ReadAllScalars,int);
204 
206 
207  vtkSetMacro(ReadAllVectors,int);
208  vtkGetMacro(ReadAllVectors,int);
209  vtkBooleanMacro(ReadAllVectors,int);
211 
213 
214  vtkSetMacro(ReadAllNormals,int);
215  vtkGetMacro(ReadAllNormals,int);
216  vtkBooleanMacro(ReadAllNormals,int);
218 
220 
221  vtkSetMacro(ReadAllTensors,int);
222  vtkGetMacro(ReadAllTensors,int);
223  vtkBooleanMacro(ReadAllTensors,int);
225 
227 
228  vtkSetMacro(ReadAllColorScalars,int);
229  vtkGetMacro(ReadAllColorScalars,int);
230  vtkBooleanMacro(ReadAllColorScalars,int);
232 
234 
235  vtkSetMacro(ReadAllTCoords,int);
236  vtkGetMacro(ReadAllTCoords,int);
237  vtkBooleanMacro(ReadAllTCoords,int);
239 
241 
242  vtkSetMacro(ReadAllFields,int);
243  vtkGetMacro(ReadAllFields,int);
244  vtkBooleanMacro(ReadAllFields,int);
246 
248  int OpenVTKFile();
249 
251  int ReadHeader();
252 
256  int ReadCellData(vtkDataSet *ds, int numCells);
257 
261  int ReadPointData(vtkDataSet *ds, int numPts);
262 
264  int ReadPoints(vtkPointSet *ps, int numPts);
265 
267  int ReadPoints(vtkGraph *g, int numPts);
268 
272  int ReadVertexData(vtkGraph *g, int numVertices);
273 
277  int ReadEdgeData(vtkGraph *g, int numEdges);
278 
280  int ReadRowData(vtkTable *t, int numEdges);
281 
283  int ReadCells(int size, int *data);
284 
286  int ReadCells(int size, int *data, int skip1, int read2, int skip3);
287 
290  int ReadCoordinates(vtkRectilinearGrid *rg, int axes, int numCoords);
291 
293 
294  vtkAbstractArray *ReadArray(const char *dataType, int numTuples, int numComp);
295  vtkFieldData *ReadFieldData();
297 
298 //BTX
300 
302  int Read(char *);
303  int Read(unsigned char *);
304  int Read(short *);
305  int Read(unsigned short *);
306  int Read(int *);
307  int Read(unsigned int *);
308  int Read(long *);
309  int Read(unsigned long *);
310 #if defined(VTK_TYPE_USE___INT64)
311  int Read(__int64 *result);
312  int Read(unsigned __int64 *result);
313 #endif
314 #if defined(VTK_TYPE_USE_LONG_LONG)
315  int Read(long long *result);
316  int Read(unsigned long long *result);
317 #endif
318  int Read(float *);
319  int Read(double *);
320 //ETX
322 
324  void CloseVTKFile();
325 
326 //BTX
329  int ReadLine(char result[256]);
330 
333  int ReadString(char result[256]);
334 
336  char *LowerCase(char *str, const size_t len=256);
337 
339 
340  istream *GetIStream() {return this->IS;};
341 //ETX
343 
346  virtual int ReadMetaData(vtkInformation *) { return 1; }
347 
348 protected:
349  vtkDataReader();
350  ~vtkDataReader();
351 
352  char *FileName;
353  int FileType;
354  istream *IS;
355 
356  char *ScalarsName;
357  char *VectorsName;
358  char *TensorsName;
359  char *TCoordsName;
360  char *NormalsName;
363  char *ScalarLut;
364 
366  char *InputString;
369 
370  void SetScalarLut(const char* lut);
371  vtkGetStringMacro(ScalarLut);
372 
373  char *Header;
374 
375  int ReadScalarData(vtkDataSetAttributes *a, int num);
376  int ReadVectorData(vtkDataSetAttributes *a, int num);
377  int ReadNormalData(vtkDataSetAttributes *a, int num);
378  int ReadTensorData(vtkDataSetAttributes *a, int num);
379  int ReadCoScalarData(vtkDataSetAttributes *a, int num);
380  int ReadLutData(vtkDataSetAttributes *a);
381  int ReadTCoordsData(vtkDataSetAttributes *a, int num);
382  int ReadGlobalIds(vtkDataSetAttributes *a, int num);
383  int ReadPedigreeIds(vtkDataSetAttributes *a, int num);
384 
385  int ReadDataSetData(vtkDataSet *ds);
386 
387  // This supports getting additional information from vtk files
407 
415 
416  void InitializeCharacteristics();
417  int CharacterizeFile(); //read entire file, storing important characteristics
418  void CheckFor(const char* name, char *line, int &num, char** &array,
419  int& allocSize);
420 
422 
425  int DecodeString(char *resname, const char* name);
426 
431  { return 1; }
434  { return 1; }
437  { return 1; }
438 
439 private:
440  vtkDataReader(const vtkDataReader&); // Not implemented.
441  void operator=(const vtkDataReader&); // Not implemented.
442 };
443 
444 #endif
445 
446