Пример #1
0
        public virtual void Factor(GraphScenePainter <TItem, TEdge> painter)
        {
            var context = Registry.ConcreteContext;

            painter.Clipper      = context.Factory.Create <IClipper>();
            painter.ClipReceiver = context.Factory.Create <IClipReceiver>();
            painter.DataRenderer = new GraphSceneRenderer <TItem, TEdge>();
        }
Пример #2
0
        public virtual void Compose(GraphScenePainter <TItem, TEdge> painter)
        {
            this.DataOrigin = () => {
                if (painter.Data != null && painter.Data.Shape != null)
                {
                    var result = painter.Data.Shape.Location;
                    var border = painter.Layout.Border;
                    if (result.X < 0)
                    {
                        result.X -= border.Width;
                    }
                    if (result.Y < 0)
                    {
                        result.Y -= border.Height;
                    }
                    return(result);
                }
                else
                {
                    return(Point.Zero);
                }
            };

            this.DataSize = () => {
                if (painter.Data != null && painter.Data.Shape != null)
                {
                    var result = painter.Data.Shape.Size;
                    var border = painter.Layout.Border;
                    result += border;
                    var offset = painter.Data.Shape.Location;
                    if (offset.X < 0)
                    {
                        result.Width += border.Width;
                    }
                    if (offset.Y < 0)
                    {
                        result.Height += border.Height;
                    }
                    return(result);
                }
                else
                {
                    return(Size.Zero);
                }
            };

            this.Clipper  = () => painter.Clipper;
            this.Viewport = () => painter.Viewport;
            this.Camera   = () => painter.Viewport.Camera;
            this.Layout   = () => painter.Layout;

            this.BackRenderer = () => painter.BackendRenderer;
            painter.BackendRenderer.BackColor = () => painter.BackColor;

            painter.ClipReceiver.Clipper  = painter.Clipper;
            painter.ClipReceiver.Renderer = this.BackRenderer;
            painter.ClipReceiver.Viewport = this.Viewport;

            painter.DataLayer.Data     = () => painter.Data;
            painter.DataLayer.Camera   = this.Camera;
            painter.DataLayer.Renderer = () => painter.DataRenderer;

            painter.Viewport.GetDataOrigin = this.DataOrigin;
            painter.Viewport.GetDataSize   = this.DataSize;

            painter.PainterFactory = painter.Layout.PainterFactory;
            painter.ShapeFactory   = painter.Layout.ShapeFactory;

            var renderer = painter.DataRenderer as IGraphSceneRenderer <TItem, TEdge>;

            renderer.ItemRenderer = painter.GraphItemRenderer;
            renderer.Layout       = this.Layout;
            renderer.Camera       = this.Camera;
        }