00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkXMLPolyDataReader.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 =========================================================================*/ 00031 #ifndef __vtkXMLPolyDataReader_h 00032 #define __vtkXMLPolyDataReader_h 00033 00034 #include "vtkXMLUnstructuredDataReader.h" 00035 00036 class vtkPolyData; 00037 00038 class VTK_IO_EXPORT vtkXMLPolyDataReader : public vtkXMLUnstructuredDataReader 00039 { 00040 public: 00041 vtkTypeRevisionMacro(vtkXMLPolyDataReader,vtkXMLUnstructuredDataReader); 00042 void PrintSelf(ostream& os, vtkIndent indent); 00043 static vtkXMLPolyDataReader *New(); 00044 00046 00047 void SetOutput(vtkPolyData *output); 00048 vtkPolyData *GetOutput(); 00049 vtkPolyData *GetOutput(int idx); 00051 00053 00054 virtual vtkIdType GetNumberOfVerts(); 00055 virtual vtkIdType GetNumberOfLines(); 00056 virtual vtkIdType GetNumberOfStrips(); 00057 virtual vtkIdType GetNumberOfPolys(); 00059 00060 protected: 00061 vtkXMLPolyDataReader(); 00062 ~vtkXMLPolyDataReader(); 00063 00064 const char* GetDataSetName(); 00065 void GetOutputUpdateExtent(int& piece, int& numberOfPieces, int& ghostLevel); 00066 void SetupOutputTotals(); 00067 void SetupNextPiece(); 00068 void SetupPieces(int numPieces); 00069 void DestroyPieces(); 00070 00071 void SetupOutputData(); 00072 int ReadPiece(vtkXMLDataElement* ePiece); 00073 int ReadPieceData(); 00074 00075 // Read a data array whose tuples coorrespond to cells. 00076 int ReadArrayForCells(vtkXMLDataElement* da, vtkDataArray* outArray); 00077 00078 // Get the number of cells in the given piece. Valid after 00079 // UpdateInformation. 00080 virtual vtkIdType GetNumberOfCellsInPiece(int piece); 00081 00082 virtual int FillOutputPortInformation(int, vtkInformation*); 00083 00084 // The size of the UpdatePiece. 00085 int TotalNumberOfVerts; 00086 int TotalNumberOfLines; 00087 int TotalNumberOfStrips; 00088 int TotalNumberOfPolys; 00089 vtkIdType StartVert; 00090 vtkIdType StartLine; 00091 vtkIdType StartStrip; 00092 vtkIdType StartPoly; 00093 00094 // The cell elements for each piece. 00095 vtkXMLDataElement** VertElements; 00096 vtkXMLDataElement** LineElements; 00097 vtkXMLDataElement** StripElements; 00098 vtkXMLDataElement** PolyElements; 00099 vtkIdType* NumberOfVerts; 00100 vtkIdType* NumberOfLines; 00101 vtkIdType* NumberOfStrips; 00102 vtkIdType* NumberOfPolys; 00103 00104 // For TimeStep support 00105 int VertsTimeStep; 00106 unsigned long VertsOffset; 00107 int LinesTimeStep; 00108 unsigned long LinesOffset; 00109 int StripsTimeStep; 00110 unsigned long StripsOffset; 00111 int PolysTimeStep; 00112 unsigned long PolysOffset; 00113 00114 private: 00115 vtkXMLPolyDataReader(const vtkXMLPolyDataReader&); // Not implemented. 00116 void operator=(const vtkXMLPolyDataReader&); // Not implemented. 00117 }; 00118 00119 #endif