LayeredLayout.EdgeRouting.PortAssignment
- Package
- purescript-layered-layout
- Repository
- markgrafhq/purescript-layered-layout
#assignPorts Source
assignPorts :: Array Edge -> Array NodePlacement -> Map NodeId (Array Port) -> Array { edgeId :: EdgeId, nodes :: Array NodeId } -> EdgePortOffsets -> Array PortAssignmentDummy ports follow their own BK-assigned centres. A label-dummy switch can leave consecutive ordinary dummies in different columns; copying the first dummy's column would move later ports inside unrelated node or loop-label envelopes. Aligned chains remain straight naturally.
#EdgePortOffsets Source
type EdgePortOffsets = Map (EdgeId /\ Side) NumberPort-distribution result: per-edge x-offset on a node side, in
fine-grid coordinates relative to the node's left edge. Built by
LayeredLayout.PortDistribution.distributePorts (post-BK) and
consumed by assignPorts (edge routing) so the recorded offset
overrides the per-call distributeAlongSide re-derivation.
#scaleFactor Source
scaleFactor :: Int#distributeAlongSide Source
distributeAlongSide :: { hi :: Number, lo :: Number } -> Array EdgeId -> Map EdgeId NumberEven-distribution port-spacing formula from ELK's LGraphUtil.placePorts.
position_i = lo + (i + 1) * width / (n + 1)
with i ∈ [0, n), so 1 sibling sits at center; 2 at thirds; 3 at quarters.
The order of the input array decides which sibling lands at which slot —
callers sort by their preferred criterion (target layer-index, source
barycenter, etc.) before passing in.
- Modules
- LayeredLayout
- LayeredLayout.
Aesthetics - LayeredLayout.
Compaction. EdgeAwareScanlineConstraints - LayeredLayout.
Compaction. HorizontalGraphCompactor - LayeredLayout.
Compaction. LGraphToCGraphTransformer - LayeredLayout.
Compaction. NetworkSimplexCompaction - LayeredLayout.
Compaction. OneD - LayeredLayout.
Compaction. VerticalSegment - LayeredLayout.
Components - LayeredLayout.
CoordAssignment - LayeredLayout.
CrossingMin - LayeredLayout.
CrossingMin. Constraints - LayeredLayout.
CrossingMin. NorthSouth - LayeredLayout.
CrossingMin. Ports - LayeredLayout.
CycleRemoval - LayeredLayout.
DummyNodes - LayeredLayout.
EdgeLabels - LayeredLayout.
EdgeLabels. SelfLoops - LayeredLayout.
EdgeLabels. SelfLoops. Model - LayeredLayout.
EdgeLabels. SelfLoops. Routing - LayeredLayout.
EdgeRouting - LayeredLayout.
EdgeRouting. HyperEdgeCycleDetector - LayeredLayout.
EdgeRouting. HyperEdges - LayeredLayout.
EdgeRouting. LineJump - LayeredLayout.
EdgeRouting. Orthogonal - LayeredLayout.
EdgeRouting. PortAssignment - LayeredLayout.
Graph - LayeredLayout.
Grid - LayeredLayout.
JavaRandom - LayeredLayout.
LayerAssignment - LayeredLayout.
LayerAssignment. NetworkSimplex - LayeredLayout.
NetworkSimplex - LayeredLayout.
PortDistribution - LayeredLayout.
PortDummies - LayeredLayout.
Result