Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

CPlanarEdgeInserter.h
Go to the documentation of this file.
1 
37 #pragma once
38 
40 
41 namespace ogdf {
42 
44 
49  enum class PostProcessType { None, RemoveReinsert };
50 
51 public:
53 
54  virtual ~CPlanarEdgeInserter() { }
55 
56  void call(ClusterPlanRep& CPR, CombinatorialEmbedding& E, const Graph& G,
57  const List<edge>& origEdges);
58 
59  void setPostProcessing(PostProcessType p) { m_ppType = p; }
60 
61  PostProcessType getPostProcessing() { return m_ppType; }
62 
63 protected:
64  void constructDualGraph(ClusterPlanRep& CPR, CombinatorialEmbedding& E,
65  EdgeArray<edge>& arcRightToLeft, EdgeArray<edge>& arcLeftToRight,
66  FaceArray<node>& nodeOfFace,
67  //NodeArray<face>& faceOfNode,
68  EdgeArray<edge>& arcTwin);
69 
70  void findShortestPath(const CombinatorialEmbedding& E,
71  node s, //edge startpoint
72  node t, //edge endpoint
73  node sDummy, //representing s in network
74  node tDummy, //representing t in network
75  SList<adjEntry>& crossed, FaceArray<node>& nodeOfFace);
76 
77  void insertEdge(ClusterPlanRep& CPR, CombinatorialEmbedding& E, edge insertMe,
78  FaceArray<node>& nodeOfFace, EdgeArray<edge>& arcRightToLeft,
79  EdgeArray<edge>& arcLeftToRight, EdgeArray<edge>& arcTwin,
80  NodeArray<cluster>& clusterOfFaceNode, const SList<adjEntry>& crossed);
81 
82  void setArcStatus(edge eArc, node oSrc, node oTgt, const ClusterGraph& CG,
83  NodeArray<cluster>& clusterOfFaceNode, EdgeArray<edge>& arcTwin);
84 
86  void postProcess();
87 
88 private:
89  const Graph* m_originalGraph = nullptr;
93  PostProcessType m_ppType = PostProcessType::None;
94 
96  void deriveFaceCluster(ClusterPlanRep& CPR, CombinatorialEmbedding& E, const ClusterGraph& CG,
97  FaceArray<node>& nodeOfFace, NodeArray<cluster>& clusterOfFaceNode);
98 
99 
100  //debug
101  void writeDual(const char* fileName);
102  void writeGML(std::ostream& os, const Layout& drawing);
103 };
104 
105 }
ogdf
The namespace for all OGDF objects.
Definition: AugmentationModule.h:36
ogdf::ClusterPlanRep
Planarized representations for clustered graphs.
Definition: ClusterPlanRep.h:47
ogdf::CPlanarEdgeInserter::PostProcessType
PostProcessType
Postprocessing options.
Definition: CPlanarEdgeInserter.h:49
ogdf::SList
Singly linked lists (maintaining the length of the list).
Definition: SList.h:833
ogdf::CPlanarEdgeInserter::m_dualGraph
Graph m_dualGraph
Definition: CPlanarEdgeInserter.h:90
ogdf::CPlanarEdgeInserter::~CPlanarEdgeInserter
virtual ~CPlanarEdgeInserter()
Definition: CPlanarEdgeInserter.h:54
ClusterPlanRep.h
Declaration of ClusterPlanRep class, allowing cluster boundary insertion and shortest path edge inser...
ogdf::CPlanarEdgeInserter::getPostProcessing
PostProcessType getPostProcessing()
Definition: CPlanarEdgeInserter.h:61
ogdf::Layout
Stores a layout of a graph (coordinates of nodes, bend points of edges).
Definition: Layout.h:46
ogdf::List< edge >
ogdf::internal::GraphRegisteredArray
RegisteredArray for nodes, edges and adjEntries of a graph.
Definition: Graph_d.h:651
ogdf::Graph
Data type for general directed graphs (adjacency list representation).
Definition: Graph_d.h:862
ogdf::CPlanarEdgeInserter::m_eStatus
EdgeArray< int > m_eStatus
Status of dual graph arcs.
Definition: CPlanarEdgeInserter.h:91
ogdf::FaceArrayBase
RegisteredArray for labeling the faces of a CombinatorialEmbedding.
Definition: CombinatorialEmbedding.h:172
ogdf::CPlanarEdgeInserter
Edge insertion algorithm for clustered graphs.
Definition: CPlanarEdgeInserter.h:47
OGDF_EXPORT
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF DLL.
Definition: config.h:101
ogdf::CombinatorialEmbedding
Combinatorial embeddings of planar graphs with modification functionality.
Definition: CombinatorialEmbedding.h:397
ogdf::EdgeElement
Class for the representation of edges.
Definition: Graph_d.h:356
ogdf::CPlanarEdgeInserter::m_arcOrig
EdgeArray< adjEntry > m_arcOrig
Original edges adj entry.
Definition: CPlanarEdgeInserter.h:92
ogdf::CPlanarEdgeInserter::CPlanarEdgeInserter
CPlanarEdgeInserter()
Definition: CPlanarEdgeInserter.h:52
ogdf::IntersectionType::None
@ None
Two geometric objects do not intersect.
ogdf::ClusterGraph
Representation of clustered graphs.
Definition: ClusterGraph.h:339
ogdf::NodeElement
Class for the representation of nodes.
Definition: Graph_d.h:233
ogdf::CPlanarEdgeInserter::setPostProcessing
void setPostProcessing(PostProcessType p)
Definition: CPlanarEdgeInserter.h:59
ogdf::internal::EdgeArrayBase2
RegisteredArray for edges of a graph, specialized for EdgeArray<edge>.
Definition: Graph_d.h:709