VTK  9.0.3
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 
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 
177  vtkGetObjectMacro(HierarchicalOrder, vtkIdTypeArray);
179 
182  void Layout(void) override;
187  void SetGraph(vtkGraph* graph) override;
188 
189 protected:
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
Abstract superclass for all arrays.
A directed graph.
abstract superclass for all graph layout strategies
Base class for graph data types.
Definition: vtkGraph.h:290
dynamic, self-adjusting array of vtkIdType
a simple class to control print indentation
Definition: vtkIndent.h:34
dynamic, self-adjusting array of int
Definition: vtkIntArray.h:40
places vertices on circles in 3D
void Layout(void) override
Standard layout method.
static vtkSimple3DCirclesStrategy * New()
virtual double GetMinimumDegree(void)
virtual void SetMarkedStartVertices(vtkAbstractArray *_arg)
Set or get initial vertices.
void SetGraph(vtkGraph *graph) override
Set graph (warning: HierarchicalOrder and HierarchicalLayers will set to zero.
~vtkSimple3DCirclesStrategy() override
virtual void SetDirection(double dx, double dy, double dz)
Set or get the normal vector of the circles plain.
virtual void SetMinimumDegree(double degree)
Set or get minimum degree (used by auto height).
virtual void SetMarkedValue(vtkVariant _arg)
Set or get MarkedValue.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual vtkVariant GetMarkedValue(void)
virtual void SetHierarchicalOrder(vtkIdTypeArray *_arg)
Set or get hierarchical ordering of vertices (The array starts from the first vertex's id.
virtual void SetHierarchicalLayers(vtkIntArray *_arg)
Set or get hierarchical layers id by vertices (An usual vertex's layer id is greater or equal to zero...
virtual void SetDirection(double d[3])
void Transform(double Local[], double Global[])
A atomic type representing the union of many types.
Definition: vtkVariant.h:66
@ order
Definition: vtkX3D.h:446
int vtkTypeBool
Definition: vtkABI.h:69
boost::graph_traits< vtkGraph * >::degree_size_type degree(boost::graph_traits< vtkGraph * >::vertex_descriptor u, vtkGraph *g)
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
boost::graph_traits< vtkGraph * >::vertex_descriptor target(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)