00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00041 #ifndef vtkSimple3DCirclesStrategyH
00042 #define vtkSimple3DCirclesStrategyH 1
00043
00044 #include "vtkGraphLayoutStrategy.h"
00045 #include "vtkVariant.h"
00046
00047 class vtkAbstractArray;
00048 class vtkDirectedGraph;
00049 class vtkIdTypeArray;
00050 class vtkIntArray;
00051 class vtkSimple3DCirclesStrategyInternal;
00052
00053 class VTK_INFOVIS_EXPORT vtkSimple3DCirclesStrategy : public vtkGraphLayoutStrategy
00054 {
00055 public:
00056 static vtkSimple3DCirclesStrategy * New();
00057 vtkTypeMacro(vtkSimple3DCirclesStrategy,vtkGraphLayoutStrategy);
00058 void PrintSelf( ostream& os, vtkIndent indent );
00059
00060
00061 enum
00062 {
00063 FixedRadiusMethod = 0, FixedDistanceMethod = 1
00064 };
00065
00067
00070 vtkSetMacro(Method,int);
00071 vtkGetMacro(Method,int);
00072
00073
00074
00075 vtkSetMacro(Radius,double);
00076 vtkGetMacro(Radius,double);
00077
00078
00079
00080 vtkSetMacro(Height,double);
00081 vtkGetMacro(Height,double);
00082
00083
00084 vtkSetVector3Macro(Origin,double);
00085 vtkGetVector3Macro(Origin,double);
00086
00087
00088
00089 virtual void SetDirection( double dx, double dy, double dz );
00090 virtual void SetDirection( double d[3] );
00091 vtkGetVector3Macro(Direction,double);
00092
00093
00094
00095
00096
00097 virtual void SetMarkedStartVertices( vtkAbstractArray * _arg );
00098 vtkGetObjectMacro(MarkedStartVertices,vtkAbstractArray);
00099
00100
00101 virtual void SetMarkedValue( vtkVariant _arg );
00102 virtual vtkVariant GetMarkedValue( void );
00103
00104
00105
00106 vtkSetMacro(ForceToUseUniversalStartPointsFinder,int);
00107 vtkGetMacro(ForceToUseUniversalStartPointsFinder,int);
00108 vtkBooleanMacro(ForceToUseUniversalStartPointsFinder,int);
00109
00110
00111
00112 vtkSetMacro(AutoHeight,int);
00113 vtkGetMacro(AutoHeight,int);
00114 vtkBooleanMacro(AutoHeight,int);
00115
00116
00117 vtkSetMacro(MinimumRadian,double);
00118 vtkGetMacro(MinimumRadian,double);
00119
00120
00121 virtual void SetMinimumDegree( double degree );
00122 virtual double GetMinimumDegree( void );
00123
00124
00125
00126 virtual void SetHierarchicalLayers( vtkIntArray * _arg );
00127 vtkGetObjectMacro(HierarchicalLayers,vtkIntArray);
00128
00129
00130
00131 virtual void SetHierarchicalOrder( vtkIdTypeArray * _arg );
00132 vtkGetObjectMacro(HierarchicalOrder,vtkIdTypeArray);
00133
00134
00135 virtual void Layout( void );
00136
00137
00138 virtual void SetGraph( vtkGraph * graph );
00139 protected:
00140
00141 vtkSimple3DCirclesStrategy( void );
00142 virtual ~vtkSimple3DCirclesStrategy( void );
00144
00145 inline void Transform( double Local[], double Global[] );
00146
00147 double Radius;
00148 double Height;
00149 double Origin[3];
00150 double Direction[3];
00151 int Method;
00152 vtkAbstractArray * MarkedStartVertices;
00153 vtkVariant MarkedValue;
00154 int ForceToUseUniversalStartPointsFinder;
00155 int AutoHeight;
00156 double MinimumRadian;
00157
00158 vtkIntArray * HierarchicalLayers;
00159 vtkIdTypeArray * HierarchicalOrder;
00160
00161 private:
00162
00164
00167 virtual int UniversalStartPoints( vtkDirectedGraph * input, vtkSimple3DCirclesStrategyInternal * target, vtkSimple3DCirclesStrategyInternal *StandAlones, vtkIntArray * layers );
00168
00169
00170 virtual int BuildLayers( vtkDirectedGraph * input, vtkSimple3DCirclesStrategyInternal * source, vtkIntArray * layers );
00171
00172
00173 virtual void BuildPointOrder( vtkDirectedGraph * input, vtkSimple3DCirclesStrategyInternal *source, vtkSimple3DCirclesStrategyInternal *StandAlones, vtkIntArray * layers, vtkIdTypeArray * order );
00175
00176 double T[3][3];
00177
00178
00179 vtkSimple3DCirclesStrategy(const vtkSimple3DCirclesStrategy&);
00180 void operator=(const vtkSimple3DCirclesStrategy&);
00181 };
00182
00183 #endif