Beispiel #1
0
        public static AlignerOptions Options <TItem, TEdge> (this IGraphSceneLayout <TItem, TEdge> layout) where TEdge : IEdge <TItem>, TItem
        {
            var result = new AlignerOptions {
                Dimension  = layout.Dimension,
                Distance   = layout.Distance,
                PointOrder = layout.Dimension == Dimension.X ? PointOrder.XY : PointOrder.YX,
            };

            if (layout.Dimension == Dimension.X)
            {
                result.AlignX = Alignment.Start;
                result.AlignY = layout.Centered ? Alignment.Center : Alignment.Start;
            }
            else
            {
                result.AlignX = layout.Centered ? Alignment.Center : Alignment.Start;
                result.AlignY = Alignment.Start;
            }
            if (layout.Dimension == Dimension.X)
            {
                result.PointOrderDelta = layout.StyleSheet.AutoSize.Width / 2;
            }
            else
            {
                result.PointOrderDelta = layout.StyleSheet.AutoSize.Height / 2;
            }
            return(result);
        }
Beispiel #2
0
        public void LoadSearch(IGraphScene <IVisual, IVisualEdge> scene, IGraphSceneLayout <IVisual, IVisualEdge> layout, object name)
        {
            var graph = scene.Graph.Source <IVisual, IVisualEdge, IThing, ILink>();

            if (graph == null)
            {
                throw new ArgumentException("Search works only on ThingGraphs");
            }

            scene.CleanScene();

            var visuals = scene.Graph.ThingGraph()
                          .Search(name, false)
                          .Select(t => graph.Get(t));

            new GraphSceneFacade <IVisual, IVisualEdge>(() => scene, layout)
            .Add(visuals, false, false);

            var aligner = new Aligner <IVisual, IVisualEdge>(scene, layout);

            aligner.FullLayout(null, new Point(layout.Border.Width, layout.Border.Height), layout.Options(), new VisualComparer());
            aligner.Commit();

            scene.ClearSpatialIndex();
        }
Beispiel #3
0
        protected SceneInfo SaveToThing(IGraphScene <IVisual, IVisualEdge> scene, IGraphSceneLayout <IVisual, IVisualEdge> layout, IThing thing, string name)
        {
            var result = default(SceneInfo);

            if (thing is IStreamThing || thing == null)
            {
                var content = new Content <Stream> (
                    new MemoryStream(), CompressionType.bZip2, ContentTypes.LimadaSheet);

                var serializer = new SheetSerializer();
                serializer.Save(content.Data, scene.Graph, layout);
                content.Data.Position = 0;
                content.Description   = name;

                thing = new VisualThingsContentViz().AssignContent(scene.Graph, thing, content);

                result = SheetStore.RegisterSceneInfo(thing.Id, name);
                result.State.Hollow = false;
                result.State.Clean  = true;
                result.State.CopyTo(scene.State);
            }
            else
            {
                throw new ArgumentException("thing must be a StreamThing");
            }
            return(result);
        }
Beispiel #4
0
 public ImageExporter(IGraphScene <IVisual, IVisualEdge> scene, IGraphSceneLayout <IVisual, IVisualEdge> layout)
     : base()
 {
     this.Data   = scene;
     this.Layout = layout;
     Compose();
 }
 public HedlessVisualsTextEditAction(Func <IGraphScene <IVisual, IVisualEdge> > func, Display <IGraphScene <IVisual, IVisualEdge> > display1, Drawing.ICamera camera, IGraphSceneLayout <IVisual, IVisualEdge> graphSceneLayout)
 {
     // TODO: Complete member initialization
     this.func             = func;
     this.display1         = display1;
     this.Camera           = camera;
     this.graphSceneLayout = graphSceneLayout;
 }
Beispiel #6
0
 public VisualsTextEditAction(
     Func <IGraphScene <IVisual, IVisualEdge> > sceneHandler,
     IDisplay display, ICamera camera,
     IGraphSceneLayout <IVisual, IVisualEdge> layout)
     : base(sceneHandler, display, camera, layout)
 {
     this.displayBackend = display.Backend as DisplayBackend;
 }
