Remove End-targeting exception from forward highway detection
DetectHighwayGroups had a special case for End nodes that included forward End-targeting edges in highway grouping even when they didn't share a corridor. This caused edges at different Y levels to be truncated to a shared collector, destroying their individual paths. End-targeting edges are already handled by DetectEndSinkGroups (which now correctly skips groups with no horizontal overlap). Forward highway detection should only apply to backward (repeat) edges. All 5 End-targeting edges now render independently with full paths. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1253,9 +1253,7 @@ public sealed class WorkflowRenderSvgRenderer
|
|||||||
IsBackward = edge.Sections.First().EndPoint.X < edge.Sections.First().StartPoint.X,
|
IsBackward = edge.Sections.First().EndPoint.X < edge.Sections.First().StartPoint.X,
|
||||||
Span = ComputePrimarySpan(edge),
|
Span = ComputePrimarySpan(edge),
|
||||||
})
|
})
|
||||||
.Where(entry =>
|
.Where(entry => entry.Span >= 96d)
|
||||||
entry.Span >= 96d
|
|
||||||
|| string.Equals(entry.TargetNode.Kind, "End", StringComparison.OrdinalIgnoreCase))
|
|
||||||
.GroupBy(
|
.GroupBy(
|
||||||
entry => $"{entry.Edge.TargetNodeId}|{entry.FamilyKey}|{(entry.IsBackward ? "back" : "forward")}",
|
entry => $"{entry.Edge.TargetNodeId}|{entry.FamilyKey}|{(entry.IsBackward ? "back" : "forward")}",
|
||||||
StringComparer.Ordinal)
|
StringComparer.Ordinal)
|
||||||
@@ -1279,8 +1277,7 @@ public sealed class WorkflowRenderSvgRenderer
|
|||||||
group.First().FamilyKey,
|
group.First().FamilyKey,
|
||||||
isBackward);
|
isBackward);
|
||||||
})
|
})
|
||||||
.Where(candidate => candidate.IsBackward
|
.Where(candidate => candidate.IsBackward)
|
||||||
|| string.Equals(candidate.TargetNode.Kind, "End", StringComparison.OrdinalIgnoreCase))
|
|
||||||
.Where(candidate =>
|
.Where(candidate =>
|
||||||
candidate.EdgeIds.Count >= (candidate.IsBackward ? 3 : 2))
|
candidate.EdgeIds.Count >= (candidate.IsBackward ? 3 : 2))
|
||||||
.ToArray();
|
.ToArray();
|
||||||
|
|||||||
Reference in New Issue
Block a user