VTK  9.2.6
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 =========================================================================*/
45 #ifndef vtkSimple3DCirclesStrategy_h
46 #define vtkSimple3DCirclesStrategy_h
47 
48 #include "vtkGraphLayoutStrategy.h"
49 #include "vtkInfovisLayoutModule.h" // For export macro
50 #include "vtkVariant.h" // For variant API
51 
52 class vtkAbstractArray;
53 class vtkDirectedGraph;
54 class vtkIdTypeArray;
55 class vtkIntArray;
56 class vtkSimple3DCirclesStrategyInternal;
57 
58 class VTKINFOVISLAYOUT_EXPORT vtkSimple3DCirclesStrategy : public vtkGraphLayoutStrategy
59 {
60 public:
63  void PrintSelf(ostream& os, vtkIndent indent) override;
64 
65  enum
66  {
67  FixedRadiusMethod = 0,
68  FixedDistanceMethod = 1
69  };
70 
72 
76  vtkSetMacro(Method, int);
77  vtkGetMacro(Method, int);
80 
84  vtkSetMacro(Radius, double);
85  vtkGetMacro(Radius, double);
88 
92  vtkSetMacro(Height, double);
93  vtkGetMacro(Height, double);
96 
99  vtkSetVector3Macro(Origin, double);
100  vtkGetVector3Macro(Origin, double);
103 
107  virtual void SetDirection(double dx, double dy, double dz);
108  virtual void SetDirection(double d[3]);
109  vtkGetVector3Macro(Direction, double);
112 
119  virtual void SetMarkedStartVertices(vtkAbstractArray* _arg);
120  vtkGetObjectMacro(MarkedStartVertices, vtkAbstractArray);
123 
126  virtual void SetMarkedValue(vtkVariant _arg);
127  virtual vtkVariant GetMarkedValue(void);
130 
135  vtkSetMacro(ForceToUseUniversalStartPointsFinder, vtkTypeBool);
136  vtkGetMacro(ForceToUseUniversalStartPointsFinder, vtkTypeBool);
137  vtkBooleanMacro(ForceToUseUniversalStartPointsFinder, vtkTypeBool);
140 
145  vtkSetMacro(AutoHeight, vtkTypeBool);
146  vtkGetMacro(AutoHeight, vtkTypeBool);
147  vtkBooleanMacro(AutoHeight, vtkTypeBool);
150 
153  vtkSetMacro(MinimumRadian, double);
154  vtkGetMacro(MinimumRadian, double);
157 
161  virtual void SetMinimumDegree(double degree);
162  virtual double GetMinimumDegree(void);
165 
170  virtual void SetHierarchicalLayers(vtkIntArray* _arg);
171  vtkGetObjectMacro(HierarchicalLayers, vtkIntArray);
174 
179  virtual void SetHierarchicalOrder(vtkIdTypeArray* _arg);
180  vtkGetObjectMacro(HierarchicalOrder, vtkIdTypeArray);
182 
185  void Layout(void) override;
190  void SetGraph(vtkGraph* graph) override;
191 
192 protected:
194  ~vtkSimple3DCirclesStrategy() override;
195 
196  inline void Transform(double Local[], double Global[]);
197 
198  double Radius;
199  double Height;
200  double Origin[3];
201  double Direction[3];
202  int Method;
208 
211 
212 private:
217  virtual int UniversalStartPoints(vtkDirectedGraph* input,
218  vtkSimple3DCirclesStrategyInternal* target, vtkSimple3DCirclesStrategyInternal* StandAlones,
219  vtkIntArray* layers);
224  virtual int BuildLayers(
225  vtkDirectedGraph* input, vtkSimple3DCirclesStrategyInternal* source, vtkIntArray* layers);
229  virtual void BuildPointOrder(vtkDirectedGraph* input, vtkSimple3DCirclesStrategyInternal* source,
230  vtkSimple3DCirclesStrategyInternal* StandAlones, vtkIntArray* layers, vtkIdTypeArray* order);
231 
232  double T[3][3];
233 
235  void operator=(const vtkSimple3DCirclesStrategy&) = delete;
236 };
237 
238 #endif
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual void SetGraph(vtkGraph *graph)
Setting the graph for the layout strategy.
Abstract superclass for all arrays.
dynamic, self-adjusting array of vtkIdType
A atomic type representing the union of many types.
Definition: vtkVariant.h:69
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:295
dynamic, self-adjusting array of int
Definition: vtkIntArray.h:45
a simple class to control print indentation
Definition: vtkIndent.h:39
places vertices on circles in 3D
boost::graph_traits< vtkGraph * >::vertex_descriptor target(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
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. ...