VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkSimple3DCirclesStrategy.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 =========================================================================*/ 00041 #ifndef vtkSimple3DCirclesStrategyH 00042 #define vtkSimple3DCirclesStrategyH 1 00043 00044 #include "vtkInfovisLayoutModule.h" // For export macro 00045 #include "vtkGraphLayoutStrategy.h" 00046 #include "vtkVariant.h" // For variant API 00047 00048 class vtkAbstractArray; 00049 class vtkDirectedGraph; 00050 class vtkIdTypeArray; 00051 class vtkIntArray; 00052 class vtkSimple3DCirclesStrategyInternal; 00053 00054 class VTKINFOVISLAYOUT_EXPORT vtkSimple3DCirclesStrategy : public vtkGraphLayoutStrategy 00055 { 00056 public: 00057 static vtkSimple3DCirclesStrategy * New(); 00058 vtkTypeMacro(vtkSimple3DCirclesStrategy,vtkGraphLayoutStrategy); 00059 void PrintSelf( ostream& os, vtkIndent indent ); 00060 00061 //BTX 00062 enum 00063 { 00064 FixedRadiusMethod = 0, FixedDistanceMethod = 1 00065 }; 00066 //ETX 00068 00071 vtkSetMacro(Method,int); 00072 vtkGetMacro(Method,int); 00074 00075 00078 vtkSetMacro(Radius,double); 00079 vtkGetMacro(Radius,double); 00081 00082 00085 vtkSetMacro(Height,double); 00086 vtkGetMacro(Height,double); 00088 00089 00091 vtkSetVector3Macro(Origin,double); 00092 vtkGetVector3Macro(Origin,double); 00094 00095 00098 virtual void SetDirection( double dx, double dy, double dz ); 00099 virtual void SetDirection( double d[3] ); 00100 vtkGetVector3Macro(Direction,double); 00102 00103 00109 virtual void SetMarkedStartVertices( vtkAbstractArray * _arg ); 00110 vtkGetObjectMacro(MarkedStartVertices,vtkAbstractArray); 00112 00113 00114 virtual void SetMarkedValue( vtkVariant _arg ); 00115 virtual vtkVariant GetMarkedValue( void ); 00117 00118 00122 vtkSetMacro(ForceToUseUniversalStartPointsFinder,int); 00123 vtkGetMacro(ForceToUseUniversalStartPointsFinder,int); 00124 vtkBooleanMacro(ForceToUseUniversalStartPointsFinder,int); 00126 00127 00131 vtkSetMacro(AutoHeight,int); 00132 vtkGetMacro(AutoHeight,int); 00133 vtkBooleanMacro(AutoHeight,int); 00135 00136 00137 vtkSetMacro(MinimumRadian,double); 00138 vtkGetMacro(MinimumRadian,double); 00140 00141 00143 virtual void SetMinimumDegree( double degree ); 00144 virtual double GetMinimumDegree( void ); 00146 00147 00151 virtual void SetHierarchicalLayers( vtkIntArray * _arg ); 00152 vtkGetObjectMacro(HierarchicalLayers,vtkIntArray); 00154 00155 00159 virtual void SetHierarchicalOrder( vtkIdTypeArray * _arg ); 00160 vtkGetObjectMacro(HierarchicalOrder,vtkIdTypeArray); 00162 00163 virtual void Layout( void ); 00165 00167 virtual void SetGraph( vtkGraph * graph ); 00168 protected: 00169 //BTX 00170 vtkSimple3DCirclesStrategy( void ); 00171 virtual ~vtkSimple3DCirclesStrategy( void ); 00173 00174 inline void Transform( double Local[], double Global[] ); 00175 00176 double Radius; 00177 double Height; 00178 double Origin[3]; 00179 double Direction[3]; 00180 int Method; 00181 vtkAbstractArray * MarkedStartVertices; 00182 vtkVariant MarkedValue; 00183 int ForceToUseUniversalStartPointsFinder; 00184 int AutoHeight; 00185 double MinimumRadian; 00186 00187 vtkIntArray * HierarchicalLayers; 00188 vtkIdTypeArray * HierarchicalOrder; 00189 //ETX 00190 private: 00191 //BTX 00195 virtual int UniversalStartPoints( vtkDirectedGraph * input, vtkSimple3DCirclesStrategyInternal * target, vtkSimple3DCirclesStrategyInternal *StandAlones, vtkIntArray * layers ); 00199 virtual int BuildLayers( vtkDirectedGraph * input, vtkSimple3DCirclesStrategyInternal * source, vtkIntArray * layers ); 00201 virtual void BuildPointOrder( vtkDirectedGraph * input, vtkSimple3DCirclesStrategyInternal *source, vtkSimple3DCirclesStrategyInternal *StandAlones, vtkIntArray * layers, vtkIdTypeArray * order ); 00202 00203 double T[3][3]; 00204 //ETX 00205 00206 vtkSimple3DCirclesStrategy(const vtkSimple3DCirclesStrategy&); // Not implemented. 00207 void operator=(const vtkSimple3DCirclesStrategy&); // Not implemented. 00208 }; 00209 00210 #endif