Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

ogdf::sync_plan Namespace Reference

Namespaces

 internal
 all operators will only be found when using sync_plan::internal, so no namespace pollution
 
 preprocess
 Preprocessing functions for handling certain trivially (non)planar ClusterGraph configurations.
 
 spqr_utils
 

Classes

class  BiconnectedIsolation
 Hides all (edges leading to) adjacent biconnected components without changing the current embedding. More...
 
class  DoublePipeQueue
 Base class for PipeQueues providing a "priority lane" for some pipes and sorting with different functions in both lanes/queues. More...
 
class  NodeSPQRRotation
 Derive embedding trees from an DynamicSPQRForest. Warning: breaks on certain parallel edge configurations! More...
 
class  NodeSSPQRRotation
 Derive embedding trees from Triconnectivity information. More...
 
struct  Pipe
 A pair of matched vertices of the same degree, whose rotation shall be synchronized. More...
 
struct  PipeCmpPtr
 A null-safe and priority aware comparator (wrapper) for pipes. More...
 
struct  PipeQueue
 A queue of all pipes, ordered by an arbitrary comparator function. More...
 
struct  PipeQueueByDegree
 PipeQueue yielding pipes in order of descending or ascending degree. More...
 
struct  PipeQueueByDegreePreferContract
 PipeQueue yielding contractable pipes first (or last), in order of descending (or ascending) degree. More...
 
struct  PipeQueueRandom
 PipeQueue yielding pipes in some random (but stable and deterministic) order. More...
 
class  PMatching
 Manages the matching of P-nodes via pipes in an instance of SyncPlan. More...
 
class  QPartitioning
 Manages the partitioning of Q-nodes in an instance of SyncPlan. More...
 
class  SimplePipeQueue
 PipeQueue CRTP base class for ordering pipes by some simple comparator function. More...
 
struct  SimpleSPQRTree
 Wrapper class around Triconnectivity information. More...
 
class  SyncPlan
 A class for modelling and solving Synchronized Planarity instances. More...
 
class  SyncPlanComponents
 (Bi)Connected components information maintained during the SyncPlan algorithm. More...
 
class  SyncPlanConsistency
 Consistency checks for debugging the SyncPlan algorithm. More...
 
class  SyncPlanDrawer
 Utilities by dumping a drawing of the current state of a SyncPlan instance. More...
 

Typedefs

using FrozenPipeBij = List< FrozenPipeBijPair >
 
using FrozenPipeBijPair = std::pair< int, int >
 
template<typename Value , bool WithDefault = true>
using PartitionArray = RegisteredArray< QPartitioning, Value, WithDefault >
 RegisteredArray for labeling the partitions in a QPartitioning with an arbitrary Value. More...
 
template<typename Value >
using PartitionArrayP = PartitionArray< std::unique_ptr< Value >, false >
 Shorthand for PartitionArray storing std::unique_ptr<Value>. More...
 
using PipeBij = List< PipeBijPair >
 
using PipeBijIterator = ZipIterator< ogdf::internal::GraphObjectContainer< AdjElement >::iterator, ogdf::internal::GraphObjectContainer< AdjElement >::reverse_iterator >
 
using PipeBijPair = std::pair< adjEntry, adjEntry >
 
using PipeBijRange = Range< PipeBijIterator >
 

Enumerations

enum  Operation { Operation::ENCAPSULATE_CONTRACT, Operation::CONTRACT_BICON, Operation::PROPAGATE_CUT, Operation::PROPAGATE_BICON, Operation::SIMPLIFY_TERMINAL, Operation::SIMPLIFY_TRANSITIVE, Operation::SIMPLIFY_TOROIDAL, Operation::BATCH_SPQR }
 The reduction operations (and their distinct cases) implemented by SyncPlan. More...
 
enum  PipeType { PipeType::BlockBlock, PipeType::BlockCut, PipeType::CutCut }
 

Functions

bool canPreprocessClusterGraph (const ogdf::ClusterGraph &C, const ogdf::Graph &G)
 Check whether preprocessing would modify a graph. More...
 