Beispiel #7
0
        public static IGraphSceneLayout <TItem, TEdge> CloneLayout <TItem, TEdge> (this IGraphScene <TItem, TEdge> scene, IGraphSceneLayout <TItem, TEdge> layout) where TEdge : TItem, IEdge <TItem>
        {
            IGraphSceneLayout <TItem, TEdge>   result  = null;
            Func <IGraphScene <TItem, TEdge> > handler = () => scene;

            result = Activator.CreateInstance(layout.GetType(), new object [] { handler, layout.StyleSheet }) as IGraphSceneLayout <TItem, TEdge>;
            return(result);
        }
Beispiel #8
0
 protected override void SetEditorFromLayout(IGraphSceneLayout <IVisual, IVisualEdge> layout)
 {
     disableChanges       = true;
     this.Distance        = layout.Distance;
     this.Dimension       = layout.Dimension;
     this.Centered        = layout.Centered;
     this.LayoutBackColor = GdiConverter.ToGdi(layout.StyleSheet.BackColor);
     disableChanges       = false;
 }
Beispiel #9
0
        Stream SaveSheet(IGraphScene <IVisual, IVisualEdge> scene, IGraphSceneLayout <IVisual, IVisualEdge> layout)
        {
            var sheet = new SheetSerializer();
            var s     = new MemoryStream();

            sheet.Save(s, scene.Graph, scene.CloneLayout(layout));
            s.Position = 0;
            return(s);
        }
 protected VisualsTextEditActionBase(
     Func <IGraphScene <IVisual, IVisualEdge> > sceneHandler,
     IDisplay display, ICamera camera,
     IGraphSceneLayout <IVisual, IVisualEdge> layout) : this()
 {
     this.Display       = display;
     this.Camera        = camera;
     this._sceneHandler = sceneHandler;
     this.Layout        = layout;
 }
Beispiel #11
0
        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);
            }
        }
Beispiel #12
0
        public bool SaveInStore(IGraphScene <IVisual, IVisualEdge> scene, IGraphSceneLayout <IVisual, IVisualEdge> layout, long id)
        {
            if (scene.Graph.Count > 0)
            {
                var stream = new MemoryStream();
                new SheetSerializer().Save(stream, scene.Graph, layout);
                stream.Position = 0;

                SheetStore.Add(id, stream.GetBuffer((int)stream.Length));

                return(true);
            }

            SheetStore.Remove(id);
            return(false);
        }
Beispiel #13
0
        public override void Setup()
        {
            base.Setup();

            if (Display != null)
            {
                oldlayout      = Display.Layout;
                Display.Layout = new EntityBenchmarkOneSceneFactory.LongtermPerformanceSceneLayout(
                    () => { return(Display.Data); }, Factory.styleSheet);
                Display.StyleSheet = Factory.styleSheet;
            }

            Factory.Arrange(Display.Data);
            Display.Data.ClearSpatialIndex();
            Display.Reset();

            IAction action = Display.ActionDispatcher.GetAction <IEditAction> ();

            if (action != null)
            {
                editorEnabled  = action.Enabled;
                action.Enabled = false;
            }

            action = Display.ActionDispatcher.GetAction <GraphItemMoveResizeAction <IVisual, IVisualEdge> > ();
            if (action != null)
            {
                action.Enabled = true;
            }
            action = Display.ActionDispatcher.GetAction <GraphEdgeChangeAction <IVisual, IVisualEdge> > ();
            if (action != null)
            {
                action.Enabled = true;
            }

            // this is neccessary as the mouse cursor returns after a long time
            // back to its position and activates VisualsTextEditor

            action         = Display.ActionDispatcher.GetAction <GraphItemAddAction <IVisual, IVisualEdge> > ();
            action.Enabled = false;
            action         = Display.ActionDispatcher.GetAction <AddVisualEdgeAction> ();
            action.Enabled = false;

            Display.ActionDispatcher.Actions
            .OfType <IDropAction> ()
            .ForEach(a => a.Enabled = false);
        }
