internal DiagramItem(Diagram diagram) { _diagram = diagram; _label = null; _drawer = null; _geometry = null; _border = null; NeedRecalc = true; IsSelectable = true; }
protected void CalculateGeometry(IDiagramItemDrawer drawer) { if (drawer == null) return; if (NeedRecalc == false) return; _geometry = drawer.CalculateGeometry(this); _border = drawer.CalculateBorder(this); NeedRecalc = false; }
public Diagram() { _nodes = new DiagramNodes(this); _edges = new DiagramEdges(this); _selection = new DiagramSelection(this); _itemsInDrawingOrder = new DiagramItemCollection<DiagramItem>(this); _nodes.CollectionChanged += NodeCollectionChanged; _edges.CollectionChanged += EdgeCollectionChanged; _selection.CollectionChanged += SelectionChanged; Background = new SolidColorBrush(Colors.Transparent); _defaultNodeDrawer = new RectangleNodeDrawer(); _defaultEdgeDrawer = new LineEdgeDrawer(); //DefaultLabelDrawer = new BaseLabelDrawer(); _placedItems = new ObservableCollection<IDiagramPlacedItem>(); _placedItems.CollectionChanged += new NotifyCollectionChangedEventHandler(CustomChilren_CollectionChanged); _mouseManager = new DiagramMouseManager(this); _mouseManager.LabelLButtonDblClick += new LabelEventHandler(OnLabelLButtonDblClick); _mouseManager.NodeLButtonDblClick += new NodeEventHandler(OnNodeLButtonDblClick); _mouseManager.EdgeLButtonDblClick += new EdgeEventHandler(OnEdgeLButtonDblClick); _viewport = null; _boundaries = null; CalculateBoundaries(); LockRender = false; LockRecalc = false; _scrollViewer = null; }