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 =========================================================================*/
29 #ifndef vtkDataReader_h
30 #define vtkDataReader_h
31 
32 #include "vtkIOLegacyModule.h" // For export macro
33 #include "vtkSimpleReader.h"
34 #include "vtkStdString.h" // For API using strings
35 
36 #include <locale> // For locale settings
37 
38 #define VTK_ASCII 1
39 #define VTK_BINARY 2
40 
41 class vtkAbstractArray;
42 class vtkCharArray;
43 class vtkDataSet;
45 class vtkFieldData;
46 class vtkGraph;
47 class vtkPointSet;
48 class vtkRectilinearGrid;
49 class vtkTable;
50 
51 class VTKIOLEGACY_EXPORT vtkDataReader : public vtkSimpleReader
52 {
53 public:
54  enum FieldType
55  {
58  FIELD_DATA
59  };
60 
61  static vtkDataReader *New();
63  void PrintSelf(ostream& os, vtkIndent indent) override;
64 
66 
71  void SetFileName(const char* fname);
72  const char* GetFileName() const;
73  const char* GetFileName(int i) const
74  {
75  return this->vtkSimpleReader::GetFileName(i);
76  }
78 
80 
84  int IsFileValid(const char *dstype);
86  return this->IsFileValid("structured_points");};
88  return this->IsFileValid("polydata");};
90  return this->IsFileValid("structured_grid");};
92  return this->IsFileValid("unstructured_grid");};
94  return this->IsFileValid("rectilinear_grid");};
96 
98 
104  void SetInputString(const char *in);
105  vtkGetStringMacro(InputString);
106  void SetInputString(const char *in, int len);
107  vtkGetMacro(InputStringLength, int);
108  void SetBinaryInputString(const char *, int len);
109  void SetInputString(const vtkStdString& input)
110  { this->SetBinaryInputString(input.c_str(), static_cast<int>(input.length())); }
112 
114 
122  virtual void SetInputArray(vtkCharArray*);
123  vtkGetObjectMacro(InputArray, vtkCharArray);
125 
127 
130  vtkGetStringMacro(Header);
132 
134 
138  vtkSetMacro(ReadFromInputString,vtkTypeBool);
139  vtkGetMacro(ReadFromInputString,vtkTypeBool);
140  vtkBooleanMacro(ReadFromInputString,vtkTypeBool);
142 
144 
148  vtkGetMacro(FileType,int);
150 
159  {this->CharacterizeFile(); return this->NumberOfScalarsInFile;}
161  {this->CharacterizeFile(); return this->NumberOfVectorsInFile;}
163  {this->CharacterizeFile(); return this->NumberOfTensorsInFile;}
165  {this->CharacterizeFile(); return this->NumberOfNormalsInFile;}
167  {this->CharacterizeFile(); return this->NumberOfTCoordsInFile;}
169  {this->CharacterizeFile(); return this->NumberOfFieldDataInFile;}
170 
172 
177  const char *GetScalarsNameInFile(int i);
178  const char *GetVectorsNameInFile(int i);
179  const char *GetTensorsNameInFile(int i);
180  const char *GetNormalsNameInFile(int i);
181  const char *GetTCoordsNameInFile(int i);
182  const char *GetFieldDataNameInFile(int i);
184 
186 
190  vtkSetStringMacro(ScalarsName);
191  vtkGetStringMacro(ScalarsName);
193 
195 
199  vtkSetStringMacro(VectorsName);
200  vtkGetStringMacro(VectorsName);
202 
204 
208  vtkSetStringMacro(TensorsName);
209  vtkGetStringMacro(TensorsName);
211 
213 
217  vtkSetStringMacro(NormalsName);
218  vtkGetStringMacro(NormalsName);
220 
222 
226  vtkSetStringMacro(TCoordsName);
227  vtkGetStringMacro(TCoordsName);
229 
231 
235  vtkSetStringMacro(LookupTableName);
236  vtkGetStringMacro(LookupTableName);
238 
240 
244  vtkSetStringMacro(FieldDataName);
245  vtkGetStringMacro(FieldDataName);
247 
249 
252  vtkSetMacro(ReadAllScalars,vtkTypeBool);
253  vtkGetMacro(ReadAllScalars,vtkTypeBool);
254  vtkBooleanMacro(ReadAllScalars,vtkTypeBool);
256 
258 
261  vtkSetMacro(ReadAllVectors,vtkTypeBool);
262  vtkGetMacro(ReadAllVectors,vtkTypeBool);
263  vtkBooleanMacro(ReadAllVectors,vtkTypeBool);
265 
267 
270  vtkSetMacro(ReadAllNormals,vtkTypeBool);
271  vtkGetMacro(ReadAllNormals,vtkTypeBool);
272  vtkBooleanMacro(ReadAllNormals,vtkTypeBool);
274 
276 
279  vtkSetMacro(ReadAllTensors,vtkTypeBool);
280  vtkGetMacro(ReadAllTensors,vtkTypeBool);
281  vtkBooleanMacro(ReadAllTensors,vtkTypeBool);
283 
285 
288  vtkSetMacro(ReadAllColorScalars,vtkTypeBool);
289  vtkGetMacro(ReadAllColorScalars,vtkTypeBool);
290  vtkBooleanMacro(ReadAllColorScalars,vtkTypeBool);
292 
294 
297  vtkSetMacro(ReadAllTCoords,vtkTypeBool);
298  vtkGetMacro(ReadAllTCoords,vtkTypeBool);
299  vtkBooleanMacro(ReadAllTCoords,vtkTypeBool);
301 
303 
306  vtkSetMacro(ReadAllFields,vtkTypeBool);
307  vtkGetMacro(ReadAllFields,vtkTypeBool);
308  vtkBooleanMacro(ReadAllFields,vtkTypeBool);
310 
314  int OpenVTKFile(const char* fname = nullptr);
315 
319  int ReadHeader(const char* fname = nullptr);
320 
326  int ReadCellData(vtkDataSet *ds, vtkIdType numCells);
327 
333  int ReadPointData(vtkDataSet *ds, vtkIdType numPts);
334 
338  int ReadPointCoordinates(vtkPointSet *ps, vtkIdType numPts);
339 
343  int ReadPointCoordinates(vtkGraph *g, vtkIdType numPts);
344 
350  int ReadVertexData(vtkGraph *g, vtkIdType numVertices);
351 
357  int ReadEdgeData(vtkGraph *g, vtkIdType numEdges);
358 
362  int ReadRowData(vtkTable *t, vtkIdType numEdges);
363 
367  int ReadCells(vtkIdType size, int *data);
368 
372  int ReadCells(vtkIdType size, int *data, int skip1, int read2, int skip3);
373 
378  int ReadCoordinates(vtkRectilinearGrid *rg, int axes, int numCoords);
379 
381 
384  vtkAbstractArray *ReadArray(const char *dataType, vtkIdType numTuples, vtkIdType numComp);
385  vtkFieldData *ReadFieldData(FieldType fieldType = FIELD_DATA);
387 
389 
393  vtkGetMacro(FileMajorVersion, int);
394  vtkGetMacro(FileMinorVersion, int);
396 
398 
402  int Read(char *);
403  int Read(unsigned char *);
404  int Read(short *);
405  int Read(unsigned short *);
406  int Read(int *);
407  int Read(unsigned int *);
408  int Read(long *);
409  int Read(unsigned long *);
410  int Read(long long *result);
411  int Read(unsigned long long *result);
412  int Read(float *);
413  int Read(double *);
415 
420  size_t Peek(char *str, size_t n);
421 
422 
426  void CloseVTKFile();
427 
432  int ReadLine(char result[256]);
433 
438  int ReadString(char result[256]);
439 
443  char *LowerCase(char *str, const size_t len=256);
444 
448  istream *GetIStream() {return this->IS;};
449 
451 
456  int timestep, vtkInformation* metadata) override;
457  int ReadMesh(
458  int piece, int npieces, int nghosts, int timestep,
459  vtkDataObject* output) override;
461  int /*piece*/, int /*npieces*/, int /*nghosts*/, int /*timestep*/,
462  vtkDataObject* /*output*/) override {return 1;}
464  int /*piece*/, int /*npieces*/, int /*nghosts*/, int /*timestep*/,
465  vtkDataObject* /*output*/) override {return 1;}
467 
469 
474  int ReadMeshSimple(const std::string& /*fname*/,
475  vtkDataObject* /*output*/) override {return 1;}
476  int ReadPointsSimple(const std::string& /*fname*/,
477  vtkDataObject* /*output*/) override {return 1;}
478  int ReadArraysSimple(const std::string& /*fname*/,
479  vtkDataObject* /*output*/) override {return 1;}
481 
482 
483 protected:
484  vtkDataReader();
485  ~vtkDataReader() override;
486 
488  int FileType;
489  istream *IS;
490 
491  char *ScalarsName;
492  char *VectorsName;
493  char *TensorsName;
494  char *TCoordsName;
495  char *NormalsName;
498  char *ScalarLut;
499 
501  char *InputString;
504 
505  void SetScalarLut(const char* lut);
506  vtkGetStringMacro(ScalarLut);
507 
508  char *Header;
509 
510  int ReadScalarData(vtkDataSetAttributes *a, vtkIdType num);
511  int ReadVectorData(vtkDataSetAttributes *a, vtkIdType num);
512  int ReadNormalData(vtkDataSetAttributes *a, vtkIdType num);
513  int ReadTensorData(vtkDataSetAttributes *a, vtkIdType num, vtkIdType numComp = 9);
514  int ReadCoScalarData(vtkDataSetAttributes *a, vtkIdType num);
515  int ReadLutData(vtkDataSetAttributes *a);
516  int ReadTCoordsData(vtkDataSetAttributes *a, vtkIdType num);
517  int ReadGlobalIds(vtkDataSetAttributes *a, vtkIdType num);
518  int ReadPedigreeIds(vtkDataSetAttributes *a, vtkIdType num);
519  int ReadEdgeFlags(vtkDataSetAttributes *a, vtkIdType num);
520 
524  int ReadInformation(vtkInformation *info, vtkIdType numKeys);
525 
526  int ReadDataSetData(vtkDataSet *ds);
527 
528  // This supports getting additional information from vtk files
548 
558 
559  std::locale CurrentLocale;
560 
561  void InitializeCharacteristics();
562  int CharacterizeFile(); //read entire file, storing important characteristics
563  void CheckFor(const char* name, char *line, int &num, char** &array,
564  int& allocSize);
565 
567 
573  int DecodeString(char *resname, const char* name);
574 
576  vtkInformationVector *) override;
579  { return 1; }
582  { return 1; }
585  { return 1; }
586 
587 private:
588  vtkDataReader(const vtkDataReader&) = delete;
589  void operator=(const vtkDataReader&) = delete;
590 
591  void ConvertGhostLevelsToGhostType(
592  FieldType fieldType, vtkAbstractArray *data) const;
593 };
594 
595 #endif
vtkDataReader::NormalsNameInFile
char ** NormalsNameInFile
Definition: vtkDataReader.h:542
vtkDataReader::TensorsName
char * TensorsName
Definition: vtkDataReader.h:493
vtkStdString.h
vtkDataReader::CharacteristicsTime
vtkTimeStamp CharacteristicsTime
Definition: vtkDataReader.h:547
vtkDataReader::GetNumberOfFieldDataInFile
int GetNumberOfFieldDataInFile()
Definition: vtkDataReader.h:168
vtkDataReader::ReadAllTensors
vtkTypeBool ReadAllTensors
Definition: vtkDataReader.h:552
vtkDataReader::IS
istream * IS
Definition: vtkDataReader.h:489
vtkDataReader::NumberOfVectorsInFile
int NumberOfVectorsInFile
Definition: vtkDataReader.h:532
vtkIdType
int vtkIdType
Definition: vtkType.h:347
vtkDataReader
helper superclass for objects that read vtk data files
Definition: vtkDataReader.h:51
vtkDataSetAttributes
represent and manipulate attribute data in a dataset
Definition: vtkDataSetAttributes.h:59
vtkX3D::data
Definition: vtkX3D.h:315
vtkRectilinearGrid
a dataset that is topologically regular with variable spacing in the three coordinate directions
Definition: vtkRectilinearGrid.h:56
vtkInformationVector
Store zero or more vtkInformation instances.
Definition: vtkInformationVector.h:41
vtkTable
A table, which contains similar-typed columns of data.
Definition: vtkTable.h:68
vtkDataReader::RequestData
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
Definition: vtkDataReader.h:577
vtkDataReader::FieldType
FieldType
Definition: vtkDataReader.h:54
vtkTimeStamp
record modification and/or execution time
Definition: vtkTimeStamp.h:35
vtkDataReader::GetNumberOfVectorsInFile
int GetNumberOfVectorsInFile()
Definition: vtkDataReader.h:160
vtkDataReader::VectorsName
char * VectorsName
Definition: vtkDataReader.h:492
vtkDataReader::NormalsName
char * NormalsName
Definition: vtkDataReader.h:495
vtkDataReader::GetNumberOfTensorsInFile
int GetNumberOfTensorsInFile()
Definition: vtkDataReader.h:162
vtkDataReader::TCoordsName
char * TCoordsName
Definition: vtkDataReader.h:494
vtkDataReader::ReadAllColorScalars
vtkTypeBool ReadAllColorScalars
Definition: vtkDataReader.h:553
vtkDataReader::Header
char * Header
Definition: vtkDataReader.h:506
vtkDataReader::NumberOfFieldDataInFile
int NumberOfFieldDataInFile
Definition: vtkDataReader.h:544
vtkDataReader::CELL_DATA
Definition: vtkDataReader.h:57
vtkDataReader::ScalarLut
char * ScalarLut
Definition: vtkDataReader.h:498
vtkDataReader::LookupTableName
char * LookupTableName
Definition: vtkDataReader.h:496
vtkDataReader::RequestUpdateExtent
virtual int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
Definition: vtkDataReader.h:580
vtkDataReader::ReadArraysSimple
int ReadArraysSimple(const std::string &, vtkDataObject *) override
A method that needs to be override by the subclass to provide data arrays.
Definition: vtkDataReader.h:478
vtkDataReader::FileType
int FileType
Definition: vtkDataReader.h:488
vtkDataReader::InputStringPos
int InputStringPos
Definition: vtkDataReader.h:503
vtkDataReader::RequestInformation
virtual int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
Definition: vtkDataReader.h:583
vtkDataReader::ReadPoints
int ReadPoints(int, int, int, int, vtkDataObject *) override
Read the points.
Definition: vtkDataReader.h:460
vtkSimpleReader::GetFileName
const char * GetFileName(int i) const
Returns a particular filename stored by the reader.
vtkDataReader::ReadFromInputString
vtkTypeBool ReadFromInputString
Definition: vtkDataReader.h:500
vtkFieldData
represent and manipulate fields of data
Definition: vtkFieldData.h:56
vtkDataReader::GetIStream
istream * GetIStream()
Return the istream being used to read in the data.
Definition: vtkDataReader.h:448
vtkDataReader::CurrentFileName
std::string CurrentFileName
Definition: vtkDataReader.h:487
vtkCharArray
dynamic, self-adjusting array of char
Definition: vtkCharArray.h:38
vtkSimpleReader::ReadTimeDependentMetaData
int ReadTimeDependentMetaData(int timestep, vtkInformation *metadata) override
This is the superclass API overridden by this class to provide time support internally.
vtkDataReader::GetNumberOfNormalsInFile
int GetNumberOfNormalsInFile()
Definition: vtkDataReader.h:164
vtkDataReader::ReadAllScalars
vtkTypeBool ReadAllScalars
Definition: vtkDataReader.h:549
vtkDataReader::VectorsNameInFile
char ** VectorsNameInFile
Definition: vtkDataReader.h:533
vtkDataReader::ReadArrays
int ReadArrays(int, int, int, int, vtkDataObject *) override
Read all the arrays (point, cell, field etc.).
Definition: vtkDataReader.h:463
vtkDataReader::GetNumberOfTCoordsInFile
int GetNumberOfTCoordsInFile()
Definition: vtkDataReader.h:166
vtkDataReader::ScalarsName
char * ScalarsName
Definition: vtkDataReader.h:491
vtkDataReader::ScalarsNameInFile
char ** ScalarsNameInFile
Definition: vtkDataReader.h:530
vtkSimpleReader::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkSimpleReader
Superclass for algorithms that are not time or parallel aware.
Definition: vtkSimpleReader.h:31
vtkSimpleReader.h
vtkDataReader::CurrentLocale
std::locale CurrentLocale
Definition: vtkDataReader.h:559
vtkX3D::size
Definition: vtkX3D.h:253
vtkDataReader::InputString
char * InputString
Definition: vtkDataReader.h:501
vtkDataReader::TensorsNameInFile
char ** TensorsNameInFile
Definition: vtkDataReader.h:536
vtkDataReader::ScalarsNameAllocSize
int ScalarsNameAllocSize
Definition: vtkDataReader.h:531
vtkDataReader::InputStringLength
int InputStringLength
Definition: vtkDataReader.h:502
vtkX3D::name
Definition: vtkX3D.h:219
vtkDataReader::POINT_DATA
Definition: vtkDataReader.h:56
vtkDataReader::IsFilePolyData
int IsFilePolyData()
Definition: vtkDataReader.h:87
vtkDataSet
abstract class to specify dataset behavior
Definition: vtkDataSet.h:62
vtkDataReader::GetFileName
const char * GetFileName(int i) const
Definition: vtkDataReader.h:73
vtkAbstractArray
Abstract superclass for all arrays.
Definition: vtkAbstractArray.h:78
vtkInformation
Store vtkAlgorithm input/output information.
Definition: vtkInformation.h:86
vtkDataReader::IsFileUnstructuredGrid
int IsFileUnstructuredGrid()
Definition: vtkDataReader.h:91
vtkX3D::info
Definition: vtkX3D.h:376
vtkAlgorithm::New
static vtkAlgorithm * New()
vtkX3D::string
Definition: vtkX3D.h:490
vtkDataReader::TCoordsNameAllocSize
int TCoordsNameAllocSize
Definition: vtkDataReader.h:540
vtkAlgorithm::ProcessRequest
virtual int ProcessRequest(vtkInformation *request, vtkInformationVector **inInfo, vtkInformationVector *outInfo)
Upstream/Downstream requests form the generalized interface through which executives invoke a algorit...
vtkDataReader::ReadAllTCoords
vtkTypeBool ReadAllTCoords
Definition: vtkDataReader.h:554
IS
#define IS
Definition: vtkVRMLImporter_Yacc.h:562
vtkDataReader::InputArray
vtkCharArray * InputArray
Definition: vtkDataReader.h:566
vtkDataReader::FieldDataNameAllocSize
int FieldDataNameAllocSize
Definition: vtkDataReader.h:546
vtkSimpleReader::ReadMesh
int ReadMesh(int piece, int npieces, int nghosts, int timestep, vtkDataObject *output) override
Read the mesh (connectivity) for a given set of data partitioning, number of ghost levels and time st...
vtkPointSet
abstract class for specifying dataset behavior
Definition: vtkPointSet.h:42
vtkDataReader::VectorsNameAllocSize
int VectorsNameAllocSize
Definition: vtkDataReader.h:534
vtkDataReader::ReadAllFields
vtkTypeBool ReadAllFields
Definition: vtkDataReader.h:555
vtkDataReader::IsFileStructuredPoints
int IsFileStructuredPoints()
Definition: vtkDataReader.h:85
vtkDataReader::IsFileStructuredGrid
int IsFileStructuredGrid()
Definition: vtkDataReader.h:89
vtkDataReader::NumberOfScalarsInFile
int NumberOfScalarsInFile
Definition: vtkDataReader.h:529
vtkDataReader::FileMajorVersion
int FileMajorVersion
Definition: vtkDataReader.h:556
vtkDataReader::SetInputString
void SetInputString(const vtkStdString &input)
Definition: vtkDataReader.h:109
vtkDataReader::TensorsNameAllocSize
int TensorsNameAllocSize
Definition: vtkDataReader.h:537
vtkDataReader::ReadAllVectors
vtkTypeBool ReadAllVectors
Definition: vtkDataReader.h:550
vtkDataReader::FileMinorVersion
int FileMinorVersion
Definition: vtkDataReader.h:557
vtkDataReader::IsFileRectilinearGrid
int IsFileRectilinearGrid()
Definition: vtkDataReader.h:93
vtkStdString
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:40
vtkGraph
Base class for graph data types.
Definition: vtkGraph.h:287
vtkDataReader::ReadMeshSimple
int ReadMeshSimple(const std::string &, vtkDataObject *) override
Overridden with default implementation of doing nothing so that subclasses only override what is need...
Definition: vtkDataReader.h:474
vtkDataReader::FieldDataNameInFile
char ** FieldDataNameInFile
Definition: vtkDataReader.h:545
vtkDataReader::ReadAllNormals
vtkTypeBool ReadAllNormals
Definition: vtkDataReader.h:551
vtkDataObject
general representation of visualization data
Definition: vtkDataObject.h:64
vtkDataReader::NumberOfTensorsInFile
int NumberOfTensorsInFile
Definition: vtkDataReader.h:535
vtkDataReader::ReadPointsSimple
int ReadPointsSimple(const std::string &, vtkDataObject *) override
A method that needs to be override by the subclass to provide the point coordinates.
Definition: vtkDataReader.h:476
vtkDataReader::GetNumberOfScalarsInFile
int GetNumberOfScalarsInFile()
How many attributes of various types are in this file? This requires reading the file,...
Definition: vtkDataReader.h:158
vtkDataReader::TCoordsNameInFile
char ** TCoordsNameInFile
Definition: vtkDataReader.h:539
vtkDataReader::NumberOfNormalsInFile
int NumberOfNormalsInFile
Definition: vtkDataReader.h:541
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkDataReader::NormalsNameAllocSize
int NormalsNameAllocSize
Definition: vtkDataReader.h:543
vtkDataReader::FieldDataName
char * FieldDataName
Definition: vtkDataReader.h:497
vtkDataReader::NumberOfTCoordsInFile
int NumberOfTCoordsInFile
Definition: vtkDataReader.h:538