package intermediate
import (
basegraph "github.com/d2lang/elk-go/internal/graph"
"github.com/d2lang/elk-go/internal/layered"
"github.com/d2lang/elk-go/internal/layered/intermediate/loops"
)
func PostprocessSelfLoops (arena *layered .LGraphArena , graphID layered .LGraphID ) {
for _ , layerID := range arena .Graph (graphID ).Layers {
for _ , nodeID := range arena .Layer (layerID ).Nodes {
node := arena .Node (nodeID )
if node .Type != layered .NormalNode {
continue
}
holder , found := basegraph .TryGet (&node .Properties , loops .HolderProperty )
if !found {
continue
}
for _ , loop := range holder .HyperLoops {
for _ , edge := range loop .Edges {
source , target := edge .Source .LPort , edge .Target .LPort
arena .SetEdgeSource (edge .LEdge , &source )
arena .SetEdgeTarget (edge .LEdge , &target )
arena .Edge (edge .LEdge ).BendPoints .Offset (node .Position )
}
if loop .Labels != nil {
loop .Labels .ApplyPlacement (arena , node .Position )
}
}
}
}
}
The pages are generated with Golds v0.8.7 . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds .