VTK  9.0.1
vtkSimple3DCirclesStrategy.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkSimple3DCirclesStrategy.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
42 #ifndef vtkSimple3DCirclesStrategy_h
43 #define vtkSimple3DCirclesStrategy_h
44 
45 #include "vtkGraphLayoutStrategy.h"
46 #include "vtkInfovisLayoutModule.h" // For export macro
47 #include "vtkVariant.h" // For variant API
48 
49 class vtkAbstractArray;
50 class vtkDirectedGraph;
51 class vtkIdTypeArray;
52 class vtkIntArray;
53 class vtkSimple3DCirclesStrategyInternal;
54 
55 class VTKINFOVISLAYOUT_EXPORT vtkSimple3DCirclesStrategy : public vtkGraphLayoutStrategy
56 {
57 public:
60  void PrintSelf(ostream& os, vtkIndent indent) override;
61 
62  enum
63  {
64  FixedRadiusMethod = 0,
65  FixedDistanceMethod = 1
66  };
67 
69 
73  vtkSetMacro(Method, int);
74  vtkGetMacro(Method, int);
76 
77 
81  vtkSetMacro(Radius, double);
82  vtkGetMacro(Radius, double);
84 
85 
89  vtkSetMacro(Height, double);
90  vtkGetMacro(Height, double);
92 
93 
96  vtkSetVector3Macro(Origin, double);
97  vtkGetVector3Macro(Origin, double);
99 
100 
104  virtual void SetDirection(double dx, double dy, double dz);
105  virtual void SetDirection(double d[3]);
106  vtkGetVector3Macro(Direction, double);
108 
109 
116  virtual void SetMarkedStartVertices(vtkAbstractArray* _arg);
117  vtkGetObjectMacro(MarkedStartVertices, vtkAbstractArray);
119 
120 
123  virtual void SetMarkedValue(vtkVariant _arg);
124  virtual vtkVariant GetMarkedValue(void);
126 
127 
132  vtkSetMacro(ForceToUseUniversalStartPointsFinder, vtkTypeBool);
133  vtkGetMacro(ForceToUseUniversalStartPointsFinder, vtkTypeBool);
134  vtkBooleanMacro(ForceToUseUniversalStartPointsFinder, vtkTypeBool);
136 
137 
142  vtkSetMacro(AutoHeight, vtkTypeBool);
143  vtkGetMacro(AutoHeight, vtkTypeBool);
144  vtkBooleanMacro(AutoHeight, vtkTypeBool);
146 
147 
150  vtkSetMacro(MinimumRadian, double);
151  vtkGetMacro(MinimumRadian, double);
153 
154 
158  virtual void SetMinimumDegree(double degree);
159  virtual double GetMinimumDegree(void);
161 
162 
167  virtual void SetHierarchicalLayers(vtkIntArray* _arg);
168  vtkGetObjectMacro(HierarchicalLayers, vtkIntArray);
170 
171 
176  virtual void SetHierarchicalOrder(vtkIdTypeArray* _arg);
177  vtkGetObjectMacro(HierarchicalOrder, vtkIdTypeArray);
179 
182  void Layout(void) override;
187  void SetGraph(vtkGraph* graph) override;
188 
189 protected:
191  ~vtkSimple3DCirclesStrategy() override;
192 
193  inline void Transform(double Local[], double Global[]);
194 
195  double Radius;
196  double Height;
197  double Origin[3];
198  double Direction[3];
199  int Method;
205 
208 
209 private:
214  virtual int UniversalStartPoints(vtkDirectedGraph* input,
215  vtkSimple3DCirclesStrategyInternal* target, vtkSimple3DCirclesStrategyInternal* StandAlones,
216  vtkIntArray* layers);
221  virtual int BuildLayers(
222  vtkDirectedGraph* input, vtkSimple3DCirclesStrategyInternal* source, vtkIntArray* layers);
226  virtual void BuildPointOrder(vtkDirectedGraph* input, vtkSimple3DCirclesStrategyInternal* source,
227  vtkSimple3DCirclesStrategyInternal* StandAlones, vtkIntArray* layers, vtkIdTypeArray* order);
228 
229  double T[3][3];
230 
232  void operator=(const vtkSimple3DCirclesStrategy&) = delete;
233 };
234 
235 #endif
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
boost::graph_traits< vtkGraph * >::vertex_descriptor target(boost::graph_traits< vtkGraph *>::edge_descriptor e, vtkGraph *)
virtual void SetGraph(vtkGraph *graph)
Setting the graph for the layout strategy.
Abstract superclass for all arrays.
dynamic, self-adjusting array of vtkIdType
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph *>::edge_descriptor e, vtkGraph *)
A atomic type representing the union of many types.
Definition: vtkVariant.h:65
abstract superclass for all graph layout strategies
A directed graph.
int vtkTypeBool
Definition: vtkABI.h:69
Base class for graph data types.
Definition: vtkGraph.h:289
dynamic, self-adjusting array of int
Definition: vtkIntArray.h:39
a simple class to control print indentation
Definition: vtkIndent.h:33
places vertices on circles in 3D
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
boost::graph_traits< vtkGraph * >::degree_size_type degree(boost::graph_traits< vtkGraph *>::vertex_descriptor u, vtkGraph *g)
virtual void Layout()=0
This is the layout method where the graph that was set in SetGraph() is laid out. ...