00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00025
#ifndef __vtkXMLUnstructuredDataReader_h
00026
#define __vtkXMLUnstructuredDataReader_h
00027
00028
#include "vtkXMLDataReader.h"
00029
00030
class vtkCellArray;
00031
class vtkIdTypeArray;
00032
class vtkPointSet;
00033
class vtkUnsignedCharArray;
00034
00035 class VTK_IO_EXPORT vtkXMLUnstructuredDataReader :
public vtkXMLDataReader
00036 {
00037
public:
00038 vtkTypeRevisionMacro(vtkXMLUnstructuredDataReader,
vtkXMLDataReader);
00039
void PrintSelf(ostream& os,
vtkIndent indent);
00040
00042
virtual vtkIdType GetNumberOfPoints();
00043
00045
virtual vtkIdType GetNumberOfCells();
00046
00051
void SetupUpdateExtent(
int piece,
int numberOfPieces,
int ghostLevel);
00052
00053
protected:
00054 vtkXMLUnstructuredDataReader();
00055 ~vtkXMLUnstructuredDataReader();
00056
00057
vtkPointSet* GetOutputAsPointSet();
00058
vtkXMLDataElement* FindDataArrayWithName(
vtkXMLDataElement* eParent,
00059
const char* name);
00060
vtkIdTypeArray* ConvertToIdTypeArray(
vtkDataArray* a);
00061
vtkUnsignedCharArray* ConvertToUnsignedCharArray(
vtkDataArray* a);
00062
00063
00064
void ReadXMLData();
00065
00066
virtual void SetupEmptyOutput();
00067
virtual void GetOutputUpdateExtent(
int& piece,
int& numberOfPieces,
00068
int& ghostLevel)=0;
00069
virtual void SetupOutputTotals();
00070
virtual void SetupNextPiece();
00071
void SetupPieces(
int numPieces);
00072
void DestroyPieces();
00073
00074
void SetupOutputInformation();
00075
void SetupOutputData();
00076
int ReadPiece(
vtkXMLDataElement* ePiece);
00077
int ReadPieceData();
00078
int ReadCellArray(
vtkIdType numberOfCells,
vtkIdType totalNumberOfCells,
00079
vtkXMLDataElement* eCells,
vtkCellArray* outCells);
00080
00081
00082
int ReadArrayForPoints(
vtkXMLDataElement* da,
vtkDataArray* outArray);
00083
00084
00085
00086
virtual vtkIdType GetNumberOfPointsInPiece(
int piece);
00087
virtual vtkIdType GetNumberOfCellsInPiece(
int piece)=0;
00088
00089
00090 int UpdatePiece;
00091 int UpdateNumberOfPieces;
00092 int UpdateGhostLevel;
00093
00094
00095 int StartPiece;
00096 int EndPiece;
00097 vtkIdType TotalNumberOfPoints;
00098 vtkIdType TotalNumberOfCells;
00099 vtkIdType StartPoint;
00100
00101
00102 vtkXMLDataElement** PointElements;
00103 vtkIdType* NumberOfPoints;
00104
00105
private:
00106 vtkXMLUnstructuredDataReader(
const vtkXMLUnstructuredDataReader&);
00107
void operator=(
const vtkXMLUnstructuredDataReader&);
00108 };
00109
00110
#endif