Example #1
0
        private void DrawNode(DrawingContext dc, DiagramNode node, ref List<DiagramItem> itemsToDraw, bool considerViewport)
        {
            if (_itemsInDrawingOrder.Contains(node) || itemsToDraw.Contains(node))
                return;

            if (_selection.Contains(node))
            {
                //node.Label.Draw(dc);
                if (!itemsToDraw.Contains(node))
                    itemsToDraw.Add(node);
            }
            else
            {
                node.Draw(dc, considerViewport);
                _itemsInDrawingOrder.Add(node);

                if (_selection.Contains(node.Label))
                {
                    if (!itemsToDraw.Contains(node.Label))
                        itemsToDraw.Add(node.Label);
                }
                else
                {
                    if (node.Label != null)
                    {
                        node.Label.Draw(dc, considerViewport);
                        _itemsInDrawingOrder.Add(node.Label);
                    }
                }
            }

            foreach (var edge in node.Edges)
            {
                DrawEdge(dc, edge, ref itemsToDraw, considerViewport);

                if (node == edge.SourceNode && edge.DestinationNode != null)
                    DrawNode(dc, edge.DestinationNode, ref itemsToDraw, considerViewport);

                if (node == edge.DestinationNode && edge.SourceNode != null)
                    DrawNode(dc, edge.SourceNode, ref itemsToDraw, considerViewport);
            }
        }