public virtual void Save(Stream s, IGraph <IVisual, IVisualEdge> source, IGraphSceneLayout <IVisual, IVisualEdge> layout) { var graph = source.Source <IVisual, IVisualEdge, IThing, ILink> (); if (graph != null) { var serializer = new VisualThingXmlSerializer { VisualThingGraph = graph, Layout = layout, VisualsCollection = source }; serializer.Write(s); } }
public virtual XElement Write(GraphSceneDisplayMemento display) { var result = new XElement(NodeNames.Display); if (display.Iori != null) { result.Add(new XElement(NodeNames.Source, Write(NodeNames.File, display.Iori.ToString()))); } else { // TODO: write MemoryThingGraph } var graph = display.Scene.Graph.Source <IVisual, IVisualEdge, IThing, ILink> (); if (graph != null) { var serializer = new VisualThingXmlSerializer(); serializer.VisualThingGraph = graph; serializer.Layout = display.Layout; serializer.Write(display.Scene.Graph); result.Add(serializer.XThings); } var sceneInfoSerializer = new SceneInfoXmlSerializer(); result.Add(sceneInfoSerializer.Write(display.Info)); result.Add(new XElement(NodeNames.Viewport, Write(NodeNames.Offset, display.Offset), Write(NodeNames.ZoomState, display.ZoomState), Write(NodeNames.Zoom, display.Zoom))); // TODO: serialize Layout result.Add(new XElement(NodeNames.Layout, Write(NodeNames.StyleSheet, display.Layout.StyleSheet.Name))); var focused = display.Scene.Graph.ThingOf(display.Scene.Focused); if (focused != null) { result.Add(new XElement(NodeNames.Scene, Write(NodeNames.Focused, focused.Id.ToString("X")))); } return(result); }