private void SetPortLinkPositionInDestPortGreaterThan200(double height, IpFlowPortLink link, IpFlowPortLabel label) { link.PositionInDestinationPorts = ((double)link.DestinationPort / label.Port) * (label.Y + styleManager.LabelAdjustedY - height) + height; link.PositionInDestinationPortsIsSetted = true; }
private void SetPortLinkPositionInSrcPortLessThan200(IpFlowPortLink link, IpFlowPortLabel label) { link.PositionInSourcePorts = label.Y; link.PositionInSourcePortsIsSetted = true; }
private void SetPortLinkPositionInDestPortLessThan200(IpFlowPortLink link, IpFlowPortLabel label) { link.PositionInDestinationPorts = label.Y; link.PositionInDestinationPortsIsSetted = true; }
private IpFlowPortLink ShapePortLink(IpFlowPortLink link, double width) { var startPoint = new Point(); var bezier1ControlPoint1 = new Point(); var bezier2ControlPoint2 = new Point(); var bezier2EndPoint = new Point(); var figure1Bezier1ControlPoint2 = new Point(); var figure1Bezier1EndPoint = new Point(); var figure1Bezier2ControlPoint1 = new Point(); var figure2Bezier1ControlPoint2 = new Point(); var figure2Bezier1EndPoint = new Point(); var figure2Bezier2ControlPoint1 = new Point(); var midX = width / 2; if (link.SourcePort == link.DestinationPort) { figure1Bezier2ControlPoint1.Y = figure1Bezier1EndPoint.Y = figure1Bezier1ControlPoint2.Y = link.Depth; figure2Bezier2ControlPoint1.Y = figure2Bezier1EndPoint.Y = figure2Bezier1ControlPoint2.Y = link.Depth + link.Width;; } else { var midY = (link.PositionInSourcePorts + link.PositionInDestinationPorts) / 2; figure1Bezier2ControlPoint1.Y = figure1Bezier1EndPoint.Y = figure1Bezier1ControlPoint2.Y = midY; figure2Bezier2ControlPoint1.Y = figure2Bezier1EndPoint.Y = figure2Bezier1ControlPoint2.Y = midY + link.Width; } bezier1ControlPoint1.Y = startPoint.Y = link.PositionInSourcePorts; bezier2ControlPoint2.Y = bezier2EndPoint.Y = link.PositionInDestinationPorts; figure1Bezier1EndPoint.X = figure2Bezier1EndPoint.X = midX; bezier2EndPoint.X = width; bezier1ControlPoint1.X = midX * diagram.LinkCurvature; figure2Bezier1ControlPoint2.X = figure1Bezier1ControlPoint2.X = midX * (1 - diagram.LinkCurvature); figure2Bezier2ControlPoint1.X = figure1Bezier2ControlPoint1.X = midX * (1 + diagram.LinkCurvature); bezier2ControlPoint2.X = midX * (1 + (1 - diagram.LinkCurvature)); var geometry = new PathGeometry() { Figures = new PathFigureCollection() { new PathFigure() { StartPoint = startPoint, Segments = new PathSegmentCollection() { new BezierSegment() { Point1 = bezier1ControlPoint1, Point2 = figure1Bezier1ControlPoint2, Point3 = figure1Bezier1EndPoint }, new BezierSegment() { Point1 = figure1Bezier2ControlPoint1, Point2 = bezier2ControlPoint2, Point3 = bezier2EndPoint } } }, new PathFigure() { StartPoint = startPoint, Segments = new PathSegmentCollection() { new BezierSegment() { Point1 = bezier1ControlPoint1, Point2 = figure2Bezier1ControlPoint2, Point3 = figure2Bezier1EndPoint }, new BezierSegment() { Point1 = figure2Bezier2ControlPoint1, Point2 = bezier2ControlPoint2, Point3 = bezier2EndPoint } } } } }; link.Shape.Data = geometry; Panel.SetZIndex(link.Shape, -1); return(link); }