Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

Loading...
Searching...
No Matches
HypergraphLayout.h
Go to the documentation of this file.
1
40#pragma once
41
42#include <ogdf/basic/Array.h>
43#include <ogdf/basic/Graph.h>
44#include <ogdf/basic/basic.h>
45#include <ogdf/basic/geometry.h>
50
51#include <memory>
52
53namespace ogdf {
54class GraphCopySimple;
55class HypergraphAttributes;
56class HypergraphAttributesES;
57class PlanRep;
58template<class E>
59class List;
60
62public:
64 enum class Profile { Normal = 0x000001, ElectricCircuit = 0x000002 };
65
66private:
68 double m_ratio;
69
72
75
77 // TODO: This might require some tweaks in Hypergraph class.
79
82
84 std::unique_ptr<LayoutPlanRepModule> m_planarLayoutModule;
85
87 std::unique_ptr<CrossingMinimizationModule> m_crossingMinimizationModule;
88
90 std::unique_ptr<EmbedderModule> m_embeddingModule;
91
92public:
93 // constructor
95
96 // destructor
97 virtual ~HypergraphLayoutES() { }
98
99 // Dynamic casting is currently not working as desired and hence we left
100 // the following call inherited from superclass empty.
101 virtual void call(HypergraphAttributes& HA) override;
102
103#if 0
104 void call(HypergraphAttributesES &HA);
105#endif
106
109
111 int crossings() const { return m_crossings; }
112
114 double ratio() const { return m_ratio; }
115
117 void setConstraintIO(bool pConstraintIO) { m_constraintIO = pConstraintIO; }
118
120 void setProfile(Profile pProfile) { m_profile = pProfile; }
121
135 void setPlanarLayoutModule(LayoutPlanRepModule* pPlanarLayoutModule) {
136 m_planarLayoutModule.reset(pPlanarLayoutModule);
137 }
138
146 m_crossingMinimizationModule.reset(pCrossingMinimizationModule);
147 }
148
155 void setEmbeddingModule(EmbedderModule* pEmbeddingModule) {
156 m_embeddingModule.reset(pEmbeddingModule);
157 }
158
160
161private:
163
164#if 0
165 void planarizeCC(PlanRep &ccPlanarRep, List<edge> &fixedShell);
166#endif
167
168 void packAllCC(const PlanRep& planarRep, const GraphCopySimple& gc, HypergraphAttributesES& pHA,
169 Array<DPoint>& bounding);
170
172 List<edge>& fixedShell);
173
174 void removeShell(PlanRep& planarRep, NodePair& st);
175
177};
178
179}
Declaration and implementation of Array class and Array algorithms.
Declaration of CrossingMinimization Module, an interface for crossing minimization algorithms.
Defines ogdf::EmbedderModule.
Includes declaration of graph class.
Declaration of an interface for hypergraph layout algorithms.
Declaration of interface for planar layout algorithms (used in planarization approach).
Declaration of classes GenericPoint, GenericPolyline, GenericLine, GenericSegment,...
Basic declarations, included by all source files.
The parameterized class Array implements dynamic arrays of type E.
Definition Array.h:219
Base class for crossing minimization algorithms.
Base class for embedder algorithms.
Copies of graphs with mapping between nodes and edges.
Definition GraphCopy.h:260
Stores additional attributes of edge standard representation of a hypergraph.
Stores additional attributes of a hypergraph.
void removeShell(PlanRep &planarRep, NodePair &st)
void setConstraintIO(bool pConstraintIO)
Sets the Input / Output drawing requirement.
double ratio() const
Returns the ratio between width and height of a drawing.
void setPlanarLayoutModule(LayoutPlanRepModule *pPlanarLayoutModule)
Sets the module option for the planar layout.
int crossings() const
Returns the number of crossings in computed layout.
double m_ratio
The ration between width and height of a drawing.
void insertShell(GraphCopySimple &planarRep, List< node > &src, List< node > &tgt, List< edge > &fixedShell)
std::unique_ptr< CrossingMinimizationModule > m_crossingMinimizationModule
The module for crossing minimization.
void packAllCC(const PlanRep &planarRep, const GraphCopySimple &gc, HypergraphAttributesES &pHA, Array< DPoint > &bounding)
void layout(HypergraphAttributesES &pHA)
void setCrossingMinimizationModule(CrossingMinimizationModule *pCrossingMinimizationModule)
Sets the module option for crossing minimization.
Profile m_profile
Defines the profile of the layout (eg. Electric Circuit).
int m_crossings
The number of crossings in the layout.
bool m_constraintPorts
Defines whether inputs and outputs are placed on different "sides".
bool m_constraintIO
Defines whether a drawing IO constraint is desired or not.
void setEmbeddingModule(EmbedderModule *pEmbeddingModule)
Sets the module option for embedding.
std::unique_ptr< LayoutPlanRepModule > m_planarLayoutModule
The module for computing the final layout.
std::unique_ptr< EmbedderModule > m_embeddingModule
The module for embedding planarization.
Profile
Final appearance is driven by given profile.
void setProfile(Profile pProfile)
Sets the layout profile.
void applyProfile(HypergraphAttributesES &HA)
HypergraphLayoutES & operator=(const HypergraphLayoutES &hl)
Assignment operator.
virtual void call(HypergraphAttributes &HA) override
Computes a layout of hypergraph given by HA.
Interface of hypergraph layout algorithms.
Interface for planar layout algorithms (used in the planarization approach).
Doubly linked lists (maintaining the length of the list).
Definition List.h:1451
Planarized representations (of a connected component) of a graph.
Definition PlanRep.h:68
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF dynamic library (shared object / DLL),...
Definition config.h:117
The namespace for all OGDF objects.