Places node boxes in replacement areas of orthogonal drawing step and route edges to minimize bends. More...
#include <ogdf/orthogonal/EdgeRouter.h>
Public Member Functions | |
EdgeRouter () | |
EdgeRouter (PlanRep &pru, OrthoRep &H, GridLayoutMapped &L, CombinatorialEmbedding &E, RoutingChannel< int > &rou, MinimumEdgeDistances< int > &med, NodeArray< int > &nodewidth, NodeArray< int > &nodeheight) | |
virtual | ~EdgeRouter () |
void | addbends (BendString &bs, const char *s2) |
edge | addLeftBend (edge e) |
edge | addRightBend (edge e) |
void | align (bool b) |
set alignment option: place nodes in cage at outgoing generalization | |
void | call () |
places nodes in cages and routes incident edges | |
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 | |
void | compute_gen_glue_points_x (node v) |
compute glue points positions | |
void | compute_gen_glue_points_y (node v) |
compute glue points positions | |
void | compute_glue_points_x (node &v) |
compute glue points positions | |
void | compute_glue_points_y (node v) |
compute glue points positions | |
void | compute_place (node v, NodeInfo &inf) |
computes placement | |
void | compute_routing (node v) |
computes routing after compute_place | |
int | cp_x (adjEntry ae) |
Returns assigned connection point (cage border) x-coordinate of ae 's source. | |
int | cp_y (adjEntry ae) |
Returns assigned connection point (cage border) y-coordinate of ae 's source. | |
void | fix_position (node v, int x=0, int y=0) |
same as set but updates m_fixed, coordinates cant be changed afterwards | |
int | gp_x (adjEntry ae) |
Returns assigned glue point (node border) x-coordinate. | |
int | gp_y (adjEntry ae) |
Returns assigned glue point (node border) y-coordinate. | |
adjEntry | inEntry (NodeInfo &inf, OrthoDir d, int pos) |
adjEntries for edges in inLists | |
void | init (PlanRep &pru, RoutingChannel< int > &rou, bool align=false) |
void | initialize_node_info (node v, int sep) |
sets values derivable from input | |
void | multiDelta () |
for all multiple edges, set the delta value on both sides to minimum if not m_minDelta | |
adjEntry | outEntry (NodeInfo &inf, OrthoDir d, int pos) |
adjEntries for edges in inLists | |
void | place (node v) |
applies precomputed placement | |
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 | |
void | setDistances () |
sets the computed distances in structure MinimumEdgeDistance m_med | |
Private Types | |
enum class | BendType { BendFree , Bend1Left , Bend1Right , Bend2Left , Bend2Right , ProbBf , ProbB1L , ProbB1R , ProbB2L , ProbB2R } |
Edge types, defined by necessary bends. More... | |
using | NodeInfo = edge_router::NodeInfo |
enum class | ProcessType { unprocessed , processed , used } |
Process status of nodes. More... | |
Private Attributes | |
AdjEntryArray< int > | alefte |
AdjEntryArray< int > | alowe |
AdjEntryArray< int > | arighte |
AdjEntryArray< int > | auppe |
double | Cconst |
relative sep to overhang / delta to eps | |
NodeArray< NodeInfo > | infos |
holds the cage and placement information | |
EdgeArray< int > | lefte |
EdgeArray< int > | lowe |
AdjEntryArray< BendType > | m_abends |
bends | |
AdjEntryArray< int > | m_acp_x |
AdjEntryArray< int > | m_acp_y |
edge connection point coordinates before treatment | |
AdjEntryArray< int > | m_agp_x |
AdjEntryArray< int > | m_agp_y |
because edges can connect two replacement cages | |
bool | m_align |
AdjEntryArray< node > | m_cage_point |
newly introduced bends destroy edge to point connection | |
CombinatorialEmbedding * | m_comb |
NodeArray< bool > | m_fixed |
saves info about changed position, no further change is allowed | |
GridLayoutMapped * | m_layoutp |
MinimumEdgeDistances< int > * | m_med |
NodeArray< OrthoDir > | m_mergeDir |
direction of adjacent (to) merger edges | |
NodeArray< bool > | m_mergerSon |
is part of merger son cage | |
bool | m_minDelta |
set minimum delta values for flip decision and adjust distances correspondingly | |
NodeArray< int > | m_newx |
NodeArray< int > | m_newy |
new placement position for original node | |
NodeArray< int > * | m_nodeheight |
NodeArray< int > * | m_nodewidth |
NodeArray< BendType > | m_oppositeBendType |
keep the information about the type of bend inserted at one end of an (originally unbend) edge, so that we can check possible bendsaving | |
OrthoRep * | m_orp |
int | m_overh |
minimum overhang | |
NodeArray< ProcessType > | m_processStatus |
keep information about already processed Nodes | |
PlanRep * | m_prup |
RoutingChannel< int > * | m_rc |
int | m_sep |
minimum separation | |
EdgeArray< int > | righte |
max box borders for bendfree edges | |
EdgeArray< int > | uppe |
Places node boxes in replacement areas of orthogonal drawing step and route edges to minimize bends.
Definition at line 52 of file EdgeRouter.h.
Definition at line 53 of file EdgeRouter.h.
|
strongprivate |
Edge types, defined by necessary bends.
Definition at line 163 of file EdgeRouter.h.
|
strongprivate |
Process status of nodes.
Enumerator | |
---|---|
unprocessed | unprocessed |
processed | processed in degree-1 preprocessing |
used | used by degree-1 |
Definition at line 187 of file EdgeRouter.h.
|
inline |
Definition at line 57 of file EdgeRouter.h.
ogdf::EdgeRouter::EdgeRouter | ( | PlanRep & | pru, |
OrthoRep & | H, | ||
GridLayoutMapped & | L, | ||
CombinatorialEmbedding & | E, | ||
RoutingChannel< int > & | rou, | ||
MinimumEdgeDistances< int > & | med, | ||
NodeArray< int > & | nodewidth, | ||
NodeArray< int > & | nodeheight | ||
) |
|
inlinevirtual |
Definition at line 63 of file EdgeRouter.h.
Definition at line 211 of file EdgeRouter.h.
void ogdf::EdgeRouter::addbends | ( | BendString & | bs, |
const char * | s2 | ||
) |
set alignment option: place nodes in cage at outgoing generalization
postprocessing function, hmm maybe preprocessing
Definition at line 154 of file EdgeRouter.h.
computes the alpha value described in the paper
computes the beta value described in the paper
number of additional bend free edges on side s_from if move_num edges are moved from side s_from to s_to
void ogdf::EdgeRouter::call | ( | ) |
places nodes in cages and routes incident edges
void ogdf::EdgeRouter::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
compute the maximum number of moveable edges
dependant on space on available edges, return number of saved bends
Returns assigned connection point (cage border) x-coordinate of ae
's source.
Definition at line 103 of file EdgeRouter.h.
Returns assigned connection point (cage border) y-coordinate of ae
's source.
Definition at line 106 of file EdgeRouter.h.
same as set but updates m_fixed, coordinates cant be changed afterwards
Returns assigned glue point (node border) x-coordinate.
Definition at line 109 of file EdgeRouter.h.
Returns assigned glue point (node border) y-coordinate.
Definition at line 112 of file EdgeRouter.h.
adjEntries for edges in inLists
Definition at line 130 of file EdgeRouter.h.
void ogdf::EdgeRouter::multiDelta | ( | ) |
for all multiple edges, set the delta value on both sides to minimum if not m_minDelta
postprocessing function, hmm maybe preprocessing
check if the target node of the outgoing adjEntry still is a expander
Definition at line 228 of file EdgeRouter.h.
helper for oppositeExpander
Definition at line 225 of file EdgeRouter.h.
adjEntries for edges in inLists
Definition at line 121 of file EdgeRouter.h.
set coordinates of cage corners after placement
sets position for node v in layout to value x,y, invoked to have central control over change
void ogdf::EdgeRouter::setDistances | ( | ) |
sets the computed distances in structure MinimumEdgeDistance m_med
|
private |
|
private |
|
private |
|
inlineprivate |
Definition at line 259 of file EdgeRouter.h.
|
private |
Definition at line 278 of file EdgeRouter.h.
|
private |
Definition at line 278 of file EdgeRouter.h.
|
private |
Definition at line 278 of file EdgeRouter.h.
|
private |
Definition at line 278 of file EdgeRouter.h.
|
private |
relative sep to overhang / delta to eps
Definition at line 209 of file EdgeRouter.h.
holds the cage and placement information
Definition at line 205 of file EdgeRouter.h.
Definition at line 277 of file EdgeRouter.h.
Definition at line 277 of file EdgeRouter.h.
|
private |
bends
0 = bendfree, 1 = single bend from left to node, 2 = single from right, 3 = int from left, 4 = int from right,...
Definition at line 289 of file EdgeRouter.h.
|
private |
Definition at line 281 of file EdgeRouter.h.
|
private |
edge connection point coordinates before treatment
Definition at line 281 of file EdgeRouter.h.
|
private |
Definition at line 279 of file EdgeRouter.h.
|
private |
because edges can connect two replacement cages
Definition at line 279 of file EdgeRouter.h.
|
private |
Definition at line 300 of file EdgeRouter.h.
|
private |
newly introduced bends destroy edge to point connection
Definition at line 280 of file EdgeRouter.h.
|
private |
Definition at line 199 of file EdgeRouter.h.
saves info about changed position, no further change is allowed
Definition at line 276 of file EdgeRouter.h.
|
private |
Definition at line 197 of file EdgeRouter.h.
|
private |
Definition at line 201 of file EdgeRouter.h.
direction of adjacent (to) merger edges
Definition at line 299 of file EdgeRouter.h.
is part of merger son cage
Definition at line 298 of file EdgeRouter.h.
|
private |
set minimum delta values for flip decision and adjust distances correspondingly
Definition at line 222 of file EdgeRouter.h.
Definition at line 275 of file EdgeRouter.h.
new placement position for original node
Definition at line 275 of file EdgeRouter.h.
Definition at line 203 of file EdgeRouter.h.
Definition at line 202 of file EdgeRouter.h.
keep the information about the type of bend inserted at one end of an (originally unbend) edge, so that we can check possible bendsaving
Definition at line 292 of file EdgeRouter.h.
|
private |
Definition at line 198 of file EdgeRouter.h.
|
private |
minimum overhang
Definition at line 208 of file EdgeRouter.h.
|
private |
keep information about already processed Nodes
Definition at line 295 of file EdgeRouter.h.
|
private |
Definition at line 196 of file EdgeRouter.h.
|
private |
Definition at line 200 of file EdgeRouter.h.
|
private |
minimum separation
Definition at line 207 of file EdgeRouter.h.
max box borders for bendfree edges
Definition at line 277 of file EdgeRouter.h.
Definition at line 277 of file EdgeRouter.h.