Ejemplo n.º 1
0
 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));
 }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
        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));
        }
Ejemplo n.º 6
0
        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;
            });
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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();
            });
        }