Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
 private void SetPortLinkPositionInSrcPortLessThan200(IpFlowPortLink link, IpFlowPortLabel label)
 {
     link.PositionInSourcePorts         = label.Y;
     link.PositionInSourcePortsIsSetted = true;
 }
Ejemplo n.º 3
0
 private void SetPortLinkPositionInDestPortLessThan200(IpFlowPortLink link, IpFlowPortLabel label)
 {
     link.PositionInDestinationPorts         = label.Y;
     link.PositionInDestinationPortsIsSetted = true;
 }
Ejemplo n.º 4
0
        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);
        }