00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00028 #ifndef __vtkXMLCompositeDataReader_h
00029 #define __vtkXMLCompositeDataReader_h
00030
00031 #include "vtkXMLReader.h"
00032
00033 class vtkCompositeDataSet;
00034 class vtkInformationIntegerKey;
00035 class vtkInformationIntegerVectorKey;
00036
00037 struct vtkXMLCompositeDataReaderInternals;
00038
00039
00040 class VTK_IO_EXPORT vtkXMLCompositeDataReader : public vtkXMLReader
00041 {
00042 public:
00043 vtkTypeMacro(vtkXMLCompositeDataReader,vtkXMLReader);
00044 void PrintSelf(ostream& os, vtkIndent indent);
00045
00047
00048 vtkCompositeDataSet* GetOutput();
00049 vtkCompositeDataSet* GetOutput(int);
00051
00052 protected:
00053 vtkXMLCompositeDataReader();
00054 ~vtkXMLCompositeDataReader();
00055
00056
00057 virtual const char* GetDataSetName();
00058
00059
00060 vtkXMLDataElement* GetPrimaryElement();
00061
00062 virtual void ReadXMLData();
00063 virtual int ReadPrimaryElement(vtkXMLDataElement* ePrimary);
00064
00065
00066 virtual void SetupEmptyOutput();
00067
00068 virtual int FillOutputPortInformation(int, vtkInformation* info);
00069
00070
00071 virtual vtkExecutive* CreateDefaultExecutive();
00072
00073 vtkXMLReader* GetReaderOfType(const char* type);
00074
00075 virtual int RequestInformation(vtkInformation*,
00076 vtkInformationVector**,
00077 vtkInformationVector*);
00078
00079
00080
00081
00082
00083 void AddChild(vtkCompositeDataSet* parent,
00084 vtkDataObject* child, vtkXMLDataElement* childXML);
00085
00086
00087
00088 virtual void ReadComposite(vtkXMLDataElement* element,
00089 vtkCompositeDataSet* composite, const char* filePath,
00090 unsigned int &dataSetIndex)=0;
00091
00092
00093 virtual vtkDataSet* ReadDataset(vtkXMLDataElement* xmlElem, const char* filePath);
00094
00095
00096 unsigned int CountLeaves(vtkXMLDataElement* elem);
00097
00100 int ShouldReadDataSet(unsigned int datasetIndex);
00101
00103
00104 virtual int CanReadFileVersion(int major, int vtkNotUsed(minor))
00105 {
00106 if (major > 1)
00107 {
00108 return 0;
00109 }
00110 return 1;
00111 }
00113
00114 private:
00115 vtkXMLCompositeDataReader(const vtkXMLCompositeDataReader&);
00116 void operator=(const vtkXMLCompositeDataReader&);
00117
00118 vtkXMLCompositeDataReaderInternals* Internal;
00119 };
00120
00121 #endif