VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkPhyloXMLTreeWriter.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 =========================================================================*/ 00025 #ifndef vtkPhyloXMLTreeWriter_h 00026 #define vtkPhyloXMLTreeWriter_h 00027 00028 #include "vtkIOInfovisModule.h" // For export macro 00029 #include "vtkXMLWriter.h" 00030 #include "vtkSmartPointer.h" // For SP ivars 00031 #include "vtkStdString.h" // For get/set ivars 00032 00033 class vtkStringArray; 00034 class vtkTree; 00035 class vtkXMLDataElement; 00036 00037 class VTKIOINFOVIS_EXPORT vtkPhyloXMLTreeWriter : public vtkXMLWriter 00038 { 00039 public: 00040 static vtkPhyloXMLTreeWriter *New(); 00041 vtkTypeMacro(vtkPhyloXMLTreeWriter,vtkXMLWriter); 00042 void PrintSelf(ostream& os, vtkIndent indent); 00043 00045 00046 vtkTree* GetInput(); 00047 vtkTree* GetInput(int port); 00049 00051 virtual const char* GetDefaultFileExtension(); 00052 00054 00058 vtkGetMacro(EdgeWeightArrayName, vtkStdString); 00059 vtkSetMacro(EdgeWeightArrayName, vtkStdString); 00061 00063 00067 vtkGetMacro(NodeNameArrayName, vtkStdString); 00068 vtkSetMacro(NodeNameArrayName, vtkStdString); 00070 00074 void IgnoreArray(const char * arrayName); 00075 00076 protected: 00077 vtkPhyloXMLTreeWriter(); 00078 ~vtkPhyloXMLTreeWriter() {} 00079 00080 virtual int WriteData(); 00081 00082 virtual const char* GetDataSetName(); 00083 virtual int StartFile(); 00084 virtual int EndFile(); 00085 00087 00089 void WriteTreeLevelElement(vtkTree *input, 00090 vtkXMLDataElement *rootElement, 00091 const char *elementName, 00092 const char *attributeName); 00094 00097 void WriteTreeLevelProperties(vtkTree *input, vtkXMLDataElement *rootElement); 00098 00100 00102 void WriteCladeElement(vtkTree* const input, vtkIdType vertex, 00103 vtkXMLDataElement *parentElement); 00105 00107 00108 void WriteBranchLengthAttribute(vtkTree* const input, vtkIdType vertex, 00109 vtkXMLDataElement *element); 00111 00113 void WriteNameElement(vtkIdType vertex, vtkXMLDataElement *element); 00114 00116 00117 void WriteConfidenceElement(vtkTree* const input, vtkIdType vertex, 00118 vtkXMLDataElement *element); 00120 00122 00124 void WriteColorElement(vtkTree* const input, vtkIdType vertex, 00125 vtkXMLDataElement *element); 00127 00129 00131 void WritePropertyElement(vtkAbstractArray *array, vtkIdType vertex, 00132 vtkXMLDataElement *element); 00134 00136 00138 const char* GetArrayAttribute(vtkAbstractArray *array, 00139 const char *attributeName); 00141 00142 virtual int FillInputPortInformation(int port, vtkInformation *info); 00143 00144 vtkInformation* InputInformation; 00145 00146 vtkStdString EdgeWeightArrayName; 00147 vtkStdString NodeNameArrayName; 00148 00149 vtkAbstractArray *EdgeWeightArray; 00150 vtkAbstractArray *NodeNameArray; 00151 vtkSmartPointer<vtkStringArray> Blacklist; 00152 00153 private: 00154 vtkPhyloXMLTreeWriter(const vtkPhyloXMLTreeWriter&); // Not implemented. 00155 void operator=(const vtkPhyloXMLTreeWriter&); // Not implemented. 00156 }; 00157 00158 #endif