Calculate vertical ordering of row bends
Information about edges that pass between two adjacent layers.
VertexInfo's for all the vertices in a single layer.
Info for rendering a vertex.
Info for rendering a vertex.
- area including the zone for self-edges to be drawn
- map of incoming edges to the points they connect to on the vertex box.
- map of outgoing edges to the points they connect to on the vertex box.
Control how a vertex box gets sized and populated in a graph drawing.
Nudge edge ports to avoid overlapping vertical edge segments.
Nudge edge ports to avoid overlapping vertical edge segments.
If an edge starts at the same column as another edge finishes, there is a risk they could be drawn overlapping. This avoids the issue by moving the in port one column away (and we make the assumption that there is space for that).
╭─────╮ ╭─────╮ ╭─────╮ ╭─────╮ │ A │ │ B │ │ A │ │ B │ ╰─┬─┬─╯ ╰─┬─┬─╯ ╰─┬─┬─╯ ╰─┬─┬─╯ │ │ │ │ │ │ │ │ │ ╰─────┼ │ vs │ ╰─────┼╮│ │ ╭─────╯ │ │ ╭────╯││ │ │ │ │ │ │ ││ v v v v v v vv ╭─────╮ ╭─────╮ ╭─────╮ ╭─────╮ │ X │ │ Y │ │ X │ │ Y │ ╰─────╯ ╰─────╯ ╰─────╯ ╰─────╯
Some of the overlaps can be avoided by ordering the edge rows, but not if the overlaps cause a cycle, as in the case above. Ideally, we would just nudge just enough vertices to break the cycle, and let edge ordering handle the rest, but at the moment we nudge everything.
Render a vertex by taking .toString, then centering it horizontally and vertically within the given region.
Information about edges that pass between two adjacent layers.
-- column is correct, but not row