122 if (
inf.is_in_edge(
d, pos)) {
123 return (*
inf.inList(
d).get(pos))->adjTarget();
125 return (*
inf.inList(
d).get(pos))->adjSource();
131 if (
inf.is_in_edge(
d, pos)) {
132 return (*
inf.inList(
d).get(pos))->adjSource();
134 return (*
inf.inList(
d).get(pos))->adjTarget();
231 return nt == Graph::NodeType::highDegreeExpander ||
nt == Graph::NodeType::lowDegreeExpander;
262 auto&
inf = infos[v];
Declaration of class GridLayout.
Declaration of class GridLayoutMapped which extends GridLayout by a grid mapping mechanism.
Declaration of class Layout.
Declaration of class MinimumEdgeDistances which maintains minimum distances between attached edges at...
Declaration of class NodeInfo.
Declaration of orthogonal representation of planar graphs.
Declaration of a base class for planar representations of graphs and cluster graphs.
Declaration of class RoutingChannel which maintains required size of routing channels and separation,...
Class for adjacency list elements.
Dynamic arrays indexed with adjacency entries.
Represents the bends on an edge e consisting of vertical and horizontal segments.
Combinatorial embeddings of planar graphs with modification functionality.
Dynamic arrays indexed with edges.
Class for the representation of edges.
Places node boxes in replacement areas of orthogonal drawing step and route edges to minimize bends.
NodeArray< OrthoDir > m_mergeDir
direction of adjacent (to) merger edges
void init(PlanRep &pru, RoutingChannel< int > &rou, bool align=false)
double Cconst
relative sep to overhang / delta to eps
void align(bool b)
set alignment option: place nodes in cage at outgoing generalization
void addbends(BendString &bs, const char *s2)
void fix_position(node v, int x=0, int y=0)
same as set but updates m_fixed, coordinates cant be changed afterwards
NodeArray< NodeInfo > infos
holds the cage and placement information
int cp_x(adjEntry ae)
Returns assigned connection point (cage border) x-coordinate of ae 's source.
void initialize_node_info(node v, int sep)
sets values derivable from input
void updateLowerEdgesBends(const node v, ListIterator< edge > &it, int &pos, int &base, const bool updateX, const OrthoDir dir, const bool bendLeft)
bool oppositeExpander(adjEntry ae)
check if the target node of the outgoing adjEntry still is a expander
int compute_move(OrthoDir s_from, OrthoDir s_to, int &kflip, node v)
compute the maximum number of moveable edges
NodeArray< int > * m_nodeheight
void multiDelta()
for all multiple edges, set the delta value on both sides to minimum if not m_minDelta
int alpha_move(OrthoDir s_to, OrthoDir s_from, node v)
computes the alpha value described in the paper
NodeArray< BendType > m_oppositeBendType
keep the information about the type of bend inserted at one end of an (originally unbend) edge,...
AdjEntryArray< int > m_acp_x
bool m_minDelta
set minimum delta values for flip decision and adjust distances correspondingly
node oppositeNode(adjEntry ae)
helper for oppositeExpander
int m_overh
minimum overhang
int gp_y(adjEntry ae)
Returns assigned glue point (node border) y-coordinate.
void compute_glue_points_x(node &v)
compute glue points positions
void compute_glue_points_y(node v)
compute glue points positions
BendType abendType(adjEntry ae)
edge addRightBend(edge e)
int m_sep
minimum separation
void compute_routing(node v)
computes routing after compute_place
void set_position(node v, int x=0, int y=0)
sets position for node v in layout to value x,y, invoked to have central control over change
RoutingChannel< int > * m_rc
AdjEntryArray< int > alefte
AdjEntryArray< int > m_agp_x
NodeArray< bool > m_mergerSon
is part of merger son cage
MinimumEdgeDistances< int > * m_med
void compute_place(node v, NodeInfo &inf)
computes placement
void updateOneBend(const bool isDoubleBend, const adjEntry adj, const node v, const OrthoDir dir, const bool bendLeft, const BendType btSingle, const BendType btDouble)
void compute_gen_glue_points_x(node v)
compute glue points positions
int updateBends(const node v, ListIterator< edge > &it, const bool updateX, const OrthoDir dir, const bool bendLeft, const bool bendUp, int pos=0)
EdgeRouter(PlanRep &pru, OrthoRep &H, GridLayoutMapped &L, CombinatorialEmbedding &E, RoutingChannel< int > &rou, MinimumEdgeDistances< int > &med, NodeArray< int > &nodewidth, NodeArray< int > &nodeheight)
int cp_y(adjEntry ae)
Returns assigned connection point (cage border) y-coordinate of ae 's source.
void set_corners(node v)
set coordinates of cage corners after placement
NodeArray< ProcessType > m_processStatus
keep information about already processed Nodes
AdjEntryArray< BendType > m_abends
bends
adjEntry inEntry(NodeInfo &inf, OrthoDir d, int pos)
adjEntries for edges in inLists
void unsplit(edge e1, edge e2)
void compute_gen_glue_points_y(node v)
compute glue points positions
CombinatorialEmbedding * m_comb
GridLayoutMapped * m_layoutp
adjEntry outEntry(NodeInfo &inf, OrthoDir d, int pos)
adjEntries for edges in inLists
NodeArray< bool > m_fixed
saves info about changed position, no further change is allowed
BendType
Edge types, defined by necessary bends.
void call()
places nodes in cages and routes incident edges
int beta_move(OrthoDir s_from, OrthoDir s_to, int move_num, node v)
computes the beta value described in the paper
AdjEntryArray< node > m_cage_point
newly introduced bends destroy edge to point connection
ProcessType
Process status of nodes.
NodeArray< int > * m_nodewidth
void place(node v)
applies precomputed placement
int gp_x(adjEntry ae)
Returns assigned glue point (node border) x-coordinate.
void updateBends(const node v, ListIterator< edge > &it, int &pos, int &lastunbend, const bool updateX, const OrthoDir dir, const bool bendLeft, const bool bendUp, const bool subtract)
void setDistances()
sets the computed distances in structure MinimumEdgeDistance m_med
void call(PlanRep &pru, OrthoRep &H, GridLayoutMapped &L, CombinatorialEmbedding &E, RoutingChannel< int > &rou, MinimumEdgeDistances< int > &med, NodeArray< int > &nodewidth, NodeArray< int > &nodeheight, bool align=false)
places nodes in cages and routes incident edges
NodeType
The type of nodes.
Extends GridLayout by a grid mapping mechanism.
Encapsulates a pointer to a list element.
Maintains input sizes for improvement compaction (deltas and epsilons)
Dynamic arrays indexed with nodes.
Class for the representation of nodes.
Orthogonal representation of an embedded graph.
Planarized representations (of a connected component) of a graph.
Graph::NodeType typeOf(node v) const
Returns the type of node v.
Maintains input sizes for constructive compaction (size of routing channels, separation,...
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF DLL.
static MultilevelBuilder * getDoubleFactoredZeroAdjustedMerger()
The namespace for all OGDF objects.