package preserveorder
import (
basegraph "github.com/d2lang/elk-go/internal/graph"
"github.com/d2lang/elk-go/internal/layered"
)
func CalculateModelOrderOrGroupModelOrder (
graph *layered .LGraph ,
element , other *basegraph .PropertyMap ,
offset int ,
) int {
if !basegraph .Has (element , layered .ModelOrder ) {
return -1
}
if basegraph .Get (&graph .Properties , layered .CrossingMinimizationGroupOrder ) ==
layered .GroupOrderEnforced {
enforced := basegraph .Get (
&graph .Properties ,
layered .CrossingMinimizationEnforcedGroups ,
)
elementGroup := basegraph .Get (element , layered .CrossingMinimizationGroupID )
otherGroup := basegraph .Get (other , layered .CrossingMinimizationGroupID )
if containsGroup (enforced , elementGroup ) && containsGroup (enforced , otherGroup ) {
return offset *elementGroup + basegraph .Get (element , layered .ModelOrder )
}
}
return basegraph .Get (element , layered .ModelOrder )
}
func containsGroup(groups []int , group int ) bool {
for _ , candidate := range groups {
if candidate == group {
return true
}
}
return false
}
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 .