private Positioned PositionSegment(IRoutingSegment segment) { var lines = new List <string> { "Route: " + (segment.Name ?? "<anonymous>") }; var longestLine = lines.Select(l => l.Length).Max(); var positioned = new Positioned { Width = longestLine * 6.5f, Height = TextHeight * (lines.Count + 2), DrawAction = (d, p) => { if (p.Siblings.Count > 0) { var maxSiblingX = p.Siblings.Select(s => s.X.Value).Max(); DrawLine(d, p.X + p.Width, p.Y + TextHeight, maxSiblingX, p.Y + TextHeight, "segment"); } DrawBox(d, p.X, p.Y, p.Width, lines, "segment", 2f); } }; if (segment.Middleware != null) { positioned.Siblings = segment .Middleware .Select(PositionMiddleware) .ToList(); } return(positioned); }
private void Dump(IRoutingSegment segment, string indent) { Debug.WriteLine(indent + "has route \"" + (segment.Name ?? "<anonymous>") + "\""); indent += " "; foreach (var middleware in segment.Middleware) { Dump(middleware, indent); } }