using Microsoft.Msagl.Drawing; namespace FlowForge; public static class GraphVisualizer { public static Graph ConvertToMsaglGraph(FlowGraph? flowGraph) { Graph msaglGraph = new Graph(); foreach (var vertex in flowGraph.Graph.Vertices) { var msaglNode = msaglGraph.AddNode(vertex.Id); msaglNode.LabelText = vertex.Label; // Use the label from FlowNode } foreach (var edge in flowGraph.Graph.Edges) { //if(edge.IsBackwards) continue; var msaglEdge = msaglGraph.AddEdge(edge.Source.Id, edge.Target.Id); if (edge.IsBackwards) { msaglEdge.LabelText = $"{0}/{edge.Residual}"; msaglEdge.Attr.Color = Color.Gray; } else { msaglEdge.LabelText = $"{edge.MaxFlow-edge.Residual}/{edge.MaxFlow}"; if (edge.MaxFlow-edge.Residual > 0) { msaglEdge.Attr.Color = Color.Orange; } } } return msaglGraph; } }