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 
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 
180  vtkGetObjectMacro(HierarchicalOrder, vtkIdTypeArray);
182 
185  void Layout(void) override;
190  void SetGraph(vtkGraph* graph) override;
191 
192 protected:
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
Abstract superclass for all arrays.
A directed graph.
abstract superclass for all graph layout strategies
Base class for graph data types.
Definition: vtkGraph.h:345
dynamic, self-adjusting array of vtkIdType
a simple class to control print indentation
Definition: vtkIndent.h:119
dynamic, self-adjusting array of int
Definition: vtkIntArray.h:155
places vertices on circles in 3D
void Layout(void) override
Standard layout method.
static vtkSimple3DCirclesStrategy * New()
virtual double GetMinimumDegree(void)
Set or get minimum degree (used by auto height).
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)
Set or get MarkedValue.
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])
Set or get the normal vector of the circles plain.
void Transform(double Local[], double Global[])
A atomic type representing the union of many types.
Definition: vtkVariant.h:149
@ 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 *)