Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

BalloonLayout.h
Go to the documentation of this file.
1 
37 /*
38  * The layout is computed by first computing a spanning tree
39  * of the graph that is then used to derive the vertices' coordinates.
40  * First, the radii at each vertex are computed.
41  * Then, depending on the embedding option, the order of the
42  * edges around each vertex is optimized to maximize angular
43  * resolution and to minimize the aspect ratio.
44  *
45  * Finally, the layout is shifted into the positive quadrant
46  * of the cartesian plane
47  * */
48 
49 #pragma once
50 
52 #include <ogdf/basic/List.h>
53 
54 namespace ogdf {
55 
57 public:
58  //Root may be defined by center of the graph
59  //Directed cases: source/sink
60  enum class RootSelection { Center, HighestDegree };
61  //either keep the given embedding or optimize
62  //the order wrto angular resolution and minimum aspect ratio
63  enum class ChildOrder { Fixed, Optimized };
64  //compute tree by different methods
65  enum class TreeComputation { Bfs, Dfs, BfsRandom };
67  BalloonLayout();
69  BalloonLayout& operator=(const BalloonLayout& bl);
70 
72  virtual void call(GraphAttributes& AG) override;
73 
77  virtual void callFractal(GraphAttributes& AG, double ratio = 0.3) {
78  bool even = getEvenAngles();
79  setEvenAngles(true);
80  call(AG);
81  setEvenAngles(even);
82  }
83 
85  void setEvenAngles(bool b) { m_evenAngles = b; }
86 
88  bool getEvenAngles() { return m_evenAngles; }
89 
90 protected:
94  void computeTree(const Graph& G);
95 
97  void computeBFSTree(const Graph& G, node v);
98 
101  void selectRoot(const Graph& G);
102 
108 #ifdef OGDF_DEBUG
109  void computeRadii(GraphAttributes& AG);
110 #else
111  void computeRadii(const GraphAttributes& AG);
112 #endif
113 
115  void computeAngles(const Graph& G);
116 
118  void computeCoordinates(GraphAttributes& AG);
119 
120 private:
129 
131 #ifdef OGDF_DEBUG
132  void checkTree(const Graph& G, bool treeRoot = true);
135 #endif
136 
140 
142 
146 
147  void check(Graph& G);
148 
150 };
151 
152 OGDF_EXPORT std::ostream& operator<<(std::ostream& os, const BalloonLayout::RootSelection& rs);
153 
154 }
ogdf
The namespace for all OGDF objects.
Definition: AugmentationModule.h:36
ogdf::GraphAttributes
Stores additional attributes of a graph (like layout information).
Definition: GraphAttributes.h:66
ogdf::BalloonLayout::m_angle
NodeArray< double > m_angle
Angle assigned to nodes.
Definition: BalloonLayout.h:126
ogdf::BalloonLayout::m_parent
NodeArray< node > m_parent
Parent in spanning tree.
Definition: BalloonLayout.h:124
ogdf::BalloonLayout::ChildOrder
ChildOrder
Definition: BalloonLayout.h:63
ogdf::BalloonLayout
Definition: BalloonLayout.h:56
ogdf::BalloonLayout::m_childList
NodeArray< List< node > > m_childList
Definition: BalloonLayout.h:130
LayoutModule.h
Declaration of interface for layout algorithms (class LayoutModule)
ogdf::BalloonLayout::m_childOrder
ChildOrder m_childOrder
How to arrange the children.
Definition: BalloonLayout.h:143
ogdf::BalloonLayout::m_treeRoot
node m_treeRoot
Root of tree after computation.
Definition: BalloonLayout.h:138
ogdf::BalloonLayout::m_oRadius
NodeArray< double > m_oRadius
Radius at node center.
Definition: BalloonLayout.h:122
ogdf::BalloonLayout::m_size
NodeArray< double > m_size
Radius of circle around node box.
Definition: BalloonLayout.h:128
ogdf::BalloonLayout::m_root
node m_root
Root of tree by selection method.
Definition: BalloonLayout.h:139
OGDF_NEW_DELETE
#define OGDF_NEW_DELETE
Makes the class use OGDF's memory allocator.
Definition: memory.h:84
ogdf::BalloonLayout::m_radius
NodeArray< double > m_radius
Definition: BalloonLayout.h:121
ogdf::BalloonLayout::setEvenAngles
void setEvenAngles(bool b)
Subtrees may be assigned even angles or angles depending on their size.
Definition: BalloonLayout.h:85
ogdf::BalloonLayout::RootSelection
RootSelection
Definition: BalloonLayout.h:60
ogdf::BoyerMyrvoldEdgeType::Dfs
@ Dfs
DFS-edge.
ogdf::BalloonLayout::m_treeComputation
TreeComputation m_treeComputation
How to derive the spanning tree.
Definition: BalloonLayout.h:144
ogdf::BalloonLayout::m_estimateFactor
double m_estimateFactor
Weight of value (largestchild / number of children) added to estimate to compute radius.
Definition: BalloonLayout.h:141
ogdf::operator<<
std::ostream & operator<<(std::ostream &os, const ogdf::Array< E, INDEX > &a)
Prints array a to output stream os.
Definition: Array.h:978
ogdf::internal::GraphRegisteredArray
RegisteredArray for nodes, edges and adjEntries of a graph.
Definition: Graph_d.h:651
ogdf::BalloonLayout::m_maxChildRadius
NodeArray< double > m_maxChildRadius
Outer radius of largest child.
Definition: BalloonLayout.h:123
ogdf::Graph
Data type for general directed graphs (adjacency list representation).
Definition: Graph_d.h:862
ogdf::BalloonLayout::TreeComputation
TreeComputation
Definition: BalloonLayout.h:65
ogdf::BalloonLayout::m_rootSelection
RootSelection m_rootSelection
Defines how the tree root is selected.
Definition: BalloonLayout.h:137
ogdf::BalloonLayout::m_treeEdge
EdgeArray< bool > m_treeEdge
Holds info about tree edges.
Definition: BalloonLayout.h:134
OGDF_EXPORT
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF DLL.
Definition: config.h:101
ogdf::BalloonLayout::m_evenAngles
bool m_evenAngles
Definition: BalloonLayout.h:145
List.h
Declaration of doubly linked lists and iterators.
ogdf::BalloonLayout::getEvenAngles
bool getEvenAngles()
returns how the angles are assigned to subtrees.
Definition: BalloonLayout.h:88
ogdf::BalloonLayout::m_estimate
NodeArray< double > m_estimate
Rough estimate of circumference of subtrees.
Definition: BalloonLayout.h:127
ogdf::NodeElement
Class for the representation of nodes.
Definition: Graph_d.h:233
ogdf::BalloonLayout::callFractal
virtual void callFractal(GraphAttributes &AG, double ratio=0.3)
Call using special parameter settings for fractal model takes radius ratio < 0.5 as parameter.
Definition: BalloonLayout.h:77
ogdf::internal::EdgeArrayBase2
RegisteredArray for edges of a graph, specialized for EdgeArray<edge>.
Definition: Graph_d.h:709
ogdf::LayoutModule
Interface of general layout algorithms.
Definition: LayoutModule.h:44
ogdf::BalloonLayout::m_childCount
NodeArray< int > m_childCount
Number of children in spanning tree.
Definition: BalloonLayout.h:125