Ejemplo n.º 1
0
        public static string GenerateCurvedPath(this LinkModel link)
        {
            var    sX = link.GetMiddleSourceX();
            var    sY = link.GetMiddleSourceY();
            double tX, tY;

            if (link.IsAttached)
            {
                tX = link.GetMiddleTargetX();
                tY = link.GetMiddleTargetY();
            }
            else
            {
                tX = link.OnGoingPosition !.X;
                tY = link.OnGoingPosition.Y;
            }

            var cX = (sX + tX) / 2;
            var cY = (sY + tY) / 2;

            var curvePointA = GetCurvePoint(sX, sY, cX, cY, link.SourcePort.Alignment);
            var curvePointB = GetCurvePoint(tX, tY, cX, cY, link.TargetPort?.Alignment);

            return(FormattableString.Invariant($"M {sX} {sY} C {curvePointA}, {curvePointB}, {tX} {tY}"));
        }
Ejemplo n.º 2
0
        public static string CalculateAngleForTargetArrow(this LinkModel link)
        {
            var    sX = link.GetMiddleSourceX();
            var    sY = link.GetMiddleSourceY();
            double tX, tY;

            if (link.IsAttached)
            {
                tX = link.GetMiddleTargetX();
                tY = link.GetMiddleTargetY();
            }
            else
            {
                tX = link.OnGoingPosition !.X;
                tY = link.OnGoingPosition.Y;
            }

            var angle = 90 + Math.Atan2(tY - sY, tX - sX) * 180 / Math.PI;

            return(angle.ToString(CultureInfo.InvariantCulture));
        }
Ejemplo n.º 3
0
        public static string GenerateCurvedPath(this LinkModel link)
        {
            var    sX = link.GetMiddleSourceX();
            var    sY = link.GetMiddleSourceY();
            double tX, tY;

            if (link.IsAttached)
            {
                tX = link.GetMiddleTargetX();
                tY = link.GetMiddleTargetY();
            }
            else
            {
                tX = link.OnGoingPosition !.X;
                tY = link.OnGoingPosition.Y;
            }

            return($"M {sX.ToInvariantString()} {sY.ToInvariantString()} " +
                   $"C {((sX + tX) / 2).ToInvariantString()} {sY.ToInvariantString()}," +
                   $" {((sX + tX) / 2).ToInvariantString()} {tY.ToInvariantString()}," +
                   $" {tX.ToInvariantString()} {tY.ToInvariantString()}");
        }