VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkStackedTreeLayoutStrategy.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 =========================================================================*/ 00015 /*------------------------------------------------------------------------- 00016 Copyright 2008 Sandia Corporation. 00017 Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, 00018 the U.S. Government retains certain rights in this software. 00019 -------------------------------------------------------------------------*/ 00036 #ifndef __vtkStackedTreeLayoutStrategy_h 00037 #define __vtkStackedTreeLayoutStrategy_h 00038 00039 #include "vtkAreaLayoutStrategy.h" 00040 00041 class vtkTree; 00042 class vtkDataArray; 00043 00044 class VTK_INFOVIS_EXPORT vtkStackedTreeLayoutStrategy : 00045 public vtkAreaLayoutStrategy 00046 { 00047 public: 00048 static vtkStackedTreeLayoutStrategy* New(); 00049 vtkTypeMacro(vtkStackedTreeLayoutStrategy,vtkAreaLayoutStrategy); 00050 void PrintSelf(ostream& os, vtkIndent indent); 00051 00053 00056 virtual void Layout(vtkTree *inputTree, vtkDataArray *sectorArray, 00057 vtkDataArray* sizeArray); 00059 00061 00063 virtual void LayoutEdgePoints(vtkTree *inputTree, vtkDataArray *sectorArray, 00064 vtkDataArray* sizeArray, vtkTree *edgeRoutingTree); 00066 00068 00069 vtkSetMacro(InteriorRadius, double); 00070 vtkGetMacro(InteriorRadius, double); 00072 00074 00075 vtkSetMacro(RingThickness, double); 00076 vtkGetMacro(RingThickness, double); 00078 00080 00083 vtkSetMacro(RootStartAngle, double); 00084 vtkGetMacro(RootStartAngle, double); 00086 00088 00091 vtkSetMacro(RootEndAngle, double); 00092 vtkGetMacro(RootEndAngle, double); 00094 00096 00098 vtkSetMacro(UseRectangularCoordinates, bool); 00099 vtkGetMacro(UseRectangularCoordinates, bool); 00100 vtkBooleanMacro(UseRectangularCoordinates, bool); 00102 00104 00106 vtkSetMacro(Reverse, bool); 00107 vtkGetMacro(Reverse, bool); 00108 vtkBooleanMacro(Reverse, bool); 00110 00112 00116 vtkSetMacro(InteriorLogSpacingValue, double); 00117 vtkGetMacro(InteriorLogSpacingValue, double); 00119 00122 virtual vtkIdType FindVertex(vtkTree* tree, vtkDataArray* array, float pnt[2]); 00123 00124 protected: 00125 vtkStackedTreeLayoutStrategy(); 00126 ~vtkStackedTreeLayoutStrategy(); 00127 00128 float InteriorRadius; 00129 float RingThickness; 00130 float RootStartAngle; 00131 float RootEndAngle; 00132 bool UseRectangularCoordinates; 00133 bool Reverse; 00134 double InteriorLogSpacingValue; 00135 00136 void ComputeEdgeRoutingPoints( 00137 vtkTree* inputTree, vtkDataArray* coordsArray, vtkTree* outputTree); 00138 00139 void LayoutChildren( 00140 vtkTree *tree, vtkDataArray *coordsArray, vtkDataArray *sizeArray, 00141 vtkIdType nchildren, vtkIdType parent, vtkIdType begin, 00142 float parentInnerRad, float parentOuterRad, 00143 float parentStartAng, float parentEndAng); 00144 00145 private: 00146 vtkStackedTreeLayoutStrategy(const vtkStackedTreeLayoutStrategy&); // Not implemented. 00147 void operator=(const vtkStackedTreeLayoutStrategy&); // Not implemented. 00148 }; 00149 00150 #endif