DisplaysOfBackGraph <TItem, TEdge> (this IGraphSceneDisplayMesh <TItem, TEdge> mesh, IGraph <TItem, TEdge> graph) where TEdge : TItem, IEdge <TItem> { return(mesh.Displays .Join(mesh.ScenesOfBackGraph(graph), d => d.Data, s => s, (d, s) => d)); }
public virtual void Read(XElement parent, IGraphSceneDisplayMesh <IVisual, IVisualEdge> mesh) { var node = ReadElement(parent, NodeNames.Mesh); if (node == null) { return; } FileNames = ReadElements(ReadElement(node, NodeNames.Files), NodeNames.File) .Select(n => ReadString(n, NodeNames.Name)) .ToList(); Displays = new List <GraphSceneDisplayMemento> (); var displaySerializer = new GraphSceneDisplayXmlSerializer { Mesh = mesh }; foreach (var dnode in ReadElements(ReadElement(node, NodeNames.Displays), GraphSceneDisplayXmlSerializer.NodeNames.Display)) { var displayMemento = displaySerializer.ReadDisplay(dnode); Displays.Add(displayMemento); } }
public virtual XElement Write(IGraphSceneDisplayMesh <IVisual, IVisualEdge> mesh) { var result = new XElement(NodeNames.Mesh); var backHandler = mesh.BackHandler <IThing, ILink>(); var thingGraphs = new XElement(NodeNames.Files, backHandler.BackGraphs .Select(g => ThingMeshHelper.GetIori(g)) .Where(i => i != null) .Select(i => new XElement(NodeNames.File, Write(NodeNames.Name, i.ToString())))); result.Add(thingGraphs); var displaySerializer = new GraphSceneDisplayXmlSerializer(); var displays = new XElement(NodeNames.Displays); foreach (var disp in mesh.Displays.Where(d => d.Data != null)) { var iori = ThingMeshHelper.GetIori(backHandler.BackGraphOf(disp.Data.Graph)); if (disp.DataId == 0) { disp.DataId = Isaac.Long; } displays.Add(displaySerializer.Write(new GraphSceneDisplayMemento(disp) { Iori = iori })); } result.Add(displays); return(result); }
ScenesOfBackGraph <TItem, TEdge> (this IGraphSceneDisplayMesh <TItem, TEdge> mesh, IGraph <TItem, TEdge> graph) where TEdge : TItem, IEdge <TItem> { var backMesh = mesh.BackHandler(graph); if (backMesh == null) { return(new IGraphScene <TItem, TEdge> [0]); } return(backMesh.ScenesOfBackGraph(graph)); }
public static void ClearDisplays(this IGraphSceneDisplayMesh <IVisual, IVisualEdge> mesh) { mesh.Displays .Where(d => d.Data != null) .ToArray() .ForEach(d => { mesh.ClearDisplaysOf(d.Data); mesh.RemoveScene(d.Data); }); mesh.Scenes.ToArray().ForEach(s => mesh.RemoveScene(s)); }
public static void ApplyBackGraph(this IGraphSceneDisplayMesh <IVisual, IVisualEdge> mesh, IThingGraph root) { var backMesh = mesh.BackHandler <IThing, ILink> (); var g = backMesh.WrapGraph(root); backMesh.RegisterBackGraph(g); var displays = mesh.Displays; displays.ForEach(d => { var scene = backMesh.CreateScene(g); mesh.AddScene(scene); d.Data = scene; }); }
public static void RemoveBackGraph(this IGraphSceneDisplayMesh <IVisual, IVisualEdge> mesh, IThingGraph backGraph) { var backMesh = mesh.BackHandler <IThing, ILink> (); mesh.Displays .Join(backMesh.ScenesOfBackGraph(backGraph), d => d.Data, s => s, (d, s) => d) .ForEach(d => { mesh.ClearDisplaysOf(d.Data); mesh.RemoveScene(d.Data); }); backMesh.ScenesOfBackGraph(backGraph).ToArray().ForEach(s => mesh.RemoveScene(s)); backMesh.UnregisterBackGraph(backGraph); }
public GraphSceneDisplayMeshVisitor( IGraphSceneDisplayMesh <TSinkItem, TSinkEdge> mesh, IGraphSceneDisplayMeshBackHandler <TSinkItem, TSinkEdge> backHandler, IGraph <TSinkItem, TSinkEdge> graph, TSinkItem item) { this.Mesh = mesh; this.BackHandler = backHandler as GraphSceneDisplayMeshBackHandler <TSinkItem, TSourceItem, TSinkEdge, TSourceEdge>; this.SourceGraph = graph; this.SourceItem = item; this.SourceDisplay = Mesh.Displays.FirstOrDefault(d => d.Data.Graph == SourceGraph); this.SourceScene = Mesh.Scenes.FirstOrDefault(s => s.Graph == SourceGraph); this.BackGraph = BackGraphOf(SourceGraph); this.BackItem = BackItemOf(SourceGraph, item); }
ClearDisplaysOf <TItem, TEdge> (this IGraphSceneDisplayMesh <TItem, TEdge> mesh, IGraphScene <TItem, TEdge> scene) where TEdge : TItem, IEdge <TItem> { if (scene == null) { return; } mesh.DisplaysOfBackGraph(scene.Graph) .ForEach(d => { if (d.Data != null) { d.Data.ClearView(); } d.Data = null; d.Perform(); }); }