VTK
/Users/kitware/Dashboards/MyTests/VTK_BLD_Release_docs/Utilities/Doxygen/dox/Infovis/Layout/vtkSimple3DCirclesStrategy.h
Go to the documentation of this file.
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