Beispiel #14
0
        void TestScene(IGraphScene <IVisual, IVisualEdge> scene, IGraphSceneLayout <IVisual, IVisualEdge> layout, Stream s)
        {
            scene.CleanScene();

            var sheet = new SheetSerializer();

            s.Position = 0;
            sheet.Read(s, scene.Graph, scene.CloneLayout(layout));


            var visualThingGraph = scene.Graph.Source <IVisual, IVisualEdge, IThing, ILink> ();

            foreach (var visual in scene.Elements)
            {
                var thing = visualThingGraph.Get(visual);
                Assert.IsNotNull(thing);
            }
        }
Beispiel #15
0
        public void SaveInGraph(IGraphScene <IVisual, IVisualEdge> scene, IGraphSceneLayout <IVisual, IVisualEdge> layout, SceneInfo info)
        {
            var graph      = GetThingGraph(scene);
            var sheetThing = GetSheetThing(graph, info.Id);
            var saved      = SaveToThing(scene, layout, sheetThing, info.Name);

            info.Id   = saved.Id;
            info.Name = saved.Name;
            saved.State.CopyTo(info.State);
            saved.State.CopyTo(scene.State);
            var sheetVisual = scene.Graph.VisualOf(sheetThing);

            if (sheetVisual != null)
            {
                //sheetVisual.Data = info.Name;
                scene.Graph.DoChangeData(sheetVisual, info.Name);
                scene.Graph.OnGraphChange(sheetVisual, GraphEventType.Update);
            }
        }
Beispiel #16
0
 public static void SetOptions <TItem, TEdge> (this IGraphSceneLayout <TItem, TEdge> layout, AlignerOptions options) where TEdge : IEdge <TItem>, TItem
 {
     layout.Dimension = options.Dimension;
     if (options.Distance.IsZero)
     {
         options.Distance = layout.Distance;
     }
     else
     {
         layout.Distance = options.Distance;
     }
     if (options.Dimension == Dimension.X)
     {
         layout.Centered = options.AlignX == Alignment.Center;
     }
     else
     {
         layout.Centered = options.AlignY == Alignment.Center;
     }
 }
Beispiel #17
0
 public GraphSceneContextPainter(IGraphScene <TItem, TEdge> scene, IGraphSceneLayout <TItem, TEdge> layout)
     : base()
 {
     this.Data   = scene;
     this.Layout = layout;
 }
Beispiel #18
0
 public ImageExporter(IGraphScene <IVisual, IVisualEdge> scene, IGraphSceneLayout <IVisual, IVisualEdge> layout)
 {
     this.Scene  = scene;
     this.Layout = layout;
 }
Beispiel #19
0
 internal PrintDocument CreatePrintDocument(IGraphScene <IVisual, IVisualEdge> graphScene,
                                            IGraphSceneLayout <IVisual, IVisualEdge> graphSceneLayout)
 {
     throw new NotImplementedException();
 }
Beispiel #20
0
        public PrintDocument CreatePrintDocument(IGraphScene <IVisual, IVisualEdge> scene, IGraphSceneLayout <IVisual, IVisualEdge> layout)
        {
            this.painter = new ImageExporter(scene, layout);

            painter.Viewport.ClipOrigin = scene.Shape.Location;

            var doc = new PrintDocument();

            doc.PrintPage += new PrintPageEventHandler(doc_PrintPage);
            return(doc);
        }
Beispiel #21
0
        public virtual ICollection <IVisual> Read(Stream stream, IGraph <IVisual, IVisualEdge> source, IGraphSceneLayout <IVisual, IVisualEdge> layout)
        {
            var graph = source.Source <IVisual, IVisualEdge, IThing, ILink> ();

            if (graph == null)
            {
                return(null);
            }

            var serializer = new VisualThingXmlSerializer {
                VisualThingGraph = graph, Layout = layout
            };

            serializer.Read(stream);
            return(serializer.VisualsCollection);
        }
