Exemplo n.º 1
0
        private GeneralLayoutEdge[] SplitEdge(GeneralLayoutEdge edgeToSplit, LayoutVertexBase interimVertex)
        {
            var newEdge1 = new GeneralLayoutEdge(edgeToSplit.Source, interimVertex, edgeToSplit.DiagramConnector);
            var newEdge2 = new GeneralLayoutEdge(interimVertex, edgeToSplit.Target, edgeToSplit.DiagramConnector);

            _properGraph.RemoveEdge(edgeToSplit);
            _properGraph.AddVertex(interimVertex);
            _properGraph.AddEdge(newEdge1);
            _properGraph.AddEdge(newEdge2);

            return(new[] { newEdge1, newEdge2 });
        }
Exemplo n.º 2
0
        private GeneralLayoutEdge MergeEdges(GeneralLayoutEdge firstEdge, GeneralLayoutEdge nextEdge)
        {
            if (firstEdge.Target != nextEdge.Source)
            {
                throw new InvalidOperationException("Only consecutive edges can be merged.");
            }

            if (firstEdge.DiagramConnector != nextEdge.DiagramConnector)
            {
                throw new InvalidOperationException("Only edges of the same DiagramConnector can be merged.");
            }

            var mergedEdge = new GeneralLayoutEdge(firstEdge.Source, nextEdge.Target, firstEdge.DiagramConnector);

            _properGraph.RemoveEdge(firstEdge);
            _properGraph.RemoveEdge(nextEdge);
            _properGraph.RemoveVertex(firstEdge.Target);
            _properGraph.AddEdge(mergedEdge);

            return(mergedEdge);
        }