VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkPhyloXMLTreeReader.h 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 =========================================================================*/ 00037 #ifndef vtkPhyloXMLTreeReader_h 00038 #define vtkPhyloXMLTreeReader_h 00039 00040 #include "vtkIOInfovisModule.h" // For export macro 00041 #include "vtkSmartPointer.h" // For SP ivar 00042 #include "vtkXMLReader.h" 00043 00044 class vtkBitArray; 00045 class vtkMutableDirectedGraph; 00046 class vtkTree; 00047 class vtkXMLDataElement; 00048 00049 class VTKIOINFOVIS_EXPORT vtkPhyloXMLTreeReader : public vtkXMLReader 00050 { 00051 public: 00052 static vtkPhyloXMLTreeReader *New(); 00053 vtkTypeMacro(vtkPhyloXMLTreeReader,vtkXMLReader); 00054 void PrintSelf(ostream& os, vtkIndent indent); 00055 00057 00058 vtkTree *GetOutput(); 00059 vtkTree *GetOutput(int idx); 00061 00062 protected: 00063 vtkPhyloXMLTreeReader(); 00064 ~vtkPhyloXMLTreeReader(); 00065 00067 virtual void ReadXMLData(); 00068 00070 00073 void ReadXMLElement(vtkXMLDataElement *element, vtkMutableDirectedGraph *g, 00074 vtkIdType vertex); 00076 00078 00082 vtkIdType ReadCladeElement(vtkXMLDataElement *element, 00083 vtkMutableDirectedGraph *g, vtkIdType parent); 00085 00087 00089 void ReadNameElement(vtkXMLDataElement *element, vtkMutableDirectedGraph *g, 00090 vtkIdType vertex); 00092 00094 00095 void ReadDescriptionElement(vtkXMLDataElement *element, 00096 vtkMutableDirectedGraph *g); 00098 00100 00103 void ReadPropertyElement(vtkXMLDataElement *element, 00104 vtkMutableDirectedGraph *g, vtkIdType vertex); 00106 00108 00112 void ReadBranchLengthElement(vtkXMLDataElement *element, 00113 vtkMutableDirectedGraph *g, vtkIdType vertex); 00115 00117 00119 void ReadConfidenceElement(vtkXMLDataElement *element, 00120 vtkMutableDirectedGraph *g, vtkIdType vertex); 00122 00124 00127 void ReadColorElement(vtkXMLDataElement *element, vtkMutableDirectedGraph *g, 00128 vtkIdType vertex); 00130 00133 void PropagateBranchColor(vtkTree *tree); 00134 00136 void CountNodes(vtkXMLDataElement *element); 00137 00140 std::string GetTrimmedString(const char *input); 00141 00144 std::string GetStringBeforeColon(const char *input); 00145 00148 std::string GetStringAfterColon(const char *input); 00149 00150 virtual int FillOutputPortInformation(int, vtkInformation*); 00151 virtual const char* GetDataSetName(); 00152 void SetOutput(vtkTree *output); 00153 virtual void SetupEmptyOutput(); 00154 00155 private: 00156 vtkIdType NumberOfNodes; 00157 bool HasBranchColor; 00158 vtkSmartPointer<vtkBitArray> ColoredVertices; 00159 vtkPhyloXMLTreeReader(const vtkPhyloXMLTreeReader&); // Not implemented. 00160 void operator=(const vtkPhyloXMLTreeReader&); // Not implemented. 00161 }; 00162 00163 #endif