Beispiel #22
0
 public static void AddVisual(this IGraphScene <IVisual, IVisualEdge> scene, IVisual visual, IGraphSceneLayout <IVisual, IVisualEdge> layout)
 {
     if (scene.Focused != null)
     {
         PlaceVisual(scene, scene.Focused, visual, layout);
     }
     else
     {
         AddItem(scene, visual, layout, scene.NoHit);
     }
 }
Beispiel #23
0
        /// <summary>
        /// adds a visual containing content to the scene
        /// </summary>
        /// <param name="scene"></param>
        /// <param name="content"></param>
        /// <param name="layout"></param>
        public static void AddContent(this IGraphScene <IVisual, IVisualEdge> scene, Content <Stream> content, IGraphSceneLayout <IVisual, IVisualEdge> layout)
        {
            var visualOfContent = VisualContentViz.VisualOfContent(scene.Graph, content);

            scene.AddVisual(visualOfContent, layout);
        }
 public VisualsDragDropAction(Func <IGraphScene <IVisual, IVisualEdge> > sceneHandler, IVidgetBackend backend, ICamera camera, IGraphSceneLayout <IVisual, IVisualEdge> layout)
     : base(backend, camera)
 {
     this.SceneHandler = sceneHandler;
     this.Layout       = layout;
 }
Beispiel #25
0
 public GraphSceneContextPainter(IGraphScene <TItem, TEdge> scene, IGraphSceneLayout <TItem, TEdge> layout, IGraphItemRenderer <TItem, TEdge> itemRenderer)
     : this(scene, layout)
 {
     this.GraphItemRenderer = itemRenderer;
     Compose();
 }
Beispiel #26
0
 public static void CheckLayout <TItem, TEdge> (this IGraphScene <TItem, TEdge> scene, IGraphSceneLayout <TItem, TEdge> layout) where TEdge : TItem, IEdge <TItem>
 {
     if (scene != layout.Data)
     {
         throw new ArgumentException($"{nameof (layout)}.Data differs from {nameof (scene)}: {scene.GetHashCode ():X8} != {layout.Data.Graph.GetHashCode ():X8}");
     }
 }
Beispiel #27
0
 public void EnsureShapes(IGraphSceneLayout <TSinkItem, TSinkEdge> layout)
 {
     Nodes.Where(n => n != null).ForEach(n => layout.Perform(n));
     Edges.Where(n => n != null).ForEach(n => layout.Perform(n));
 }
Beispiel #28
0
        public static void AddItem(IGraphScene <IVisual, IVisualEdge> scene, IVisual item, IGraphSceneLayout <IVisual, IVisualEdge> layout, Point pt)
        {
            bool allowAdd = true;

            if (scene == null)
            {
                return;
            }
            if (item is IVisualEdge)
            {
                var edge = (IVisualEdge)item;
                allowAdd = scene.Contains(edge.Root) && scene.Contains(edge.Leaf);
            }
            if (allowAdd)
            {
                var facade = new GraphSceneFacade <IVisual, IVisualEdge>(() => scene, layout);
                facade.Add(item, pt);
            }
        }
Beispiel #29
0
 public VisualSceneContextPainter(IGraphScene <IVisual, IVisualEdge> scene, IGraphSceneLayout <IVisual, IVisualEdge> layout)
     : base(scene, layout, new VisualsRenderer())
 {
 }
Beispiel #30
0
        public static IVisual PlaceVisual(IGraphScene <IVisual, IVisualEdge> scene, IVisual root, IVisual visual, IGraphSceneLayout <IVisual, IVisualEdge> layout)
        {
            if (visual == null || scene == null)
            {
                return(visual);
            }

            var pt = (Point)layout.Border;

            if (root != null)
            {
                pt = root.Shape [Anchor.LeftBottom];
            }
            AddItem(scene, visual, layout, pt);
            CreateEdge(scene, root, visual);

            return(visual);
        }