Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

SimpleIncNodeInserter.h
Go to the documentation of this file.
1 
38 #pragma once
39 
41 #include <ogdf/basic/Graph.h>
43 #include <ogdf/basic/SList.h>
44 #include <ogdf/basic/basic.h>
45 
46 namespace ogdf {
47 class PlanRepInc;
48 template<class E>
49 class List;
50 
52 public:
53  //creates inserter on PG
54  explicit SimpleIncNodeInserter(PlanRepInc& PG);
55  virtual ~SimpleIncNodeInserter();
56 
57  //insert copy in m_planRep for original node v
58  void insertCopyNode(node v, CombinatorialEmbedding& E, Graph::NodeType vTyp) override;
59 
60  //insert copy without respecting embedding
61  void insertCopyNode(node v, Graph::NodeType vTyp);
62 
63 protected:
64  //insertAfterAdj will be filled with adjEntries for the
65  //(new) edges around the copy of v to be inserted after.
66  //sorted in the order of the edge around v
67  face getInsertionFace(node v, CombinatorialEmbedding& E) override;
68 
69  //constructs a dual graph on the copy PlanRep,
70  //vCopy is the node to be inserted
71  void constructDual(const Graph& G, const CombinatorialEmbedding& E, bool forbidCrossings = true);
72 
73  void insertFaceEdges(node v, node vCopy, face f, CombinatorialEmbedding& E, adjEntry& adExternal);
74  void insertCrossingEdges(node v, node vCopy, CombinatorialEmbedding& E, adjEntry& adExternal);
75  void findShortestPath(const CombinatorialEmbedding& E, node s, node t, Graph::EdgeType eType,
76  SList<adjEntry>& crossed);
77  void insertEdge(CombinatorialEmbedding& E, edge eOrig, const SList<adjEntry>& crossed,
78  bool forbidCrossingGens);
79 
80 private:
82  inline void updateComponentNumber(node vCopy, node wCopy, CombinatorialEmbedding& E,
83  adjEntry adExternal);
84 
85  //dual graph for the edge insertion
96 };
97 
98 }
ogdf
The namespace for all OGDF objects.
Definition: multilevelmixer.cpp:39
Graph.h
Includes declaration of graph class.
ogdf::SimpleIncNodeInserter::m_vAdjNodes
NodeArray< bool > m_vAdjNodes
node is adjacent to insertion node
Definition: SimpleIncNodeInserter.h:89
ogdf::SimpleIncNodeInserter::m_nodeOf
FaceArray< node > m_nodeOf
node in dual corresponding to to face in primal
Definition: SimpleIncNodeInserter.h:87
ogdf::Graph::EdgeType
EdgeType
The type of edges (only used in derived classes).
Definition: Graph_d.h:909
ogdf::SimpleIncNodeInserter::m_vT
node m_vT
sink in the dual graph for edge insertion
Definition: SimpleIncNodeInserter.h:95
ogdf::SList
Singly linked lists (maintaining the length of the list).
Definition: SList.h:845
ogdf::SimpleIncNodeInserter::m_primalAdj
EdgeArray< adjEntry > m_primalAdj
copy adj for edges in dual graph
Definition: SimpleIncNodeInserter.h:91
ogdf::SimpleIncNodeInserter::m_dual
Graph m_dual
Definition: SimpleIncNodeInserter.h:86
ogdf::SimpleIncNodeInserter::m_vS
node m_vS
source in the dual graph for edge insertion
Definition: SimpleIncNodeInserter.h:94
ogdf::AdjElement
Class for adjacency list elements.
Definition: Graph_d.h:142
ogdf::IncNodeInserter
Definition: IncNodeInserter.h:46
ogdf::SimpleIncNodeInserter::m_primalIsGen
EdgeArray< bool > m_primalIsGen
true iff corresponding primal edge is a generalization
Definition: SimpleIncNodeInserter.h:92
SList.h
Declaration of singly linked lists and iterators.
ogdf::internal::GraphRegisteredArray
RegisteredArray for nodes, edges and adjEntries of a graph.
Definition: Graph_d.h:658
ogdf::SimpleIncNodeInserter::m_insertFaceNode
NodeArray< bool > m_insertFaceNode
node lies at border of insertionface
Definition: SimpleIncNodeInserter.h:88
ogdf::Graph
Data type for general directed graphs (adjacency list representation).
Definition: Graph_d.h:869
ogdf::FaceArrayBase
RegisteredArray for labeling the faces of a CombinatorialEmbedding.
Definition: CombinatorialEmbedding.h:181
ogdf::Graph::NodeType
NodeType
The type of nodes.
Definition: Graph_d.h:912
ogdf::PlanRepInc
This class is only an adaption of PlanRep for the special incremental drawing case.
Definition: PlanRepInc.h:61
ogdf::SimpleIncNodeInserter
Definition: SimpleIncNodeInserter.h:51
basic.h
Basic declarations, included by all source files.
CombinatorialEmbedding.h
Declaration of CombinatorialEmbedding and face.
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:406
ogdf::EdgeElement
Class for the representation of edges.
Definition: Graph_d.h:363
ogdf::SimpleIncNodeInserter::m_forbidCrossings
bool m_forbidCrossings
should generalization crossings be avoided
Definition: SimpleIncNodeInserter.h:93
ogdf::NodeElement
Class for the representation of nodes.
Definition: Graph_d.h:240
ogdf::SimpleIncNodeInserter::m_incidentEdges
NodeArray< List< edge > * > m_incidentEdges
original edges(insertionnode) incident to original(node)
Definition: SimpleIncNodeInserter.h:90
IncNodeInserter.h
Declaration of class IncNodeInserter.
ogdf::internal::EdgeArrayBase2
RegisteredArray for edges of a graph, specialized for EdgeArray<edge>.
Definition: Graph_d.h:716
ogdf::FaceElement
Faces in a combinatorial embedding.
Definition: CombinatorialEmbedding.h:118