コード例 #1
0
ファイル: SceneExtensions.cs プロジェクト: git-thinh/limada
        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);
            }
        }
コード例 #2
0
        public virtual void Compose(IGraphScene <TItem, TEdge> scene, IGraphItemRenderer <TItem, TEdge> itemRenderer)
        {
            this.Scene = scene;

            Func <IGraphScene <TItem, TEdge> > fScene = () => this.Scene;

            if (StyleSheet == null)
            {
                StyleSheet           = new StyleSheets().Compose().DefaultStyleSheet;
                StyleSheet.BackColor = Colors.WhiteSmoke;
                // maybe created with wrong toolkit! Registry.Pooled<StyleSheets>().DefaultStyleSheet;
            }

            if (Layout == null)
            {
                Layout           = Registry.Factory.Create <IGraphSceneLayout <TItem, TEdge> >(fScene, StyleSheet);
                Layout.Dimension = Limaki.Drawing.Dimension.X;
            }

            if (Painter == null)
            {
                Painter = new GraphSceneContextPainter <TItem, TEdge>(Scene, Layout, itemRenderer);
            }

            if (Modeller == null)
            {
                var modelReceiver = new GraphItemModeller <TItem, TEdge>();
                Modeller            = new GraphSceneModeller <TItem, TEdge>();
                Modeller.GraphScene = fScene;
                Modeller.Layout     = () => Layout;
                Modeller.Camera     = () => Painter.Viewport.Camera;
                Modeller.Clipper    = () => Painter.Clipper;
                Modeller.Modeller   = () => modelReceiver;
            }

            if (Folder == null)
            {
                Folder = new GraphSceneFacade <TItem, TEdge>(fScene, Layout);
            }
        }