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); } }
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); } }