std::unique_ptr< std::pair< GraphCopy, GraphAttributes > > drawClusterGraph (ClusterGraph &CG, GraphAttributes &GA, PlanarGridLayoutModule &layout, adjEntry adjExternal=nullptr)
 Draw a graph using a given planar layout by turning its cluster borders into edges via planarizeClusterBorderCrossings() More...
 
void formatNode (node n, GraphAttributes *ga, int group)
 Simple util for apply a default style to nodes, including a group-based coloring. More...
 
void freezePipeBijection (const PipeBij &in, FrozenPipeBij &out)
 
void getFrozenPipeBijection (node u, node v, FrozenPipeBij &out)
 
PipeBijRange getPipeBijection (node u, node v)
 
void getPipeBijection (node u, node v, AdjEntryArray< adjEntry > &out)
 
void getPipeBijection (node u, node v, EdgeArray< edge > &out)
 
void getPipeBijection (node u, node v, PipeBij &out)
 
void join (Graph &G, node u, node v, sync_plan::PipeBij &bij, const std::function< void(node)> &deleteNode, const std::function< void(edge)> &deleteEdge, List< bool > *reverse_v=nullptr)
 
void join (Graph &G, node u, node v, sync_plan::PipeBij &bij, List< bool > *reverse_v=nullptr)
 
 OGDF_DECLARE_COMPARER (FrozenPipeBijCmp, FrozenPipeBijPair, int, x.first)
 
 OGDF_DECLARE_COMPARER (PipeBijCmp, PipeBijPair, int, x.first->theEdge() ->index())
 
std::ostream & operator<< (std::ostream &os, Operation op)
 
bool preprocessClusterGraph (ogdf::ClusterGraph &C, ogdf::Graph &G)
 Preprocess a ClusterGraph to remove trivially c-planar parts or isolate a trivially non-c-planar subgraph. More...
 
std::pair< node, nodesplit (Graph &G, sync_plan::PipeBij &bij, const EdgeArray< edge > *new_edges=nullptr, const EdgeArray< bool > *reverse_edges=nullptr, node src=nullptr, node tgt=nullptr)
 
void styleClusterBorder (const ClusterGraph &CG, const EdgeArray< List< std::pair< adjEntry, cluster >>> &subdivisions, GraphAttributes &GA, const std::function< edge(edge)> &translate=[](edge e) -> edge { return e;})
 Properly style a cluster border inserted by planarizeClusterBorderCrossings() More...
 

Typedef Documentation

◆ FrozenPipeBij

Definition at line 51 of file Bijection.h.

◆ FrozenPipeBijPair

using ogdf::sync_plan::FrozenPipeBijPair = typedef std::pair<int, int>

Definition at line 49 of file Bijection.h.

◆ PartitionArray

template<typename Value , bool WithDefault = true>
using ogdf::sync_plan::PartitionArray = typedef RegisteredArray<QPartitioning, Value , WithDefault >

RegisteredArray for labeling the partitions in a QPartitioning with an arbitrary Value.

Definition at line 42 of file QPartitioning.h.

◆ PartitionArrayP

template<typename Value >
using ogdf::sync_plan::PartitionArrayP = typedef PartitionArray <std::unique_ptr<Value>, false>

Shorthand for PartitionArray storing std::unique_ptr<Value>.


You may need to explicitly delete the copy constructor of classes containing a member of this type for MSVC<=16 (e.g. using OGDF_NO_COPY(MyClass)).

Definition at line 42 of file QPartitioning.h.

◆ PipeBij

Definition at line 50 of file Bijection.h.

◆ PipeBijIterator

◆ PipeBijPair

using ogdf::sync_plan::PipeBijPair = typedef std::pair<adjEntry, adjEntry>

Definition at line 48 of file Bijection.h.

◆ PipeBijRange

Definition at line 47 of file Bijection.h.

Enumeration Type Documentation

◆ Operation

The reduction operations (and their distinct cases) implemented by SyncPlan.

Enumerator
ENCAPSULATE_CONTRACT 
CONTRACT_BICON 
PROPAGATE_CUT 
PROPAGATE_BICON 
SIMPLIFY_TERMINAL 
SIMPLIFY_TRANSITIVE 
SIMPLIFY_TOROIDAL 
BATCH_SPQR 

