Example #1
0
        private string DotGeomString(Core.Layout.Edge geometryEdge)
        {
            var edgeGeom = geometryEdge.EdgeGeometry;

            if (edgeGeom == null)
            {
                return("");
            }
            CubicBezierSegment b = edgeGeom.Curve as CubicBezierSegment;

            if (b == null)
            {
                throw new NotImplementedException();
            }
            string ret = "";

            if (edgeGeom.SourceArrowhead != null)
            {
                ret += string.Format("s,{0},{1} ", edgeGeom.SourceArrowhead.TipPosition.X, edgeGeom.SourceArrowhead.TipPosition.Y);
            }
            if (edgeGeom.TargetArrowhead != null)
            {
                ret += string.Format("e,{0},{1} ", edgeGeom.TargetArrowhead.TipPosition.X, edgeGeom.TargetArrowhead.TipPosition.Y);
            }
            for (int i = 0; i < 4; i++)
            {
                ret += string.Format("{0},{1} ", b.B(i).X, b.B(i).Y);
            }
            return("pos=" + Utils.Quote(ret));
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="drawingEdge"></param>
        /// <returns></returns>
        public static Core.Layout.Edge CreateGeometryEdgeFromDrawingEdge(Edge drawingEdge)
        {
            var sourceNode = drawingEdge.SourceNode.GeometryNode;
            var targetNode = drawingEdge.TargetNode.GeometryNode;
            var msaglEdge  = new Core.Layout.Edge(sourceNode, targetNode);

            drawingEdge.GeometryEdge = msaglEdge;
            msaglEdge.SourcePort     = drawingEdge.SourcePort;
            msaglEdge.TargetPort     = drawingEdge.TargetPort;

            if (drawingEdge.Label != null)
            {
                msaglEdge.Label = drawingEdge.Label.GeometryLabel;
                msaglEdge.Label.GeometryParent = msaglEdge;
            }
            msaglEdge.Weight     = drawingEdge.Attr.Weight;
            msaglEdge.Length     = drawingEdge.Attr.Length;
            msaglEdge.Separation = drawingEdge.Attr.Separation;
            if (drawingEdge.Attr.ArrowAtSource)
            {
                msaglEdge.EdgeGeometry.SourceArrowhead = new Arrowhead {
                    Length = drawingEdge.Attr.ArrowheadLength
                };
            }
            if (drawingEdge.Attr.ArrowAtTarget)
            {
                msaglEdge.EdgeGeometry.TargetArrowhead = new Arrowhead {
                    Length = drawingEdge.Attr.ArrowheadLength
                };
            }
            msaglEdge.UserData  = drawingEdge;
            msaglEdge.LineWidth = drawingEdge.Attr.LineWidth;
            return(msaglEdge);
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="drawingEdge"></param>
        /// <returns></returns>
        public static Core.Layout.Edge CreateGeometryEdgeFromDrawingEdge(Edge drawingEdge) {
            var sourceNode = drawingEdge.SourceNode.GeometryNode;
            var targetNode = drawingEdge.TargetNode.GeometryNode;
            var msaglEdge = new Core.Layout.Edge(sourceNode, targetNode);
            drawingEdge.GeometryEdge = msaglEdge;
            msaglEdge.SourcePort = drawingEdge.SourcePort;
            msaglEdge.TargetPort = drawingEdge.TargetPort;

            if (drawingEdge.Label != null) {
// && graph.LayoutAlgorithmSettings is SugiyamaLayoutSettings &&
                //                   graph.LayoutAlgorithmSettings.routingMode == false){
                msaglEdge.Label = drawingEdge.Label.GeometryLabel;
                msaglEdge.Label.GeometryParent = msaglEdge;
            }
            msaglEdge.Weight = drawingEdge.Attr.Weight;
            msaglEdge.Length = drawingEdge.Attr.Length;
            msaglEdge.Separation = drawingEdge.Attr.Separation;
            if (drawingEdge.Attr.ArrowAtSource) {
                msaglEdge.EdgeGeometry.SourceArrowhead = new Arrowhead {Length = drawingEdge.Attr.ArrowheadLength};
            }
            if (drawingEdge.Attr.ArrowAtTarget) {
                msaglEdge.EdgeGeometry.TargetArrowhead = new Arrowhead {Length = drawingEdge.Attr.ArrowheadLength};
            }
            msaglEdge.UserData = drawingEdge;
            msaglEdge.LineWidth = drawingEdge.Attr.LineWidth;
            return msaglEdge;
        }
 static EdgeGeometry CreateEdgeGeometryForSelfEdge(GeometryObject geometryGraph, GeometryNode node) {
     var tempEdge = new Core.Layout.Edge(node, node)
     {
         GeometryParent = geometryGraph,
         SourcePort =
             new FloatingPort(node.BoundaryCurve, node.Center),
         TargetPort =
             new FloatingPort(node.BoundaryCurve, node.Center),
         EdgeGeometry = { TargetArrowhead = new Arrowhead() }
     };
     StraightLineEdges.CreateSimpleEdgeCurveWithUnderlyingPolyline(tempEdge);
     return tempEdge.EdgeGeometry;
 }
        void AddEdge() {
            var drawingEdge = new Edge(SourceOfInsertedEdge.DrawingObject as Node,
                                       TargetOfInsertedEdge.DrawingObject as Node, ConnectionToGraph.Disconnected);
            var geomEdge = new Core.Layout.Edge(GeometryNode(SourceOfInsertedEdge),
                                                GeometryNode(TargetOfInsertedEdge)) {EdgeGeometry = EdgeGeometry};
            drawingEdge.GeometryEdge = geomEdge;
            drawingEdge.SourcePort = SourcePort;
            drawingEdge.TargetPort = TargetPort;

            var edge = viewer.CreateEdgeWithGivenGeometry(drawingEdge);
            viewer.AddEdge(edge, true);
            AttachLayoutChangeEvent(edge);
        }