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