public void SaveGraphToFile(StateMachineGraphData data, int width, int height, string filename) { Graph gleeGraph = CreateGraph(data); var renderer = new GraphRenderer(gleeGraph); renderer.CalculateLayout(); var bitmap = new Bitmap(width, height, PixelFormat.Format32bppArgb); renderer.Render(bitmap); Trace.WriteLine("Saving graph to " + filename); bitmap.Save(filename, ImageFormat.Png); }
public Graph CreateGraph(StateMachineGraphData data) { var graph = new AdjacencyGraph <Vertex, Edge <Vertex> >(); data.Vertices.Each(x => graph.AddVertex(x)); data.Edges.Each(x => graph.AddEdge(new Edge <Vertex>(x.From, x.To))); GleeGraphPopulator <Vertex, Edge <Vertex> > glee = graph.CreateGleePopulator(); glee.NodeAdded += NodeStyler; glee.EdgeAdded += EdgeStyler; glee.Compute(); Graph gleeGraph = glee.GleeGraph; return(gleeGraph); }
public override void GetData(object target, Stream outgoingData) { if (target == null) { return; } Type targetType = target.GetType(); if (!typeof(StateMachine).IsAssignableFrom(targetType)) { return; } Type machineType = targetType.GetDeclaredGenericArguments().First(); var args = new[] { target }; StateMachineGraphData data = this.FastInvoke <StateMachineVisualizerObjectSource, StateMachineGraphData>(new[] { machineType }, "CreateStateMachineGraph", args); base.GetData(data, outgoingData); }
public static void TestShowVisualizer(StateMachineGraphData data) { var visualizerHost = new VisualizerDevelopmentHost(data, typeof(StateMachineDebugVisualizer)); visualizerHost.ShowVisualizer(); }