Definition at line 99 of file SyncPlan.h.

◆ PipeType

Enumerator
BlockBlock 
BlockCut 
CutCut 

Definition at line 44 of file PMatching.h.

Function Documentation

◆ canPreprocessClusterGraph()

bool ogdf::sync_plan::canPreprocessClusterGraph ( const ogdf::ClusterGraph C,
const ogdf::Graph G 
)

Check whether preprocessing would modify a graph.

◆ drawClusterGraph()

std::unique_ptr<std::pair<GraphCopy, GraphAttributes> > ogdf::sync_plan::drawClusterGraph ( ClusterGraph CG,
GraphAttributes GA,
PlanarGridLayoutModule layout,
adjEntry  adjExternal = nullptr 
)

Draw a graph using a given planar layout by turning its cluster borders into edges via planarizeClusterBorderCrossings()

◆ formatNode()

void ogdf::sync_plan::formatNode ( node  n,
GraphAttributes ga,
int  group 
)

Simple util for apply a default style to nodes, including a group-based coloring.

◆ freezePipeBijection()

void ogdf::sync_plan::freezePipeBijection ( const PipeBij in,
FrozenPipeBij out 
)

◆ getFrozenPipeBijection()

void ogdf::sync_plan::getFrozenPipeBijection ( node  u,
node  v,
FrozenPipeBij out 
)

◆ getPipeBijection() [1/4]

PipeBijRange ogdf::sync_plan::getPipeBijection ( node  u,
node  v 
)

◆ getPipeBijection() [2/4]

void ogdf::sync_plan::getPipeBijection ( node  u,
node  v,
AdjEntryArray< adjEntry > &  out 
)

◆ getPipeBijection() [3/4]

void ogdf::sync_plan::getPipeBijection ( node  u,
node  v,
EdgeArray< edge > &  out 
)

◆ getPipeBijection() [4/4]

void ogdf::sync_plan::getPipeBijection ( node  u,
node  v,
PipeBij out 
)

◆ join() [1/2]

void ogdf::sync_plan::join ( Graph G,
node  u,
node  v,
sync_plan::PipeBij bij,
const std::function< void(node)> &  deleteNode,
const std::function< void(edge)> &  deleteEdge,
List< bool > *  reverse_v = nullptr 
)

◆ join() [2/2]

void ogdf::sync_plan::join ( Graph G,
node  u,
node  v,
sync_plan::PipeBij bij,
List< bool > *  reverse_v = nullptr 
)

◆ OGDF_DECLARE_COMPARER() [1/2]

ogdf::sync_plan::OGDF_DECLARE_COMPARER ( FrozenPipeBijCmp  ,
FrozenPipeBijPair  ,
int  ,
x.  first 
)

◆ OGDF_DECLARE_COMPARER() [2/2]

ogdf::sync_plan::OGDF_DECLARE_COMPARER ( PipeBijCmp  ,
PipeBijPair  ,
int  ,
x.first->  theEdge) ->index( 
)

◆ operator<<()

std::ostream& ogdf::sync_plan::operator<< ( std::ostream &  os,
Operation  op 
)

◆ preprocessClusterGraph()

bool ogdf::sync_plan::preprocessClusterGraph ( ogdf::ClusterGraph C,
ogdf::Graph G 
)

Preprocess a ClusterGraph to remove trivially c-planar parts or isolate a trivially non-c-planar subgraph.

◆ split()

std::pair<node, node> ogdf::sync_plan::split ( Graph G,
sync_plan::PipeBij bij,
const EdgeArray< edge > *  new_edges = nullptr,
const EdgeArray< bool > *  reverse_edges = nullptr,
node  src = nullptr,
node  tgt = nullptr 
)

◆ styleClusterBorder()

void ogdf::sync_plan::styleClusterBorder ( const ClusterGraph CG,
const EdgeArray< List< std::pair< adjEntry, cluster >>> &  subdivisions,
GraphAttributes GA,
const std::function< edge(edge)> &  translate = [](edge e) -> edge { return e;} 
)

Properly style a cluster border inserted by planarizeClusterBorderCrossings()