package layered

Import Path
	github.com/d2lang/elk-go/internal/layered (on go.dev)

Dependency Relation
	imports 14 packages, and imported by 16 packages

Involved Source Files compound.go configurator.go Package layered implements ELK Layered's internal graph and five-phase layout pipeline. The types in this file are the arena-backed counterparts of ELK 0.8.1's LGraph, LNode, LPort, LEdge, LLabel, and Layer classes. importer.go internal_properties.go lgraph_util.go options.go options_registry.go phases.go properties.go spacings.go transferrer.go
Package-Level Type Names (total 73)
/* sort by: | */
const AlignmentAutomatic const AlignmentBottom const AlignmentCenter const AlignmentLeft const AlignmentRight const AlignmentTop
CompoundGraphPostprocessor joins the laid-out hierarchy segments back into their original edge while translating bend points, junction points, labels, and the target anchor into a single reference coordinate system. (*CompoundGraphPostprocessor) Process(arena *LGraphArena, topGraph LGraphID) error *CompoundGraphPostprocessor : LayoutProcessor
CompoundGraphPreprocessor splits every cross-hierarchy edge into one edge per hierarchy level, connected through external-port dummy nodes. (*CompoundGraphPreprocessor) Process(arena *LGraphArena, topGraph LGraphID) error *CompoundGraphPreprocessor : LayoutProcessor
ConfiguredProcessor contributes its own intermediate dependencies. ( ConfiguredProcessor) Process(arena *LGraphArena, graphID LGraphID) error ( ConfiguredProcessor) ProcessorConfiguration(arena *LGraphArena, graphID LGraphID) ProcessorConfiguration *github.com/d2lang/elk-go/internal/layered/p1cycles.DepthFirstCycleBreaker *github.com/d2lang/elk-go/internal/layered/p1cycles.DFSNodeOrderCycleBreaker *github.com/d2lang/elk-go/internal/layered/p1cycles.GreedyCycleBreaker *github.com/d2lang/elk-go/internal/layered/p1cycles.InteractiveCycleBreaker *github.com/d2lang/elk-go/internal/layered/p1cycles.ModelOrderCycleBreaker *github.com/d2lang/elk-go/internal/layered/p1cycles.SCCNodeTypeCycleBreaker *github.com/d2lang/elk-go/internal/layered/p2layers.CoffmanGrahamLayerer *github.com/d2lang/elk-go/internal/layered/p2layers.InteractiveLayerer *github.com/d2lang/elk-go/internal/layered/p2layers.LongestPathLayerer *github.com/d2lang/elk-go/internal/layered/p2layers.MinWidthLayerer *github.com/d2lang/elk-go/internal/layered/p2layers.NetworkSimplexLayerer *github.com/d2lang/elk-go/internal/layered/p2layers.StretchWidthLayerer *github.com/d2lang/elk-go/internal/layered/p3order.InteractiveCrossingMinimizer *github.com/d2lang/elk-go/internal/layered/p3order.LayerSweepCrossingMinimizer *github.com/d2lang/elk-go/internal/layered/p3order.NoCrossingMinimizer github.com/d2lang/elk-go/internal/layered/p4nodes.BrandesKoepfPlacer *github.com/d2lang/elk-go/internal/layered/p4nodes.InteractiveNodePlacer *github.com/d2lang/elk-go/internal/layered/p4nodes.LinearSegmentsNodePlacer *github.com/d2lang/elk-go/internal/layered/p4nodes.NetworkSimplexPlacer *github.com/d2lang/elk-go/internal/layered/p4nodes.SimpleNodePlacer *github.com/d2lang/elk-go/internal/layered/p5edges.OrthogonalEdgeRouter *github.com/d2lang/elk-go/internal/layered/p5edges.PolylineEdgeRouter *github.com/d2lang/elk-go/internal/layered/p5edges.SplineEdgeRouter ConfiguredProcessor : LayoutProcessor
CrossHierarchyEdge is one per-hierarchy-level replacement segment of an original edge. The declaration mirrors CompoundGraphPreprocessor's private CrossHierarchyEdge value. Edge LEdgeID Graph LGraphID PortType PortType
CrossHierarchyEntry retains Java LinkedHashMap insertion order. Original LEdgeID Segments []CrossHierarchyEdge
CrossHierarchyMap is the exact non-cloneable value stored on the top graph. Entries, rather than a Go map, are authoritative because insertion order is observable while labels and dummy edges are restored. Entries []CrossHierarchyEntry
const CuttingARD const CuttingManual const CuttingMSD
func ParseDirection(value string) (Direction, bool) func DirectionPortSide(direction Direction) PortSide func (*LGraphArena).CreateExternalPortDummy(propertyHolder *basegraph.PropertyMap, portConstraints PortConstraints, portSide PortSide, netFlow int, portNodeSize *geometry.Point, portPosition *geometry.Point, portSize geometry.Point, layoutDirection Direction, graphID LGraphID) LNodeID const DirectionDown const DirectionLeft const DirectionRight const DirectionUndefined const DirectionUp
const DirectionCongruencyReading const DirectionCongruencyRotation
const EdgeConstraintIncomingOnly const EdgeConstraintNone const EdgeConstraintOutgoingOnly
const EdgeLabelPlacementCenter const EdgeLabelPlacementHead const EdgeLabelPlacementTail
const EdgeRoutingOrthogonal const EdgeRoutingPolyline const EdgeRoutingSplines const EdgeRoutingUndefined
const EdgeStraighteningImprove const EdgeStraighteningNone
Maps ImportMaps Model *basegraph.Model (*ElkGraphImporter) ImportGraph(parent basegraph.NodeID) (*LGraphArena, LGraphID, error) func NewElkGraphImporter(model *basegraph.Model) *ElkGraphImporter
Maps ImportMaps Model *basegraph.Model (*ElkGraphLayoutTransferrer) ApplyLayout(arena *LGraphArena, topGraph LGraphID) error func NewElkGraphLayoutTransferrer(model *basegraph.Model, maps ImportMaps) *ElkGraphLayoutTransferrer
const GreedySwitchOff const GreedySwitchOneSided const GreedySwitchTwoSided
const GroupOrderEnforced const GroupOrderModelOrder const GroupOrderOnlyWithinGroup
const HierarchyIncludeChildren const HierarchyInherit const HierarchySeparateChildren
ImportMaps preserve object identity between ELK's public graph arena and its layered working graph. Edges map[basegraph.EdgeID]LEdgeID Graphs map[basegraph.NodeID]LGraphID Labels map[basegraph.LabelID]LLabelID Nodes map[basegraph.NodeID]LNodeID Ports map[basegraph.PortID]LPortID func NewElkGraphLayoutTransferrer(model *basegraph.Model, maps ImportMaps) *ElkGraphLayoutTransferrer
IndividualSpacings is the property-holder value used by org.eclipse.elk.spacing.individual. Properties graph.PropertyMap ( IndividualSpacings) Clone() any
const InLayerConstraintBottom const InLayerConstraintNone const InLayerConstraintTop
InteractiveReferencePoint selects the position compared by ELK's interactive cycle-breaking, crossing-minimization, and node-placement phases. The declaration order matches ELK 0.8.1. const InteractiveReferenceCenter const InteractiveReferenceTopLeft
IntermediateProcessorStrategy declaration order follows ELK 0.12.0. enum order. LayoutProcessorConfiguration uses an EnumSet, so this order is observable when processors from multiple phase configurations share a slot. func (*ProcessorConfiguration).Slot(slot int) []IntermediateProcessorStrategy func github.com/d2lang/elk-go/internal/layered/p3order.GreedySwitchIntermediateForGraph(arena *LGraphArena, graphID LGraphID) (IntermediateProcessorStrategy, bool) func (*ProcessorConfiguration).AddAfter(phase Phase, processor IntermediateProcessorStrategy) *ProcessorConfiguration func (*ProcessorConfiguration).AddBefore(phase Phase, processor IntermediateProcessorStrategy) *ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p3order.NewGreedySwitchPostprocessor(strategy IntermediateProcessorStrategy) (*p3order.LayerSweepCrossingMinimizer, error) func github.com/d2lang/elk-go/internal/layered/p3order.ProcessGreedySwitchIntermediate(arena *LGraphArena, graphID LGraphID, strategy IntermediateProcessorStrategy) error const AlternatingLayerUnzipper const BreakingPointInserter const BreakingPointProcessor const BreakingPointRemover const CenterLabelManagementProcessor const CommentNodeMarginCalculator const CommentPostprocessor const CommentPreprocessor const ConstraintsPostprocessor const DirectionPostprocessor const DirectionPreprocessor const EdgeAndLayerConstraintEdgeReverser const EndLabelPostprocessor const EndLabelPreprocessor const EndLabelSorter const EndNodePortLabelManagementProcessor const FinalSplineBendpointsCalculator const HierarchicalNodeResizer const HierarchicalPortConstraintProcessor const HierarchicalPortDummySizeProcessor const HierarchicalPortOrthogonalEdgeRouter const HierarchicalPortPositionProcessor const HighDegreeNodeLayerProcessor const HorizontalCompactor const HyperedgeDummyMerger const HypernodeProcessor const InLayerConstraintProcessor const InnermostNodeMarginCalculator const InteractiveExternalPortPositioner const InvertedPortProcessor const LabelAndNodeSizeProcessor const LabelDummyInserter const LabelDummyRemover const LabelDummySwitcher const LabelSideSelector const LayerConstraintPostprocessor const LayerConstraintPreprocessor const LayerSizeAndGraphHeightCalculator const LongEdgeJoiner const LongEdgeSplitter const NodePlacementRepeater const NodePromotion const NorthSouthPortPostprocessor const NorthSouthPortPreprocessor const OneSidedGreedySwitch const PartitionMidprocessor const PartitionPostprocessor const PartitionPreprocessor const PortListSorter const PortSideProcessor const ReversedEdgeRestorer const SelfLoopPortRestorer const SelfLoopPostprocessor const SelfLoopPreprocessor const SelfLoopRouter const SemiInteractiveCrossMinProcessor const SingleEdgeGraphWrapper const SortByInputOrderOfModel const TwoSidedGreedySwitch
const LabelSideAbove const LabelSideBelow const LabelSideInline const LabelSideUnknown
Graph LGraphID ID int Nodes []LNodeID Properties basegraph.PropertyMap Size geometry.Point func (*LGraphArena).Layer(id LayerID) *Layer
( LayerID) Index() int func (*LGraphArena).AddLayer(graphID LGraphID) LayerID func (*LGraphArena).AddLayerToGraph(graphID LGraphID) LayerID func (*LGraphArena).Layer(id LayerID) *Layer func (*LGraphArena).LayerIndex(layerID LayerID) int func (*LGraphArena).SetNodeLayer(nodeID LNodeID, layerID *LayerID) func (*LGraphArena).SetNodeLayerAt(nodeID LNodeID, layerID *LayerID, index int) func github.com/d2lang/elk-go/internal/layered/intermediate/wrapping.(*GraphStats).ApproximateLayerHeight(layerID LayerID) float64 func github.com/d2lang/elk-go/internal/layered/intermediate/wrapping.(*GraphStats).ApproximateLayerWidth(layerID LayerID) float64
func ParseLayeringStrategy(value string) (LayeringStrategy, bool) const LayeringBreadthFirstModelOrder const LayeringCoffmanGraham const LayeringDepthFirstModelOrder const LayeringInteractive const LayeringLongestPath const LayeringLongestPathSource const LayeringMinWidth const LayeringNetworkSimplex const LayeringStretchWidth
const LayerUnzippingAlternating const LayerUnzippingNone
LayoutProcessor is implemented by phases and intermediate processors. ( LayoutProcessor) Process(arena *LGraphArena, graphID LGraphID) error *CompoundGraphPostprocessor *CompoundGraphPreprocessor ConfiguredProcessor (interface) *github.com/d2lang/elk-go/internal/layered/intermediate.HyperedgeDummyMerger *github.com/d2lang/elk-go/internal/layered/intermediate.LayerConstraintPostprocessor *github.com/d2lang/elk-go/internal/layered/intermediate.LayerConstraintPreprocessor *github.com/d2lang/elk-go/internal/layered/p1cycles.DepthFirstCycleBreaker *github.com/d2lang/elk-go/internal/layered/p1cycles.DFSNodeOrderCycleBreaker *github.com/d2lang/elk-go/internal/layered/p1cycles.GreedyCycleBreaker *github.com/d2lang/elk-go/internal/layered/p1cycles.InteractiveCycleBreaker *github.com/d2lang/elk-go/internal/layered/p1cycles.ModelOrderCycleBreaker *github.com/d2lang/elk-go/internal/layered/p1cycles.SCCNodeTypeCycleBreaker *github.com/d2lang/elk-go/internal/layered/p2layers.CoffmanGrahamLayerer *github.com/d2lang/elk-go/internal/layered/p2layers.InteractiveLayerer *github.com/d2lang/elk-go/internal/layered/p2layers.LongestPathLayerer *github.com/d2lang/elk-go/internal/layered/p2layers.MinWidthLayerer *github.com/d2lang/elk-go/internal/layered/p2layers.NetworkSimplexLayerer *github.com/d2lang/elk-go/internal/layered/p2layers.StretchWidthLayerer *github.com/d2lang/elk-go/internal/layered/p3order.InteractiveCrossingMinimizer *github.com/d2lang/elk-go/internal/layered/p3order.LayerSweepCrossingMinimizer *github.com/d2lang/elk-go/internal/layered/p3order.NoCrossingMinimizer github.com/d2lang/elk-go/internal/layered/p4nodes.BrandesKoepfPlacer *github.com/d2lang/elk-go/internal/layered/p4nodes.InteractiveNodePlacer *github.com/d2lang/elk-go/internal/layered/p4nodes.LinearSegmentsNodePlacer *github.com/d2lang/elk-go/internal/layered/p4nodes.NetworkSimplexPlacer *github.com/d2lang/elk-go/internal/layered/p4nodes.SimpleNodePlacer *github.com/d2lang/elk-go/internal/layered/p5edges.OrthogonalEdgeRouter *github.com/d2lang/elk-go/internal/layered/p5edges.PolylineEdgeRouter *github.com/d2lang/elk-go/internal/layered/p5edges.SplineEdgeRouter
BendPoints geometry.Chain ID int Labels []LLabelID Properties basegraph.PropertyMap Source *LPortID Target *LPortID func (*LGraphArena).Edge(id LEdgeID) *LEdge
( LEdgeID) Index() int func (*LGraphArena).AddEdge() LEdgeID func (*LGraphArena).NodeConnectedEdges(nodeID LNodeID) []LEdgeID func (*LGraphArena).NodeIncomingEdges(nodeID LNodeID) []LEdgeID func (*LGraphArena).NodeOutgoingEdges(nodeID LNodeID) []LEdgeID func (*LGraphArena).PortConnectedEdges(portID LPortID) []LEdgeID func github.com/d2lang/elk-go/internal/layered/intermediate.SplitEdgeAtDummy(arena *LGraphArena, edgeID LEdgeID, dummyID LNodeID) LEdgeID func github.com/d2lang/elk-go/internal/layered/intermediate/wrapping.InsertDummies(arena *LGraphArena, graphID LGraphID, originalEdge LEdgeID, offsetFirstInLayerDummy int) []LEdgeID func LEdgeOrigin(id LEdgeID) Origin func (*LGraphArena).Edge(id LEdgeID) *LEdge func (*LGraphArena).EdgeIsInLayer(edgeID LEdgeID) bool func (*LGraphArena).EdgeIsSelfLoop(edgeID LEdgeID) bool func (*LGraphArena).EdgeOtherNode(edgeID LEdgeID, nodeID LNodeID) LNodeID func (*LGraphArena).EdgeOtherPort(edgeID LEdgeID, portID LPortID) LPortID func (*LGraphArena).EdgeSourceNode(edgeID LEdgeID) LNodeID func (*LGraphArena).EdgeTargetNode(edgeID LEdgeID) LNodeID func (*LGraphArena).ReverseEdge(graphID LGraphID, edgeID LEdgeID, adaptPorts bool) func (*LGraphArena).SetEdgeSource(edgeID LEdgeID, portID *LPortID) func (*LGraphArena).SetEdgeTarget(edgeID LEdgeID, portID *LPortID) func (*LGraphArena).SetEdgeTargetAt(edgeID LEdgeID, portID *LPortID, index int) func github.com/d2lang/elk-go/internal/layered/intermediate.SplitEdgeAtDummy(arena *LGraphArena, edgeID LEdgeID, dummyID LNodeID) LEdgeID func github.com/d2lang/elk-go/internal/layered/intermediate/wrapping.InsertDummies(arena *LGraphArena, graphID LGraphID, originalEdge LEdgeID, offsetFirstInLayerDummy int) []LEdgeID func github.com/d2lang/elk-go/internal/layered/p3order.(*AllCrossingsCounter).InitAtEdgeLevel(arena *LGraphArena, layerIndex, nodeIndex, portIndex int, edgeID LEdgeID, nodeOrder [][]LNodeID) func github.com/d2lang/elk-go/internal/layered/p4nodes.(*BKAligner).VerticalAlignment(layout *p4nodes.BKAlignedLayout, markedEdges map[LEdgeID]bool)
ID int LayerlessNodes []LNodeID Layers []LayerID Offset geometry.Point Padding geometry.Spacing ParentNode *LNodeID Properties basegraph.PropertyMap Size geometry.Point func (*LGraphArena).Graph(id LGraphID) *LGraph func github.com/d2lang/elk-go/internal/layered/intermediate/preserveorder.CalculateModelOrderOrGroupModelOrder(graph *LGraph, element, other *basegraph.PropertyMap, offset int) int
LGraphArena gives Go stable identities without pointers into growing slices. Arena order is Java object creation order and must never be reconstructed from a map. Edges []LEdge Graphs []LGraph Labels []LLabel Layers []Layer Nodes []LNode Ports []LPort (*LGraphArena) AddEdge() LEdgeID (*LGraphArena) AddGraph() LGraphID (*LGraphArena) AddLabel(text string) LLabelID AddLayer is new Layer(graph); it deliberately does not append the layer to graph.Layers. This mirrors the subtle Java constructor behavior. (*LGraphArena) AddLayerToGraph(graphID LGraphID) LayerID AddNode is new LNode(graph); callers add the node to graph.LayerlessNodes explicitly, just as the Java importer does. (*LGraphArena) AddPort() LPortID (*LGraphArena) CachePortSides(nodeID LNodeID) CreateExternalPortDummy is the arena-backed counterpart of LGraphUtil.createExternalPortDummy. The caller deliberately decides when to add the returned node to Graph.LayerlessNodes, matching the Java helper. (*LGraphArena) Edge(id LEdgeID) *LEdge (*LGraphArena) EdgeIsInLayer(edgeID LEdgeID) bool (*LGraphArena) EdgeIsSelfLoop(edgeID LEdgeID) bool (*LGraphArena) EdgeOtherNode(edgeID LEdgeID, nodeID LNodeID) LNodeID (*LGraphArena) EdgeOtherPort(edgeID LEdgeID, portID LPortID) LPortID (*LGraphArena) EdgeSourceNode(edgeID LEdgeID) LNodeID (*LGraphArena) EdgeTargetNode(edgeID LEdgeID) LNodeID ExternalPortPosition calculates an external port's top-left position from its laid-out dummy and updates the dummy's border coordinate, exactly as LGraphUtil.getExternalPortPosition does. (*LGraphArena) Graph(id LGraphID) *LGraph (*LGraphArena) GraphActualSize(graphID LGraphID) geometry.Point (*LGraphArena) GraphAllNodes(graphID LGraphID) []LNodeID (*LGraphArena) InvalidatePortSideCache(nodeID LNodeID) (*LGraphArena) IsDescendant(childID, parentID LNodeID) bool (*LGraphArena) Label(id LLabelID) *LLabel (*LGraphArena) Layer(id LayerID) *Layer (*LGraphArena) LayerIndex(layerID LayerID) int (*LGraphArena) Node(id LNodeID) *LNode (*LGraphArena) NodeBorderToContentCoordinates(nodeID LNodeID, horizontal, vertical bool) (*LGraphArena) NodeConnectedEdges(nodeID LNodeID) []LEdgeID (*LGraphArena) NodeGraph(nodeID LNodeID) LGraphID (*LGraphArena) NodeIncomingEdges(nodeID LNodeID) []LEdgeID (*LGraphArena) NodeIndexInLayer(nodeID LNodeID) int (*LGraphArena) NodeOutgoingEdges(nodeID LNodeID) []LEdgeID (*LGraphArena) NodePortSideView(nodeID LNodeID, side PortSide) []LPortID (*LGraphArena) NodePortsOnSide(nodeID LNodeID, side PortSide) []LPortID (*LGraphArena) Port(id LPortID) *LPort (*LGraphArena) PortConnectedEdges(portID LPortID) []LEdgeID (*LGraphArena) ProvideCollectorPort(graphID LGraphID, nodeID LNodeID, portType PortType, side PortSide) LPortID (*LGraphArena) RemoveNodeFromGraph(nodeID LNodeID) ResizeNode mirrors LGraphUtil.resizeNode. ELK intentionally performs its ratio and delta calculations as float32 even though coordinates are doubles. ReverseEdge mirrors LEdge.reverse. Reversal updates adjacency in the same sequence as Java, toggles REVERSED, reverses bend points, and swaps HEAD and TAIL label placement. Collector-port adaptation is used by cycle breaking. (*LGraphArena) SetEdgeSource(edgeID LEdgeID, portID *LPortID) (*LGraphArena) SetEdgeTarget(edgeID LEdgeID, portID *LPortID) (*LGraphArena) SetEdgeTargetAt(edgeID LEdgeID, portID *LPortID, index int) (*LGraphArena) SetNodeLayer(nodeID LNodeID, layerID *LayerID) (*LGraphArena) SetNodeLayerAt(nodeID LNodeID, layerID *LayerID, index int) (*LGraphArena) SetPortNode(portID LPortID, nodeID *LNodeID) (*LGraphArena) SetPortSide(portID LPortID, side PortSide) func NewLGraphArena() *LGraphArena func (*ElkGraphImporter).ImportGraph(parent basegraph.NodeID) (*LGraphArena, LGraphID, error) func BasePipelineConfiguration(arena *LGraphArena, graphID LGraphID) PipelineConfiguration func ConfigureGraphProperties(arena *LGraphArena, graphID LGraphID) func HorizontalSpacing(arena *LGraphArena, first, second LNodeID) float64 func HorizontalSpacingByType(arena *LGraphArena, graphID LGraphID, first, second NodeType) float64 func IndividualOrDefault(arena *LGraphArena, nodeID LNodeID, property *basegraph.Property[float64]) float64 func VerticalSpacing(arena *LGraphArena, first, second LNodeID) float64 func VerticalSpacingByType(arena *LGraphArena, graphID LGraphID, first, second NodeType) float64 func (*CompoundGraphPostprocessor).Process(arena *LGraphArena, topGraph LGraphID) error func (*CompoundGraphPreprocessor).Process(arena *LGraphArena, topGraph LGraphID) error func ConfiguredProcessor.Process(arena *LGraphArena, graphID LGraphID) error func ConfiguredProcessor.ProcessorConfiguration(arena *LGraphArena, graphID LGraphID) ProcessorConfiguration func (*ElkGraphLayoutTransferrer).ApplyLayout(arena *LGraphArena, topGraph LGraphID) error func LayoutProcessor.Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/components.MakeLayerless(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/components.(*ComponentsProcessor).Combine(arena *LGraphArena, components []LGraphID, target LGraphID) error func github.com/d2lang/elk-go/internal/layered/components.(*ComponentsProcessor).Split(arena *LGraphArena, graphID LGraphID) ([]LGraphID, error) func github.com/d2lang/elk-go/internal/layered/intermediate.CalculateCommentNodeMargins(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.CalculateInnermostNodeMargins(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.CalculateLayerSizesAndGraphHeight(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.CompactHorizontally(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.InsertLabelDummies(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.JoinLongEdgeAt(arena *LGraphArena, dummyID LNodeID, addUnnecessary bool) func github.com/d2lang/elk-go/internal/layered/intermediate.JoinLongEdges(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.LongEdgeTargetNode(arena *LGraphArena, portID LPortID) (LNodeID, bool, error) func github.com/d2lang/elk-go/internal/layered/intermediate.LongEdgeTargetNodePreprocessing(arena *LGraphArena, nodeID LNodeID) (map[LNodeID]int, error) func github.com/d2lang/elk-go/internal/layered/intermediate.ManageEndNodePortLabels(_ *LGraphArena, _ LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.MergeHyperedgeDummies(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.PositionHierarchicalPorts(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.PositionInteractiveExternalPorts(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.PostprocessComments(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.PostprocessEndLabels(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.PostprocessNorthSouthPorts(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.PostprocessPartitions(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.PostprocessSelfLoops(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.PrepareNodePlacementRepeat(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.PreprocessComments(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.PreprocessEndLabels(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.PreprocessNorthSouthPorts(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.PreprocessPartitions(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.PreprocessSelfLoops(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.ProcessConstraints(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.ProcessHierarchicalPortConstraints(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.ProcessHighDegreeNodes(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.ProcessHypernodes(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.ProcessInLayerConstraints(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.ProcessInvertedPorts(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.ProcessLabelAndNodeSizes(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.ProcessLayerConstraintsAfterLayering(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.ProcessLayerConstraintsBeforeLayering(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.ProcessPartitionsBeforeLayering(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.ProcessPortSides(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.ProcessSemiInteractiveCrossing(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.PromoteNodes(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.RemoveLabelDummies(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.ResizeHierarchicalNode(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.RestoreReversedEdges(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.RestoreSelfLoopPorts(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.ReverseConstraintEdges(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.RouteHierarchicalPorts(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.RouteSelfLoops(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.SelectLabelSides(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.SetPortSide(arena *LGraphArena, portID LPortID) func github.com/d2lang/elk-go/internal/layered/intermediate.SizeHierarchicalPortDummies(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.SortByInputModel(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.SortEndLabels(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.SortPortLists(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.SplitEdgeAtDummy(arena *LGraphArena, edgeID LEdgeID, dummyID LNodeID) LEdgeID func github.com/d2lang/elk-go/internal/layered/intermediate.SplitLongEdges(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.SwitchLabelDummies(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.TransformGraph(arena *LGraphArena, graphID LGraphID, mode intermediate.GraphTransformMode) func github.com/d2lang/elk-go/internal/layered/intermediate.(*HyperedgeDummyMerger).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.(*LayerConstraintPostprocessor).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.(*LayerConstraintPreprocessor).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate/loops.IndividualOrInherited(arena *LGraphArena, nodeID LNodeID, property basegraph.Property[float64]) float64 func github.com/d2lang/elk-go/internal/layered/intermediate/loops.Install(arena *LGraphArena, nodeID LNodeID) (*loops.Holder, error) func github.com/d2lang/elk-go/internal/layered/intermediate/loops.NeedsProcessing(arena *LGraphArena, nodeID LNodeID) bool func github.com/d2lang/elk-go/internal/layered/intermediate/loops.(*Edge).IsInline(arena *LGraphArena) bool func github.com/d2lang/elk-go/internal/layered/intermediate/loops.(*HyperLoop).AddEdge(arena *LGraphArena, edge *loops.Edge) func github.com/d2lang/elk-go/internal/layered/intermediate/loops.(*HyperLoop).ComputePortsPerSide(arena *LGraphArena) error func github.com/d2lang/elk-go/internal/layered/intermediate/loops.(*Labels).Add(arena *LGraphArena, ids []LLabelID) func github.com/d2lang/elk-go/internal/layered/intermediate/loops.(*Labels).ApplyPlacement(arena *LGraphArena, offset geometry.Point) func github.com/d2lang/elk-go/internal/layered/intermediate/loops/ordering.AssignPortSides(arena *LGraphArena, holder *loops.Holder) error func github.com/d2lang/elk-go/internal/layered/intermediate/loops/ordering.RestorePorts(arena *LGraphArena, holder *loops.Holder) error func github.com/d2lang/elk-go/internal/layered/intermediate/loops/routing.AssignRoutingSlots(arena *LGraphArena, holder *loops.Holder) func github.com/d2lang/elk-go/internal/layered/intermediate/loops/routing.DetermineLoopRoutes(arena *LGraphArena, holder *loops.Holder) error func github.com/d2lang/elk-go/internal/layered/intermediate/loops/routing.PlaceLabels(arena *LGraphArena, holder *loops.Holder) error func github.com/d2lang/elk-go/internal/layered/intermediate/loops/routing.RouteOrthogonal(arena *LGraphArena, holder *loops.Holder) func github.com/d2lang/elk-go/internal/layered/intermediate/loops/routing.RoutePolyline(arena *LGraphArena, holder *loops.Holder) func github.com/d2lang/elk-go/internal/layered/intermediate/loops/routing.RouteSpline(arena *LGraphArena, holder *loops.Holder) func github.com/d2lang/elk-go/internal/layered/intermediate/preserveorder.NewNodeComparator(arena *LGraphArena, previousLayer []LNodeID, ordering OrderingStrategy, longEdgeOrder preserveorder.LongEdgeOrderingStrategy, beforePorts bool) *preserveorder.NodeComparator func github.com/d2lang/elk-go/internal/layered/intermediate/preserveorder.NewPortComparator(arena *LGraphArena, previousLayer []LNodeID, ordering OrderingStrategy, targetNodeModelOrder map[LNodeID]int, portModelOrder bool) *preserveorder.PortComparator func github.com/d2lang/elk-go/internal/layered/intermediate/unzipping.AlternateLayers(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate/wrapping.InsertBreakingPoints(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate/wrapping.InsertDummies(arena *LGraphArena, graphID LGraphID, originalEdge LEdgeID, offsetFirstInLayerDummy int) []LEdgeID func github.com/d2lang/elk-go/internal/layered/intermediate/wrapping.IsBreakingPointEnd(arena *LGraphArena, nodeID LNodeID) bool func github.com/d2lang/elk-go/internal/layered/intermediate/wrapping.IsBreakingPointStart(arena *LGraphArena, nodeID LNodeID) bool func github.com/d2lang/elk-go/internal/layered/intermediate/wrapping.NewGraphStats(arena *LGraphArena, graphID LGraphID) *wrapping.GraphStats func github.com/d2lang/elk-go/internal/layered/intermediate/wrapping.ProcessBreakingPoints(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate/wrapping.RemoveBreakingPoints(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate/wrapping.WrapSingleEdgeGraph(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/p1cycles.(*DepthFirstCycleBreaker).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p1cycles.(*DepthFirstCycleBreaker).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p1cycles.(*DFSNodeOrderCycleBreaker).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p1cycles.(*DFSNodeOrderCycleBreaker).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p1cycles.(*GreedyCycleBreaker).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p1cycles.(*GreedyCycleBreaker).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p1cycles.(*InteractiveCycleBreaker).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p1cycles.(*InteractiveCycleBreaker).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p1cycles.(*ModelOrderCycleBreaker).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p1cycles.(*ModelOrderCycleBreaker).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p1cycles.(*SCCNodeTypeCycleBreaker).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p1cycles.(*SCCNodeTypeCycleBreaker).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p2layers.(*CoffmanGrahamLayerer).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p2layers.(*CoffmanGrahamLayerer).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p2layers.(*InteractiveLayerer).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p2layers.(*InteractiveLayerer).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p2layers.(*LongestPathLayerer).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p2layers.(*LongestPathLayerer).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p2layers.(*MinWidthLayerer).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p2layers.(*MinWidthLayerer).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p2layers.(*NetworkSimplexLayerer).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p2layers.(*NetworkSimplexLayerer).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p2layers.(*StretchWidthLayerer).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p2layers.(*StretchWidthLayerer).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p3order.GreedySwitchIntermediateForGraph(arena *LGraphArena, graphID LGraphID) (IntermediateProcessorStrategy, bool) func github.com/d2lang/elk-go/internal/layered/p3order.InitializeAllCrossingsCounter(counter *p3order.AllCrossingsCounter, arena *LGraphArena, nodeOrder [][]LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.InitializeBarycenterPortDistributor(distributor *p3order.BarycenterPortDistributor, arena *LGraphArena, order [][]LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.InitializeForsterConstraintResolver(resolver *p3order.ForsterConstraintResolver, arena *LGraphArena, order [][]LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.InitializeGreedyPortDistributor(distributor *p3order.GreedyPortDistributor, arena *LGraphArena, order [][]LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.NewBarycenterHeuristic(arena *LGraphArena, resolver *p3order.ForsterConstraintResolver, random *javacompat.Random, distributor *p3order.BarycenterPortDistributor) *p3order.BarycenterHeuristic func github.com/d2lang/elk-go/internal/layered/p3order.NewCrossingMatrixFiller(arena *LGraphArena, crossMinType p3order.CrossMinType, order [][]LNodeID, freeLayerIndex int, side p3order.CrossingCountSide) *p3order.CrossingMatrixFiller func github.com/d2lang/elk-go/internal/layered/p3order.NewForsterConstraintResolver(arena *LGraphArena, order [][]LNodeID) *p3order.ForsterConstraintResolver func github.com/d2lang/elk-go/internal/layered/p3order.NewGraphInfoHolder(arena *LGraphArena, graphID LGraphID, crossMinType p3order.CrossMinType, graphs []*p3order.GraphInfoHolder, random *javacompat.Random) (*p3order.GraphInfoHolder, error) func github.com/d2lang/elk-go/internal/layered/p3order.NewGreedySwitchHeuristic(arena *LGraphArena, crossMinType p3order.CrossMinType, holder *p3order.GraphInfoHolder) *p3order.GreedySwitchHeuristic func github.com/d2lang/elk-go/internal/layered/p3order.NewNorthSouthEdgeNeighbouringNodeCrossingsCounter(arena *LGraphArena, layer []LNodeID) *p3order.NorthSouthEdgeNeighbouringNodeCrossingsCounter func github.com/d2lang/elk-go/internal/layered/p3order.NewSweepCopy(arena *LGraphArena, nodeOrder [][]LNodeID) *p3order.SweepCopy func github.com/d2lang/elk-go/internal/layered/p3order.NewSwitchDecider(arena *LGraphArena, freeLayerIndex int, order [][]LNodeID, filler *p3order.CrossingMatrixFiller, portPositions []int, holder *p3order.GraphInfoHolder, oneSided bool) *p3order.SwitchDecider func github.com/d2lang/elk-go/internal/layered/p3order.ProcessGreedySwitchIntermediate(arena *LGraphArena, graphID LGraphID, strategy IntermediateProcessorStrategy) error func github.com/d2lang/elk-go/internal/layered/p3order.(*AllCrossingsCounter).CountAllCrossings(arena *LGraphArena, currentOrder [][]LNodeID) int func github.com/d2lang/elk-go/internal/layered/p3order.(*AllCrossingsCounter).InitAtEdgeLevel(arena *LGraphArena, layerIndex, nodeIndex, portIndex int, edgeID LEdgeID, nodeOrder [][]LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.(*AllCrossingsCounter).InitAtNodeLevel(arena *LGraphArena, layerIndex, nodeIndex int, nodeOrder [][]LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.(*AllCrossingsCounter).InitAtPortLevel(arena *LGraphArena, layerIndex, nodeIndex, portIndex int, nodeOrder [][]LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.(*BarycenterPortDistributor).CalculatePortRanks(arena *LGraphArena, layer []LNodeID, portType PortType) func github.com/d2lang/elk-go/internal/layered/p3order.(*BarycenterPortDistributor).DistributePortsWhileSweeping(arena *LGraphArena, nodeOrder [][]LNodeID, currentIndex int, forward bool) bool func github.com/d2lang/elk-go/internal/layered/p3order.(*BarycenterPortDistributor).InitAtNodeLevel(arena *LGraphArena, layerIndex, nodeIndex int, order [][]LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.(*BarycenterPortDistributor).InitAtPortLevel(arena *LGraphArena, layerIndex, nodeIndex, portIndex int, order [][]LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.(*CrossingMatrixFiller).GetCrossingMatrixEntry(arena *LGraphArena, upper, lower LNodeID) int func github.com/d2lang/elk-go/internal/layered/p3order.(*CrossingsCounter).CountCrossingsBetweenLayers(arena *LGraphArena, leftLayerNodes, rightLayerNodes []LNodeID) int func github.com/d2lang/elk-go/internal/layered/p3order.(*CrossingsCounter).CountCrossingsBetweenPortsInBothOrders(arena *LGraphArena, upperPort, lowerPort LPortID) (int, int) func github.com/d2lang/elk-go/internal/layered/p3order.(*CrossingsCounter).CountInLayerCrossingsBetweenNodesInBothOrders(arena *LGraphArena, upperNode, lowerNode LNodeID, side PortSide) (int, int) func github.com/d2lang/elk-go/internal/layered/p3order.(*CrossingsCounter).CountInLayerCrossingsOnSide(arena *LGraphArena, nodes []LNodeID, side PortSide) int func github.com/d2lang/elk-go/internal/layered/p3order.(*CrossingsCounter).CountNorthSouthPortCrossingsInLayer(arena *LGraphArena, nodes []LNodeID) int func github.com/d2lang/elk-go/internal/layered/p3order.(*CrossingsCounter).InitForCountingBetween(arena *LGraphArena, leftLayerNodes, rightLayerNodes []LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.(*CrossingsCounter).InitPortPositionsForInLayerCrossings(arena *LGraphArena, nodes []LNodeID, side PortSide) []LPortID func github.com/d2lang/elk-go/internal/layered/p3order.(*CrossingsCounter).SwitchNodes(arena *LGraphArena, wasUpperNode, wasLowerNode LNodeID, side PortSide) func github.com/d2lang/elk-go/internal/layered/p3order.(*CrossingsCounter).SwitchPorts(arena *LGraphArena, topPort, bottomPort LPortID) func github.com/d2lang/elk-go/internal/layered/p3order.(*ForsterConstraintResolver).InitAtNodeLevel(arena *LGraphArena, layerIndex, nodeIndex int, order [][]LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.(*ForsterConstraintResolver).ProcessConstraints(arena *LGraphArena, nodes *[]LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.(*GreedyPortDistributor).DistributePortsWhileSweeping(arena *LGraphArena, order [][]LNodeID, currentIndex int, forward bool) bool func github.com/d2lang/elk-go/internal/layered/p3order.(*GreedyPortDistributor).InitAtNodeLevel(arena *LGraphArena, layerIndex, nodeIndex int, order [][]LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.(*GreedySwitchHeuristic).InitAtLayerLevel(arena *LGraphArena, layerIndex int, order [][]LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.(*InteractiveCrossingMinimizer).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p3order.(*InteractiveCrossingMinimizer).ProcessorConfiguration(arena *LGraphArena, graphID LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p3order.(*LayerSweepCrossingMinimizer).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p3order.(*LayerSweepCrossingMinimizer).ProcessHierarchy(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p3order.(*LayerSweepCrossingMinimizer).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p3order.(*LayerSweepTypeDecider).InitAtLayerLevel(arena *LGraphArena, layerIndex int, order [][]LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.(*LayerSweepTypeDecider).InitAtNodeLevel(arena *LGraphArena, layerIndex, nodeIndex int, order [][]LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.(*LayerSweepTypeDecider).UseBottomUp(arena *LGraphArena, graphID LGraphID, parent *LNodeID, crossMinDeterministic bool, order [][]LNodeID) bool func github.com/d2lang/elk-go/internal/layered/p3order.(*NoCrossingMinimizer).Process(*LGraphArena, LGraphID) error func github.com/d2lang/elk-go/internal/layered/p3order.(*NoCrossingMinimizer).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p3order.(*NorthSouthEdgeNeighbouringNodeCrossingsCounter).CountCrossings(arena *LGraphArena, upper, lower LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.(*SweepCopy).TransferNodeAndPortOrdersToGraph(arena *LGraphArena, graphID LGraphID, setPortConstraints bool) func github.com/d2lang/elk-go/internal/layered/p3order.(*SwitchDecider).DoesSwitchReduceCrossings(arena *LGraphArena, upperIndex, lowerIndex int) bool func github.com/d2lang/elk-go/internal/layered/p3order.(*SwitchDecider).NotifyOfSwitch(arena *LGraphArena, upper, lower LNodeID) func github.com/d2lang/elk-go/internal/layered/p4nodes.BuildNeighborhoodInformation(arena *LGraphArena, graphID LGraphID) *p4nodes.NeighborhoodInformation func github.com/d2lang/elk-go/internal/layered/p4nodes.NewBKAligner(arena *LGraphArena, graphID LGraphID, info *p4nodes.NeighborhoodInformation) *p4nodes.BKAligner func github.com/d2lang/elk-go/internal/layered/p4nodes.NewBKCompactor(arena *LGraphArena, graphID LGraphID) *p4nodes.BKCompactor func github.com/d2lang/elk-go/internal/layered/p4nodes.PlaceBrandesKoepf(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/p4nodes.(*BKAlignedLayout).CalculateDelta(arena *LGraphArena, sourceID, targetID LPortID) float64 func github.com/d2lang/elk-go/internal/layered/p4nodes.(*BKAlignedLayout).CheckSpaceAbove(arena *LGraphArena, blockRoot LNodeID, delta float64, info *p4nodes.NeighborhoodInformation) float64 func github.com/d2lang/elk-go/internal/layered/p4nodes.(*BKAlignedLayout).CheckSpaceBelow(arena *LGraphArena, blockRoot LNodeID, delta float64, info *p4nodes.NeighborhoodInformation) float64 func github.com/d2lang/elk-go/internal/layered/p4nodes.(*BKAlignedLayout).LayoutSize(arena *LGraphArena) float64 func github.com/d2lang/elk-go/internal/layered/p4nodes.(*BKAlignedLayout).MaxY(arena *LGraphArena, nodeID LNodeID) float64 func github.com/d2lang/elk-go/internal/layered/p4nodes.(*BKAlignedLayout).MinY(arena *LGraphArena, nodeID LNodeID) float64 func github.com/d2lang/elk-go/internal/layered/p4nodes.(*BKAlignedLayout).ShiftBlock(arena *LGraphArena, rootID LNodeID, delta float64) func github.com/d2lang/elk-go/internal/layered/p4nodes.(*BKCompactor).HorizontalCompaction(arena *LGraphArena, graphID LGraphID, info *p4nodes.NeighborhoodInformation, layout *p4nodes.BKAlignedLayout) func github.com/d2lang/elk-go/internal/layered/p4nodes.BrandesKoepfPlacer.Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p4nodes.BrandesKoepfPlacer.ProcessorConfiguration(arena *LGraphArena, graphID LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p4nodes.(*InteractiveNodePlacer).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p4nodes.(*InteractiveNodePlacer).ProcessorConfiguration(arena *LGraphArena, graphID LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p4nodes.(*LinearSegmentsNodePlacer).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p4nodes.(*LinearSegmentsNodePlacer).ProcessorConfiguration(arena *LGraphArena, graphID LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p4nodes.(*NetworkSimplexPlacer).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p4nodes.(*NetworkSimplexPlacer).ProcessorConfiguration(arena *LGraphArena, graphID LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p4nodes.(*SimpleNodePlacer).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p4nodes.(*SimpleNodePlacer).ProcessorConfiguration(arena *LGraphArena, graphID LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p4nodes.(*ThresholdStrategy).CalculateThreshold(arena *LGraphArena, layout *p4nodes.BKAlignedLayout, oldThreshold float64, blockRoot, currentNode LNodeID) float64 func github.com/d2lang/elk-go/internal/layered/p4nodes.(*ThresholdStrategy).PostProcess(arena *LGraphArena, info *p4nodes.NeighborhoodInformation, layout *p4nodes.BKAlignedLayout) func github.com/d2lang/elk-go/internal/layered/p5edges.FinalizeSplineBendpoints(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/p5edges.(*OrthogonalEdgeRouter).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p5edges.(*OrthogonalEdgeRouter).ProcessorConfiguration(arena *LGraphArena, graphID LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p5edges.(*PolylineEdgeRouter).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p5edges.(*PolylineEdgeRouter).ProcessorConfiguration(arena *LGraphArena, graphID LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p5edges.(*SplineEdgeRouter).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p5edges.(*SplineEdgeRouter).ProcessorConfiguration(arena *LGraphArena, graphID LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p5edges/orthogonal.(*Generator).RouteEdges(arena *LGraphArena, graphID LGraphID, sourceNodes []LNodeID, sourceLayerIndex int, targetNodes []LNodeID, startPosition float64) int
( LGraphID) Index() int func (*ElkGraphImporter).ImportGraph(parent basegraph.NodeID) (*LGraphArena, LGraphID, error) func (*LGraphArena).AddGraph() LGraphID func (*LGraphArena).NodeGraph(nodeID LNodeID) LGraphID func github.com/d2lang/elk-go/internal/layered/components.(*ComponentsProcessor).Split(arena *LGraphArena, graphID LGraphID) ([]LGraphID, error) func BasePipelineConfiguration(arena *LGraphArena, graphID LGraphID) PipelineConfiguration func ConfigureGraphProperties(arena *LGraphArena, graphID LGraphID) func HorizontalSpacingByType(arena *LGraphArena, graphID LGraphID, first, second NodeType) float64 func VerticalSpacingByType(arena *LGraphArena, graphID LGraphID, first, second NodeType) float64 func (*CompoundGraphPostprocessor).Process(arena *LGraphArena, topGraph LGraphID) error func (*CompoundGraphPreprocessor).Process(arena *LGraphArena, topGraph LGraphID) error func ConfiguredProcessor.Process(arena *LGraphArena, graphID LGraphID) error func ConfiguredProcessor.ProcessorConfiguration(arena *LGraphArena, graphID LGraphID) ProcessorConfiguration func (*ElkGraphLayoutTransferrer).ApplyLayout(arena *LGraphArena, topGraph LGraphID) error func LayoutProcessor.Process(arena *LGraphArena, graphID LGraphID) error func (*LGraphArena).AddLayer(graphID LGraphID) LayerID func (*LGraphArena).AddLayerToGraph(graphID LGraphID) LayerID func (*LGraphArena).AddNode(graphID LGraphID) LNodeID func (*LGraphArena).CreateExternalPortDummy(propertyHolder *basegraph.PropertyMap, portConstraints PortConstraints, portSide PortSide, netFlow int, portNodeSize *geometry.Point, portPosition *geometry.Point, portSize geometry.Point, layoutDirection Direction, graphID LGraphID) LNodeID func (*LGraphArena).ExternalPortPosition(graphID LGraphID, dummyID LNodeID, portWidth, portHeight float64) geometry.Point func (*LGraphArena).Graph(id LGraphID) *LGraph func (*LGraphArena).GraphActualSize(graphID LGraphID) geometry.Point func (*LGraphArena).GraphAllNodes(graphID LGraphID) []LNodeID func (*LGraphArena).ProvideCollectorPort(graphID LGraphID, nodeID LNodeID, portType PortType, side PortSide) LPortID func (*LGraphArena).ReverseEdge(graphID LGraphID, edgeID LEdgeID, adaptPorts bool) func github.com/d2lang/elk-go/internal/layered/components.MakeLayerless(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/components.(*ComponentsProcessor).Combine(arena *LGraphArena, components []LGraphID, target LGraphID) error func github.com/d2lang/elk-go/internal/layered/components.(*ComponentsProcessor).Combine(arena *LGraphArena, components []LGraphID, target LGraphID) error func github.com/d2lang/elk-go/internal/layered/components.(*ComponentsProcessor).Split(arena *LGraphArena, graphID LGraphID) ([]LGraphID, error) func github.com/d2lang/elk-go/internal/layered/intermediate.CalculateCommentNodeMargins(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.CalculateInnermostNodeMargins(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.CalculateLayerSizesAndGraphHeight(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.CompactHorizontally(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.InsertLabelDummies(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.JoinLongEdges(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.ManageEndNodePortLabels(_ *LGraphArena, _ LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.MergeHyperedgeDummies(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.PositionHierarchicalPorts(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.PositionInteractiveExternalPorts(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.PostprocessComments(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.PostprocessEndLabels(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.PostprocessNorthSouthPorts(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.PostprocessPartitions(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.PostprocessSelfLoops(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.PrepareNodePlacementRepeat(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.PreprocessComments(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.PreprocessEndLabels(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.PreprocessNorthSouthPorts(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.PreprocessPartitions(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.PreprocessSelfLoops(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.ProcessConstraints(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.ProcessHierarchicalPortConstraints(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.ProcessHighDegreeNodes(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.ProcessHypernodes(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.ProcessInLayerConstraints(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.ProcessInvertedPorts(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.ProcessLabelAndNodeSizes(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.ProcessLayerConstraintsAfterLayering(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.ProcessLayerConstraintsBeforeLayering(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.ProcessPartitionsBeforeLayering(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.ProcessPortSides(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.ProcessSemiInteractiveCrossing(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.PromoteNodes(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.RemoveLabelDummies(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.ResizeHierarchicalNode(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.RestoreReversedEdges(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.RestoreSelfLoopPorts(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.ReverseConstraintEdges(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.RouteHierarchicalPorts(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.RouteSelfLoops(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.SelectLabelSides(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.SizeHierarchicalPortDummies(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.SortByInputModel(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.SortEndLabels(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.SortPortLists(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.SplitLongEdges(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.SwitchLabelDummies(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate.TransformGraph(arena *LGraphArena, graphID LGraphID, mode intermediate.GraphTransformMode) func github.com/d2lang/elk-go/internal/layered/intermediate.(*HyperedgeDummyMerger).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.(*LayerConstraintPostprocessor).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate.(*LayerConstraintPreprocessor).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/intermediate/unzipping.AlternateLayers(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate/wrapping.InsertBreakingPoints(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate/wrapping.InsertDummies(arena *LGraphArena, graphID LGraphID, originalEdge LEdgeID, offsetFirstInLayerDummy int) []LEdgeID func github.com/d2lang/elk-go/internal/layered/intermediate/wrapping.NewGraphStats(arena *LGraphArena, graphID LGraphID) *wrapping.GraphStats func github.com/d2lang/elk-go/internal/layered/intermediate/wrapping.ProcessBreakingPoints(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate/wrapping.RemoveBreakingPoints(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/intermediate/wrapping.WrapSingleEdgeGraph(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/p1cycles.(*DepthFirstCycleBreaker).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p1cycles.(*DepthFirstCycleBreaker).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p1cycles.(*DFSNodeOrderCycleBreaker).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p1cycles.(*DFSNodeOrderCycleBreaker).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p1cycles.(*GreedyCycleBreaker).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p1cycles.(*GreedyCycleBreaker).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p1cycles.(*InteractiveCycleBreaker).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p1cycles.(*InteractiveCycleBreaker).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p1cycles.(*ModelOrderCycleBreaker).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p1cycles.(*ModelOrderCycleBreaker).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p1cycles.(*SCCNodeTypeCycleBreaker).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p1cycles.(*SCCNodeTypeCycleBreaker).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p2layers.(*CoffmanGrahamLayerer).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p2layers.(*CoffmanGrahamLayerer).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p2layers.(*InteractiveLayerer).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p2layers.(*InteractiveLayerer).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p2layers.(*LongestPathLayerer).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p2layers.(*LongestPathLayerer).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p2layers.(*MinWidthLayerer).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p2layers.(*MinWidthLayerer).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p2layers.(*NetworkSimplexLayerer).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p2layers.(*NetworkSimplexLayerer).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p2layers.(*StretchWidthLayerer).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p2layers.(*StretchWidthLayerer).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p3order.GreedySwitchIntermediateForGraph(arena *LGraphArena, graphID LGraphID) (IntermediateProcessorStrategy, bool) func github.com/d2lang/elk-go/internal/layered/p3order.NewGraphInfoHolder(arena *LGraphArena, graphID LGraphID, crossMinType p3order.CrossMinType, graphs []*p3order.GraphInfoHolder, random *javacompat.Random) (*p3order.GraphInfoHolder, error) func github.com/d2lang/elk-go/internal/layered/p3order.ProcessGreedySwitchIntermediate(arena *LGraphArena, graphID LGraphID, strategy IntermediateProcessorStrategy) error func github.com/d2lang/elk-go/internal/layered/p3order.(*InteractiveCrossingMinimizer).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p3order.(*InteractiveCrossingMinimizer).ProcessorConfiguration(arena *LGraphArena, graphID LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p3order.(*LayerSweepCrossingMinimizer).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p3order.(*LayerSweepCrossingMinimizer).ProcessHierarchy(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p3order.(*LayerSweepCrossingMinimizer).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p3order.(*LayerSweepTypeDecider).UseBottomUp(arena *LGraphArena, graphID LGraphID, parent *LNodeID, crossMinDeterministic bool, order [][]LNodeID) bool func github.com/d2lang/elk-go/internal/layered/p3order.(*NoCrossingMinimizer).Process(*LGraphArena, LGraphID) error func github.com/d2lang/elk-go/internal/layered/p3order.(*NoCrossingMinimizer).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p3order.(*SweepCopy).TransferNodeAndPortOrdersToGraph(arena *LGraphArena, graphID LGraphID, setPortConstraints bool) func github.com/d2lang/elk-go/internal/layered/p4nodes.BuildNeighborhoodInformation(arena *LGraphArena, graphID LGraphID) *p4nodes.NeighborhoodInformation func github.com/d2lang/elk-go/internal/layered/p4nodes.NewBKAlignedLayout(graphID LGraphID, nodeCount int, vertical p4nodes.VerticalDirection, horizontal p4nodes.HorizontalDirection) *p4nodes.BKAlignedLayout func github.com/d2lang/elk-go/internal/layered/p4nodes.NewBKAligner(arena *LGraphArena, graphID LGraphID, info *p4nodes.NeighborhoodInformation) *p4nodes.BKAligner func github.com/d2lang/elk-go/internal/layered/p4nodes.NewBKCompactor(arena *LGraphArena, graphID LGraphID) *p4nodes.BKCompactor func github.com/d2lang/elk-go/internal/layered/p4nodes.PlaceBrandesKoepf(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/p4nodes.(*BKCompactor).HorizontalCompaction(arena *LGraphArena, graphID LGraphID, info *p4nodes.NeighborhoodInformation, layout *p4nodes.BKAlignedLayout) func github.com/d2lang/elk-go/internal/layered/p4nodes.BrandesKoepfPlacer.Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p4nodes.BrandesKoepfPlacer.ProcessorConfiguration(arena *LGraphArena, graphID LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p4nodes.(*InteractiveNodePlacer).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p4nodes.(*InteractiveNodePlacer).ProcessorConfiguration(arena *LGraphArena, graphID LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p4nodes.(*LinearSegmentsNodePlacer).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p4nodes.(*LinearSegmentsNodePlacer).ProcessorConfiguration(arena *LGraphArena, graphID LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p4nodes.(*NetworkSimplexPlacer).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p4nodes.(*NetworkSimplexPlacer).ProcessorConfiguration(arena *LGraphArena, graphID LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p4nodes.(*SimpleNodePlacer).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p4nodes.(*SimpleNodePlacer).ProcessorConfiguration(arena *LGraphArena, graphID LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p5edges.FinalizeSplineBendpoints(arena *LGraphArena, graphID LGraphID) func github.com/d2lang/elk-go/internal/layered/p5edges.(*OrthogonalEdgeRouter).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p5edges.(*OrthogonalEdgeRouter).ProcessorConfiguration(arena *LGraphArena, graphID LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p5edges.(*PolylineEdgeRouter).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p5edges.(*PolylineEdgeRouter).ProcessorConfiguration(arena *LGraphArena, graphID LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p5edges.(*SplineEdgeRouter).Process(arena *LGraphArena, graphID LGraphID) error func github.com/d2lang/elk-go/internal/layered/p5edges.(*SplineEdgeRouter).ProcessorConfiguration(arena *LGraphArena, graphID LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p5edges/orthogonal.(*Generator).RouteEdges(arena *LGraphArena, graphID LGraphID, sourceNodes []LNodeID, sourceLayerIndex int, targetNodes []LNodeID, startPosition float64) int
ID int Position geometry.Point Properties basegraph.PropertyMap Size geometry.Point Text string func (*LGraphArena).Label(id LLabelID) *LLabel
( LLabelID) Index() int func (*LGraphArena).AddLabel(text string) LLabelID func (*LGraphArena).Label(id LLabelID) *LLabel func github.com/d2lang/elk-go/internal/layered/intermediate/loops.(*Labels).Add(arena *LGraphArena, ids []LLabelID)
( LNodeID) Index() int func (*LGraphArena).AddNode(graphID LGraphID) LNodeID func (*LGraphArena).CreateExternalPortDummy(propertyHolder *basegraph.PropertyMap, portConstraints PortConstraints, portSide PortSide, netFlow int, portNodeSize *geometry.Point, portPosition *geometry.Point, portSize geometry.Point, layoutDirection Direction, graphID LGraphID) LNodeID func (*LGraphArena).EdgeOtherNode(edgeID LEdgeID, nodeID LNodeID) LNodeID func (*LGraphArena).EdgeSourceNode(edgeID LEdgeID) LNodeID func (*LGraphArena).EdgeTargetNode(edgeID LEdgeID) LNodeID func (*LGraphArena).GraphAllNodes(graphID LGraphID) []LNodeID func github.com/d2lang/elk-go/internal/layered/intermediate.LongEdgeTargetNode(arena *LGraphArena, portID LPortID) (LNodeID, bool, error) func github.com/d2lang/elk-go/internal/layered/intermediate.LongEdgeTargetNodePreprocessing(arena *LGraphArena, nodeID LNodeID) (map[LNodeID]int, error) func github.com/d2lang/elk-go/internal/layered/p3order.(*SweepCopy).Nodes() [][]LNodeID func HorizontalSpacing(arena *LGraphArena, first, second LNodeID) float64 func IndividualOrDefault(arena *LGraphArena, nodeID LNodeID, property *basegraph.Property[float64]) float64 func LNodeOrigin(id LNodeID) Origin func VerticalSpacing(arena *LGraphArena, first, second LNodeID) float64 func (*LGraphArena).CachePortSides(nodeID LNodeID) func (*LGraphArena).EdgeOtherNode(edgeID LEdgeID, nodeID LNodeID) LNodeID func (*LGraphArena).ExternalPortPosition(graphID LGraphID, dummyID LNodeID, portWidth, portHeight float64) geometry.Point func (*LGraphArena).InvalidatePortSideCache(nodeID LNodeID) func (*LGraphArena).IsDescendant(childID, parentID LNodeID) bool func (*LGraphArena).Node(id LNodeID) *LNode func (*LGraphArena).NodeBorderToContentCoordinates(nodeID LNodeID, horizontal, vertical bool) func (*LGraphArena).NodeConnectedEdges(nodeID LNodeID) []LEdgeID func (*LGraphArena).NodeGraph(nodeID LNodeID) LGraphID func (*LGraphArena).NodeIncomingEdges(nodeID LNodeID) []LEdgeID func (*LGraphArena).NodeIndexInLayer(nodeID LNodeID) int func (*LGraphArena).NodeOutgoingEdges(nodeID LNodeID) []LEdgeID func (*LGraphArena).NodePortSideView(nodeID LNodeID, side PortSide) []LPortID func (*LGraphArena).NodePortsOnSide(nodeID LNodeID, side PortSide) []LPortID func (*LGraphArena).ProvideCollectorPort(graphID LGraphID, nodeID LNodeID, portType PortType, side PortSide) LPortID func (*LGraphArena).RemoveNodeFromGraph(nodeID LNodeID) func (*LGraphArena).ResizeNode(nodeID LNodeID, newSize geometry.Point, movePorts, moveLabels bool) func (*LGraphArena).SetNodeLayer(nodeID LNodeID, layerID *LayerID) func (*LGraphArena).SetNodeLayerAt(nodeID LNodeID, layerID *LayerID, index int) func (*LGraphArena).SetPortNode(portID LPortID, nodeID *LNodeID) func github.com/d2lang/elk-go/internal/layered/intermediate.JoinLongEdgeAt(arena *LGraphArena, dummyID LNodeID, addUnnecessary bool) func github.com/d2lang/elk-go/internal/layered/intermediate.LongEdgeTargetNodePreprocessing(arena *LGraphArena, nodeID LNodeID) (map[LNodeID]int, error) func github.com/d2lang/elk-go/internal/layered/intermediate.SplitEdgeAtDummy(arena *LGraphArena, edgeID LEdgeID, dummyID LNodeID) LEdgeID func github.com/d2lang/elk-go/internal/layered/intermediate/loops.IndividualOrInherited(arena *LGraphArena, nodeID LNodeID, property basegraph.Property[float64]) float64 func github.com/d2lang/elk-go/internal/layered/intermediate/loops.Install(arena *LGraphArena, nodeID LNodeID) (*loops.Holder, error) func github.com/d2lang/elk-go/internal/layered/intermediate/loops.NeedsProcessing(arena *LGraphArena, nodeID LNodeID) bool func github.com/d2lang/elk-go/internal/layered/intermediate/preserveorder.NewNodeComparator(arena *LGraphArena, previousLayer []LNodeID, ordering OrderingStrategy, longEdgeOrder preserveorder.LongEdgeOrderingStrategy, beforePorts bool) *preserveorder.NodeComparator func github.com/d2lang/elk-go/internal/layered/intermediate/preserveorder.NewPortComparator(arena *LGraphArena, previousLayer []LNodeID, ordering OrderingStrategy, targetNodeModelOrder map[LNodeID]int, portModelOrder bool) *preserveorder.PortComparator func github.com/d2lang/elk-go/internal/layered/intermediate/preserveorder.NewPortComparator(arena *LGraphArena, previousLayer []LNodeID, ordering OrderingStrategy, targetNodeModelOrder map[LNodeID]int, portModelOrder bool) *preserveorder.PortComparator func github.com/d2lang/elk-go/internal/layered/intermediate/preserveorder.(*NodeComparator).Compare(first, second LNodeID) int func github.com/d2lang/elk-go/internal/layered/intermediate/wrapping.IsBreakingPointEnd(arena *LGraphArena, nodeID LNodeID) bool func github.com/d2lang/elk-go/internal/layered/intermediate/wrapping.IsBreakingPointStart(arena *LGraphArena, nodeID LNodeID) bool func github.com/d2lang/elk-go/internal/layered/p3order.InitializeAllCrossingsCounter(counter *p3order.AllCrossingsCounter, arena *LGraphArena, nodeOrder [][]LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.InitializeBarycenterPortDistributor(distributor *p3order.BarycenterPortDistributor, arena *LGraphArena, order [][]LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.InitializeForsterConstraintResolver(resolver *p3order.ForsterConstraintResolver, arena *LGraphArena, order [][]LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.InitializeGreedyPortDistributor(distributor *p3order.GreedyPortDistributor, arena *LGraphArena, order [][]LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.NewCrossingMatrixFiller(arena *LGraphArena, crossMinType p3order.CrossMinType, order [][]LNodeID, freeLayerIndex int, side p3order.CrossingCountSide) *p3order.CrossingMatrixFiller func github.com/d2lang/elk-go/internal/layered/p3order.NewForsterConstraintResolver(arena *LGraphArena, order [][]LNodeID) *p3order.ForsterConstraintResolver func github.com/d2lang/elk-go/internal/layered/p3order.NewNorthSouthEdgeNeighbouringNodeCrossingsCounter(arena *LGraphArena, layer []LNodeID) *p3order.NorthSouthEdgeNeighbouringNodeCrossingsCounter func github.com/d2lang/elk-go/internal/layered/p3order.NewSweepCopy(arena *LGraphArena, nodeOrder [][]LNodeID) *p3order.SweepCopy func github.com/d2lang/elk-go/internal/layered/p3order.NewSwitchDecider(arena *LGraphArena, freeLayerIndex int, order [][]LNodeID, filler *p3order.CrossingMatrixFiller, portPositions []int, holder *p3order.GraphInfoHolder, oneSided bool) *p3order.SwitchDecider func github.com/d2lang/elk-go/internal/layered/p3order.(*AllCrossingsCounter).CountAllCrossings(arena *LGraphArena, currentOrder [][]LNodeID) int func github.com/d2lang/elk-go/internal/layered/p3order.(*AllCrossingsCounter).InitAtEdgeLevel(arena *LGraphArena, layerIndex, nodeIndex, portIndex int, edgeID LEdgeID, nodeOrder [][]LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.(*AllCrossingsCounter).InitAtNodeLevel(arena *LGraphArena, layerIndex, nodeIndex int, nodeOrder [][]LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.(*AllCrossingsCounter).InitAtPortLevel(arena *LGraphArena, layerIndex, nodeIndex, portIndex int, nodeOrder [][]LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.(*BarycenterHeuristic).MinimizeCrossings(order [][]LNodeID, freeLayerIndex int, forwardSweep, firstSweep bool) bool func github.com/d2lang/elk-go/internal/layered/p3order.(*BarycenterHeuristic).MinimizeLayer(layer *[]LNodeID, preordered, randomize, forward bool) func github.com/d2lang/elk-go/internal/layered/p3order.(*BarycenterHeuristic).SetFirstLayerOrder(order [][]LNodeID, forward bool) bool func github.com/d2lang/elk-go/internal/layered/p3order.(*BarycenterPortDistributor).CalculatePortRanks(arena *LGraphArena, layer []LNodeID, portType PortType) func github.com/d2lang/elk-go/internal/layered/p3order.(*BarycenterPortDistributor).DistributePortsWhileSweeping(arena *LGraphArena, nodeOrder [][]LNodeID, currentIndex int, forward bool) bool func github.com/d2lang/elk-go/internal/layered/p3order.(*BarycenterPortDistributor).InitAtLayerLevel(layerIndex int, order [][]LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.(*BarycenterPortDistributor).InitAtNodeLevel(arena *LGraphArena, layerIndex, nodeIndex int, order [][]LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.(*BarycenterPortDistributor).InitAtPortLevel(arena *LGraphArena, layerIndex, nodeIndex, portIndex int, order [][]LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.(*CrossingMatrixFiller).GetCrossingMatrixEntry(arena *LGraphArena, upper, lower LNodeID) int func github.com/d2lang/elk-go/internal/layered/p3order.(*CrossingsCounter).CountCrossingsBetweenLayers(arena *LGraphArena, leftLayerNodes, rightLayerNodes []LNodeID) int func github.com/d2lang/elk-go/internal/layered/p3order.(*CrossingsCounter).CountInLayerCrossingsBetweenNodesInBothOrders(arena *LGraphArena, upperNode, lowerNode LNodeID, side PortSide) (int, int) func github.com/d2lang/elk-go/internal/layered/p3order.(*CrossingsCounter).CountInLayerCrossingsOnSide(arena *LGraphArena, nodes []LNodeID, side PortSide) int func github.com/d2lang/elk-go/internal/layered/p3order.(*CrossingsCounter).CountNorthSouthPortCrossingsInLayer(arena *LGraphArena, nodes []LNodeID) int func github.com/d2lang/elk-go/internal/layered/p3order.(*CrossingsCounter).InitForCountingBetween(arena *LGraphArena, leftLayerNodes, rightLayerNodes []LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.(*CrossingsCounter).InitPortPositionsForInLayerCrossings(arena *LGraphArena, nodes []LNodeID, side PortSide) []LPortID func github.com/d2lang/elk-go/internal/layered/p3order.(*CrossingsCounter).SwitchNodes(arena *LGraphArena, wasUpperNode, wasLowerNode LNodeID, side PortSide) func github.com/d2lang/elk-go/internal/layered/p3order.(*ForsterConstraintResolver).InitAtLayerLevel(layerIndex int, order [][]LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.(*ForsterConstraintResolver).InitAtNodeLevel(arena *LGraphArena, layerIndex, nodeIndex int, order [][]LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.(*ForsterConstraintResolver).ProcessConstraints(arena *LGraphArena, nodes *[]LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.(*GreedyPortDistributor).DistributePortsWhileSweeping(arena *LGraphArena, order [][]LNodeID, currentIndex int, forward bool) bool func github.com/d2lang/elk-go/internal/layered/p3order.(*GreedyPortDistributor).InitAtNodeLevel(arena *LGraphArena, layerIndex, nodeIndex int, order [][]LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.(*GreedySwitchHeuristic).InitAtLayerLevel(arena *LGraphArena, layerIndex int, order [][]LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.(*GreedySwitchHeuristic).MinimizeCrossings(order [][]LNodeID, freeLayerIndex int, forwardSweep, _ bool) bool func github.com/d2lang/elk-go/internal/layered/p3order.(*GreedySwitchHeuristic).SetFirstLayerOrder(order [][]LNodeID, forward bool) bool func github.com/d2lang/elk-go/internal/layered/p3order.(*LayerSweepTypeDecider).InitAtLayerLevel(arena *LGraphArena, layerIndex int, order [][]LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.(*LayerSweepTypeDecider).InitAtNodeLevel(arena *LGraphArena, layerIndex, nodeIndex int, order [][]LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.(*LayerSweepTypeDecider).UseBottomUp(arena *LGraphArena, graphID LGraphID, parent *LNodeID, crossMinDeterministic bool, order [][]LNodeID) bool func github.com/d2lang/elk-go/internal/layered/p3order.(*LayerSweepTypeDecider).UseBottomUp(arena *LGraphArena, graphID LGraphID, parent *LNodeID, crossMinDeterministic bool, order [][]LNodeID) bool func github.com/d2lang/elk-go/internal/layered/p3order.(*NorthSouthEdgeNeighbouringNodeCrossingsCounter).CountCrossings(arena *LGraphArena, upper, lower LNodeID) func github.com/d2lang/elk-go/internal/layered/p3order.(*SwitchDecider).NotifyOfSwitch(arena *LGraphArena, upper, lower LNodeID) func github.com/d2lang/elk-go/internal/layered/p4nodes.(*BKAlignedLayout).CheckSpaceAbove(arena *LGraphArena, blockRoot LNodeID, delta float64, info *p4nodes.NeighborhoodInformation) float64 func github.com/d2lang/elk-go/internal/layered/p4nodes.(*BKAlignedLayout).CheckSpaceBelow(arena *LGraphArena, blockRoot LNodeID, delta float64, info *p4nodes.NeighborhoodInformation) float64 func github.com/d2lang/elk-go/internal/layered/p4nodes.(*BKAlignedLayout).MaxY(arena *LGraphArena, nodeID LNodeID) float64 func github.com/d2lang/elk-go/internal/layered/p4nodes.(*BKAlignedLayout).MinY(arena *LGraphArena, nodeID LNodeID) float64 func github.com/d2lang/elk-go/internal/layered/p4nodes.(*BKAlignedLayout).ShiftBlock(arena *LGraphArena, rootID LNodeID, delta float64) func github.com/d2lang/elk-go/internal/layered/p4nodes.(*ThresholdStrategy).CalculateThreshold(arena *LGraphArena, layout *p4nodes.BKAlignedLayout, oldThreshold float64, blockRoot, currentNode LNodeID) float64 func github.com/d2lang/elk-go/internal/layered/p4nodes.(*ThresholdStrategy).FinishBlock(nodeID LNodeID) func github.com/d2lang/elk-go/internal/layered/p5edges/orthogonal.(*Generator).RouteEdges(arena *LGraphArena, graphID LGraphID, sourceNodes []LNodeID, sourceLayerIndex int, targetNodes []LNodeID, startPosition float64) int func github.com/d2lang/elk-go/internal/layered/p5edges/orthogonal.(*Generator).RouteEdges(arena *LGraphArena, graphID LGraphID, sourceNodes []LNodeID, sourceLayerIndex int, targetNodes []LNodeID, startPosition float64) int
const LongEdgeDummyNodeOver const LongEdgeDummyNodeUnder const LongEdgeEqual
( LPortID) Index() int func (*LGraphArena).AddPort() LPortID func (*LGraphArena).EdgeOtherPort(edgeID LEdgeID, portID LPortID) LPortID func (*LGraphArena).NodePortSideView(nodeID LNodeID, side PortSide) []LPortID func (*LGraphArena).NodePortsOnSide(nodeID LNodeID, side PortSide) []LPortID func (*LGraphArena).ProvideCollectorPort(graphID LGraphID, nodeID LNodeID, portType PortType, side PortSide) LPortID func github.com/d2lang/elk-go/internal/layered/p3order.(*CrossingsCounter).InitPortPositionsForInLayerCrossings(arena *LGraphArena, nodes []LNodeID, side PortSide) []LPortID func LPortOrigin(id LPortID) Origin func (*LGraphArena).EdgeOtherPort(edgeID LEdgeID, portID LPortID) LPortID func (*LGraphArena).Port(id LPortID) *LPort func (*LGraphArena).PortConnectedEdges(portID LPortID) []LEdgeID func (*LGraphArena).SetEdgeSource(edgeID LEdgeID, portID *LPortID) func (*LGraphArena).SetEdgeTarget(edgeID LEdgeID, portID *LPortID) func (*LGraphArena).SetEdgeTargetAt(edgeID LEdgeID, portID *LPortID, index int) func (*LGraphArena).SetPortNode(portID LPortID, nodeID *LNodeID) func (*LGraphArena).SetPortSide(portID LPortID, side PortSide) func github.com/d2lang/elk-go/internal/layered/intermediate.LongEdgeTargetNode(arena *LGraphArena, portID LPortID) (LNodeID, bool, error) func github.com/d2lang/elk-go/internal/layered/intermediate.SetPortSide(arena *LGraphArena, portID LPortID) func github.com/d2lang/elk-go/internal/layered/intermediate/preserveorder.(*PortComparator).Compare(firstID, secondID LPortID) int func github.com/d2lang/elk-go/internal/layered/p3order.(*CrossingsCounter).CountCrossingsBetweenPortsInBothOrders(arena *LGraphArena, upperPort, lowerPort LPortID) (int, int) func github.com/d2lang/elk-go/internal/layered/p3order.(*CrossingsCounter).SwitchPorts(arena *LGraphArena, topPort, bottomPort LPortID) func github.com/d2lang/elk-go/internal/layered/p4nodes.(*BKAlignedLayout).CalculateDelta(arena *LGraphArena, sourceID, targetID LPortID) float64
NodeFlexibility matches ELK 0.8.1's NetworkSimplexPlacer flexibility levels. Declaration order is source-significant. ( NodeFlexibility) IsFlexiblePorts() bool ( NodeFlexibility) IsFlexibleSize() bool ( NodeFlexibility) IsFlexibleSizeWhereSpacePermits() bool const NodeFlexibilityNone const NodeFlexibilityPortPosition const NodeFlexibilitySize const NodeFlexibilitySizeWhereSpacePermits
NodeType is the exact ELK 0.8.1 dummy-node classification. Its declaration order is significant: spacing tables index directly by this value. ( NodeType) String() string NodeType : expvar.Var NodeType : fmt.Stringer func HorizontalSpacingByType(arena *LGraphArena, graphID LGraphID, first, second NodeType) float64 func VerticalSpacingByType(arena *LGraphArena, graphID LGraphID, first, second NodeType) float64 const BreakingPointNode const ExternalPortNode const LabelNode const LongEdgeNode const NonShiftingPlaceholderNode const NormalNode const NorthSouthPortNode const PlaceholderNode
func github.com/d2lang/elk-go/internal/layered/intermediate/preserveorder.NewNodeComparator(arena *LGraphArena, previousLayer []LNodeID, ordering OrderingStrategy, longEdgeOrder preserveorder.LongEdgeOrderingStrategy, beforePorts bool) *preserveorder.NodeComparator func github.com/d2lang/elk-go/internal/layered/intermediate/preserveorder.NewPortComparator(arena *LGraphArena, previousLayer []LNodeID, ordering OrderingStrategy, targetNodeModelOrder map[LNodeID]int, portModelOrder bool) *preserveorder.PortComparator const OrderingNodesAndEdges const OrderingNone const OrderingPreferEdges const OrderingPreferNodes
Edge basegraph.EdgeID Kind OriginKind LEdge LEdgeID LNode LNodeID LPort LPortID Label basegraph.LabelID Node basegraph.NodeID Port basegraph.PortID func EdgeOrigin(id basegraph.EdgeID) Origin func LabelOrigin(id basegraph.LabelID) Origin func LEdgeOrigin(id LEdgeID) Origin func LNodeOrigin(id LNodeID) Origin func LPortOrigin(id LPortID) Origin func NodeOrigin(id basegraph.NodeID) Origin func PortOrigin(id basegraph.PortID) Origin
OriginKind and Origin preserve the exact original graph element behind an internal LGraph element. The extra L* alternatives are used by dummy nodes. const OriginEdge const OriginLabel const OriginLEdge const OriginLNode const OriginLPort const OriginNode const OriginPort
func (*ProcessorConfiguration).AddAfter(phase Phase, processor IntermediateProcessorStrategy) *ProcessorConfiguration func (*ProcessorConfiguration).AddBefore(phase Phase, processor IntermediateProcessorStrategy) *ProcessorConfiguration const PhaseCycleBreaking const PhaseEdgeRouting const PhaseLayering const PhaseNodeOrdering const PhaseNodePlacement
Intermediates ProcessorConfiguration Phases PhaseStrategies func BasePipelineConfiguration(arena *LGraphArena, graphID LGraphID) PipelineConfiguration
( PortConstraints) IsOrderFixed() bool ( PortConstraints) IsPositionFixed() bool ( PortConstraints) IsRatioFixed() bool ( PortConstraints) IsSideFixed() bool func (*LGraphArena).CreateExternalPortDummy(propertyHolder *basegraph.PropertyMap, portConstraints PortConstraints, portSide PortSide, netFlow int, portNodeSize *geometry.Point, portPosition *geometry.Point, portSize geometry.Point, layoutDirection Direction, graphID LGraphID) LNodeID const PortConstraintsFixedOrder const PortConstraintsFixedPosition const PortConstraintsFixedRatio const PortConstraintsFixedSide const PortConstraintsFree const PortConstraintsUndefined
PortSide matches org.eclipse.elk.core.options.PortSide's ordinal order. ( PortSide) Opposed() PortSide ( PortSide) String() string PortSide : expvar.Var PortSide : fmt.Stringer func DirectionPortSide(direction Direction) PortSide func ParsePortSide(value string) (PortSide, bool) func PortSide.Opposed() PortSide func github.com/d2lang/elk-go/internal/layered/intermediate/loops.(*Edge).LabelSide() PortSide func github.com/d2lang/elk-go/internal/layered/intermediate/loops.(*HyperLoop).PortSides() []PortSide func github.com/d2lang/elk-go/internal/layered/intermediate/loops/ordering.SortedTwoSideLoopPortSides(loop *loops.HyperLoop) [2]PortSide func (*LGraphArena).CreateExternalPortDummy(propertyHolder *basegraph.PropertyMap, portConstraints PortConstraints, portSide PortSide, netFlow int, portNodeSize *geometry.Point, portPosition *geometry.Point, portSize geometry.Point, layoutDirection Direction, graphID LGraphID) LNodeID func (*LGraphArena).NodePortSideView(nodeID LNodeID, side PortSide) []LPortID func (*LGraphArena).NodePortsOnSide(nodeID LNodeID, side PortSide) []LPortID func (*LGraphArena).ProvideCollectorPort(graphID LGraphID, nodeID LNodeID, portType PortType, side PortSide) LPortID func (*LGraphArena).SetPortSide(portID LPortID, side PortSide) func github.com/d2lang/elk-go/internal/layered/intermediate/loops.(*HyperLoop).HasPortsOnSide(side PortSide) bool func github.com/d2lang/elk-go/internal/layered/intermediate/loops.(*HyperLoop).SetRoutingSlot(side PortSide, slot int) func github.com/d2lang/elk-go/internal/layered/p3order.(*CrossingsCounter).CountInLayerCrossingsBetweenNodesInBothOrders(arena *LGraphArena, upperNode, lowerNode LNodeID, side PortSide) (int, int) func github.com/d2lang/elk-go/internal/layered/p3order.(*CrossingsCounter).CountInLayerCrossingsOnSide(arena *LGraphArena, nodes []LNodeID, side PortSide) int func github.com/d2lang/elk-go/internal/layered/p3order.(*CrossingsCounter).InitPortPositionsForInLayerCrossings(arena *LGraphArena, nodes []LNodeID, side PortSide) []LPortID func github.com/d2lang/elk-go/internal/layered/p3order.(*CrossingsCounter).SwitchNodes(arena *LGraphArena, wasUpperNode, wasLowerNode LNodeID, side PortSide) const EastSide const NorthSide const SouthSide const UndefinedSide const WestSide
const PortSortingInputOrder const PortSortingPortDegree
func (*LGraphArena).ProvideCollectorPort(graphID LGraphID, nodeID LNodeID, portType PortType, side PortSide) LPortID func github.com/d2lang/elk-go/internal/layered/p3order.(*BarycenterPortDistributor).CalculatePortRanks(arena *LGraphArena, layer []LNodeID, portType PortType) const PortTypeInput const PortTypeOutput const PortTypeUndefined
ProcessorConfiguration has six slots: before each of the five phases and one after edge routing. (*ProcessorConfiguration) AddAfter(phase Phase, processor IntermediateProcessorStrategy) *ProcessorConfiguration (*ProcessorConfiguration) AddAll(other ProcessorConfiguration) *ProcessorConfiguration (*ProcessorConfiguration) AddBefore(phase Phase, processor IntermediateProcessorStrategy) *ProcessorConfiguration (*ProcessorConfiguration) Slot(slot int) []IntermediateProcessorStrategy func GreedyCycleConfiguration() ProcessorConfiguration func NetworkSimplexLayeringConfiguration() ProcessorConfiguration func ConfiguredProcessor.ProcessorConfiguration(arena *LGraphArena, graphID LGraphID) ProcessorConfiguration func (*ProcessorConfiguration).AddAfter(phase Phase, processor IntermediateProcessorStrategy) *ProcessorConfiguration func (*ProcessorConfiguration).AddAll(other ProcessorConfiguration) *ProcessorConfiguration func (*ProcessorConfiguration).AddBefore(phase Phase, processor IntermediateProcessorStrategy) *ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p1cycles.(*DepthFirstCycleBreaker).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p1cycles.(*DFSNodeOrderCycleBreaker).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p1cycles.(*GreedyCycleBreaker).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p1cycles.(*InteractiveCycleBreaker).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p1cycles.(*ModelOrderCycleBreaker).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p1cycles.(*SCCNodeTypeCycleBreaker).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p2layers.(*CoffmanGrahamLayerer).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p2layers.(*InteractiveLayerer).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p2layers.(*LongestPathLayerer).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p2layers.(*MinWidthLayerer).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p2layers.(*NetworkSimplexLayerer).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p2layers.(*StretchWidthLayerer).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p3order.(*InteractiveCrossingMinimizer).ProcessorConfiguration(arena *LGraphArena, graphID LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p3order.(*LayerSweepCrossingMinimizer).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p3order.(*NoCrossingMinimizer).ProcessorConfiguration(_ *LGraphArena, _ LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p4nodes.BrandesKoepfPlacer.ProcessorConfiguration(arena *LGraphArena, graphID LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p4nodes.(*InteractiveNodePlacer).ProcessorConfiguration(arena *LGraphArena, graphID LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p4nodes.(*LinearSegmentsNodePlacer).ProcessorConfiguration(arena *LGraphArena, graphID LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p4nodes.(*NetworkSimplexPlacer).ProcessorConfiguration(arena *LGraphArena, graphID LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p4nodes.(*SimpleNodePlacer).ProcessorConfiguration(arena *LGraphArena, graphID LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p5edges.(*OrthogonalEdgeRouter).ProcessorConfiguration(arena *LGraphArena, graphID LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p5edges.(*PolylineEdgeRouter).ProcessorConfiguration(arena *LGraphArena, graphID LGraphID) ProcessorConfiguration func github.com/d2lang/elk-go/internal/layered/p5edges.(*SplineEdgeRouter).ProcessorConfiguration(arena *LGraphArena, graphID LGraphID) ProcessorConfiguration func (*ProcessorConfiguration).AddAll(other ProcessorConfiguration) *ProcessorConfiguration
SplineCompactionSegment preserves the SplineSegment state consumed by HorizontalGraphCompactor between phase 5 and final spline bend-point calculation. Control-point chains alone cannot recover a straight segment's bounding box or distinguish it from a one-control-point sloppy curve. BoundingBox geometry.Rectangle Edge LEdgeID NormalSource bool NormalTarget bool Rank int SourcePort LPortID SourceY float64 Straight bool TargetPort LPortID TargetY float64 WestOfFirstLayer bool XDelta float64
const SplineRoutingConservative const SplineRoutingConservativeSoft const SplineRoutingSloppy
const ValidifyGreedy const ValidifyLookBack const ValidifyNo
const WrappingMultiEdge const WrappingOff const WrappingSingleEdge
Package-Level Functions (total 26)
ApplySpacingBaseValue reproduces LayeredSpacings.withBaseValue. Explicit values remain authoritative; all absent dependent spacings are scaled by their ELK 0.8.1 default-to-nodeNode-default ratio.
ConfigureGraphProperties applies GraphConfigurator's non-pipeline setup.
func HorizontalSpacing(arena *LGraphArena, first, second LNodeID) float64
func HorizontalSpacingByType(arena *LGraphArena, graphID LGraphID, first, second NodeType) float64
IndividualOrDefault exposes LayeredSpacings.getIndividualOrDefault to source-shaped phase implementations.
Parse helpers keep the importer explicit and avoid relying on Go map or reflection behavior for option identity.
RegisterOptions installs the ELK Layered 0.8.1 metadata used by the native provider. It is intentionally idempotent with the core registry: generated LayeredOptions re-export a number of CoreOptions under the same identifier.
func VerticalSpacing(arena *LGraphArena, first, second LNodeID) float64
func VerticalSpacingByType(arena *LGraphArena, graphID LGraphID, first, second NodeType) float64
Package-Level Variables (total 178)
Core options inherited by ELK Layered. Defaults are the effective Layered 0.8.1 defaults, not the generic core metadata defaults.
Layered strategy options.
ELK 0.8.1 intentionally gives both properties the same key. Crossing minimization observes them sequentially, so "fixing" the typo changes random-number consumption and layout output.
Priorities.
Spacing options. The `spacing.*BetweenLayers` aliases accepted by elkjs are resolved by the metadata registry before import.
Package-Level Constants (total 251)
const EastSide PortSide = 2
const LabelNode NodeType = 4
const NormalNode NodeType = 0
const NorthSide PortSide = 1
const PhaseLayering Phase = 1
const SouthSide PortSide = 3
const WestSide PortSide = 4