Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

Loading...
Searching...
No Matches
ClusterPlanarity.h
Go to the documentation of this file.
1
31#pragma once
32
33#include <ogdf/basic/Graph.h>
34#include <ogdf/basic/GraphSets.h> // IWYU pragma: keep
35#include <ogdf/basic/basic.h>
38
39#include <utility>
40#include <vector>
41
42namespace ogdf {
43
46 std::vector<std::pair<adjEntry, adjEntry>>* m_augmentation = nullptr;
47
48public:
49 bool isClusterPlanar(const ClusterGraph& CG) override;
52
54
58 void setStoreAugmentation(std::vector<std::pair<adjEntry, adjEntry>>* augmentation) {
59 m_augmentation = augmentation;
60 }
61
62 std::vector<std::pair<adjEntry, adjEntry>>* getStoreAugmentation() const {
63 return m_augmentation;
64 }
65
66protected:
67 void copyBackEmbedding(ClusterGraph& CG, Graph& G, const ClusterGraph& CGcopy, const Graph& Gcopy,
68 const ClusterArray<cluster, true>& copyC, const NodeArray<node, true>& copyN,
69 const EdgeArray<edge, true>& copyE, const EdgeArray<edge, true>& origE) const override;
70};
71
73
84 const std::vector<std::vector<node>>& emb, Graph& G, ClusterGraph& CG,
85 EdgeArray<node>& embMap);
86
88
98 std::vector<std::pair<adjEntry, adjEntry>>& augmentation, EdgeSet* added = nullptr,
99 bool embedded = true, bool assert_minimal = true);
100
101}
Derived class of GraphObserver providing additional functionality to handle clustered graphs.
Declaration of ClusterPlanarityModule which implements a cluster-planarity test and,...
Includes declaration of graph class.
Declaration and implementation of NodeSet, EdgeSet, and AdjEntrySet classes.
Basic declarations, included by all source files.
RegisteredArray for labeling the clusters of a ClusterGraph.
Representation of clustered graphs.
Edge sets.
Definition GraphSets.h:86
Data type for general directed graphs (adjacency list representation).
Definition Graph_d.h:866
ClusterPlanarity testing in quadratic time using the Synchronized Planarity approach.
bool isClusterPlanar(const ClusterGraph &CG) override
Returns true, if CG is cluster-planar, false otherwise.
bool clusterPlanarEmbedClusterPlanarGraph(ClusterGraph &CG, Graph &G) override
Constructs a cluster-planar embedding of CG. CG has to be cluster-planar!
bool isClusterPlanarDestructive(ClusterGraph &CG, Graph &G) override
Returns true, if CG is cluster-planar, false otherwise. In it is non-cluster-planar,...
void setStoreAugmentation(std::vector< std::pair< adjEntry, adjEntry > > *augmentation)
When set to a non-null pointer, will contain the augmentation edges to make the graph c-connected c-p...
std::vector< std::pair< adjEntry, adjEntry > > * getStoreAugmentation() const
void copyBackEmbedding(ClusterGraph &CG, Graph &G, const ClusterGraph &CGcopy, const Graph &Gcopy, const ClusterArray< cluster, true > &copyC, const NodeArray< node, true > &copyN, const EdgeArray< edge, true > &copyE, const EdgeArray< edge, true > &origE) const override
RegisteredArray for edges of a graph, specialized for EdgeArray<edge>.
Definition Graph_d.h:717
RegisteredArray for nodes, edges and adjEntries of a graph.
Definition Graph_d.h:659
#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.
void insertAugmentationEdges(const ClusterGraph &CG, Graph &G, std::vector< std::pair< adjEntry, adjEntry > > &augmentation, EdgeSet *added=nullptr, bool embedded=true, bool assert_minimal=true)
Inserts augmentation edges to make a c-plane graph c-connected while maintaining the combinatorial em...
void reduceLevelPlanarityToClusterPlanarity(const Graph &LG, const std::vector< std::vector< node > > &emb, Graph &G, ClusterGraph &CG, EdgeArray< node > &embMap)
Perform the reduction from level- to cluster planarity.