public ConnectorRouter.ConnectorSegment GetCover(Point p, DesignerEdges side)
            {
                ConnectorRouter.ConnectorSegment segment = null;
                int num = 0;

                if ((side == DesignerEdges.Left) || (side == DesignerEdges.Right))
                {
                    for (int j = 0; j < this.verticalCovers.Count; j++)
                    {
                        ConnectorRouter.ConnectorSegment segment2 = this.verticalCovers[j];
                        int num3 = (side == DesignerEdges.Left) ? (p.X - segment2.A.X) : (segment2.A.X - p.X);
                        if (((num3 > 0) && segment2.Covers(p)) && ((segment == null) || (num > num3)))
                        {
                            segment = segment2;
                            num     = num3;
                        }
                    }
                    return(segment);
                }
                for (int i = 0; i < this.horizontalCovers.Count; i++)
                {
                    ConnectorRouter.ConnectorSegment segment3 = this.horizontalCovers[i];
                    int num5 = (side == DesignerEdges.Bottom) ? (p.Y - segment3.A.Y) : (segment3.A.Y - p.Y);
                    if (((num5 > 0) && segment3.Covers(p)) && ((segment == null) || (num > num5)))
                    {
                        segment = segment3;
                        num     = num5;
                    }
                }
                return(segment);
            }
            public List <ConnectorRouter.ConnectorSegment> GetCovers(Point p, DesignerEdges side)
            {
                List <ConnectorRouter.ConnectorSegment> list = new List <ConnectorRouter.ConnectorSegment>();

                if ((side == DesignerEdges.Left) || (side == DesignerEdges.Right))
                {
                    for (int j = 0; j < this.verticalCovers.Count; j++)
                    {
                        ConnectorRouter.ConnectorSegment item = this.verticalCovers[j];
                        int num2 = (side == DesignerEdges.Left) ? (p.X - item.A.X) : (item.A.X - p.X);
                        if ((num2 > 0) && item.Covers(p))
                        {
                            list.Add(item);
                        }
                    }
                    return(list);
                }
                for (int i = 0; i < this.horizontalCovers.Count; i++)
                {
                    ConnectorRouter.ConnectorSegment segment2 = this.horizontalCovers[i];
                    int num4 = (side == DesignerEdges.Bottom) ? (p.Y - segment2.A.Y) : (segment2.A.Y - p.Y);
                    if ((num4 > 0) && segment2.Covers(p))
                    {
                        list.Add(segment2);
                    }
                }
                return(list);
            }
            public static ConnectorRouter.ConnectorSegment SegmentFromLeftToRightCover(ConnectorRouter.CoverSet coverSet, Point p)
            {
                ConnectorRouter.ConnectorSegment cover    = coverSet.GetCover(p, DesignerEdges.Left);
                ConnectorRouter.ConnectorSegment segment2 = coverSet.GetCover(p, DesignerEdges.Right);
                Point point = new Point((cover != null) ? cover.A.X : -2147483648, p.Y);

                return(new ConnectorRouter.ConnectorSegment(point, new Point((segment2 != null) ? segment2.A.X : 0x7fffffff, p.Y)));
            }
            public static ConnectorRouter.ConnectorSegment SegmentFromBottomToTopCover(ConnectorRouter.CoverSet coverSet, Point p)
            {
                ConnectorRouter.ConnectorSegment cover    = coverSet.GetCover(p, DesignerEdges.Bottom);
                ConnectorRouter.ConnectorSegment segment2 = coverSet.GetCover(p, DesignerEdges.Top);
                Point point = new Point(p.X, (cover != null) ? cover.A.Y : -2147483648);

                return(new ConnectorRouter.ConnectorSegment(point, new Point(p.X, (segment2 != null) ? segment2.A.Y : 0x7fffffff)));
            }
 public override bool Equals(object obj)
 {
     ConnectorRouter.ConnectorSegment segment = obj as ConnectorRouter.ConnectorSegment;
     if (segment == null)
     {
         return(false);
     }
     return(((this.point1 == segment.A) && (this.point2 == segment.B)) && (this.Orientation == segment.Orientation));
 }
 public bool EscapeLineHasBeenUsed(ConnectorRouter.ConnectorSegment segment, Point escapePoint)
 {
     for (int i = 0; i < this.usedEscapeLine.Count; i++)
     {
         ConnectorRouter.ConnectorSegment segment2 = this.usedEscapeLine[i];
         if (segment2.IsPointOnSegment(escapePoint))
         {
             return(true);
         }
     }
     return(false);
 }
 public Point?Intersect(ConnectorRouter.ConnectorSegment segment)
 {
     if (this.orientation != segment.Orientation)
     {
         ConnectorRouter.ConnectorSegment segment2 = (this.orientation == System.Windows.Forms.Orientation.Vertical) ? this : segment;
         ConnectorRouter.ConnectorSegment segment3 = (this.orientation == System.Windows.Forms.Orientation.Vertical) ? segment : this;
         if ((segment2.A.X < Math.Min(segment3.A.X, segment3.B.X)) || (segment2.A.X > Math.Max(segment3.A.X, segment3.B.X)))
         {
             return(null);
         }
         if ((segment3.A.Y >= Math.Min(segment2.A.Y, segment2.B.Y)) && (segment3.A.Y <= Math.Max(segment2.A.Y, segment2.B.Y)))
         {
             return(new Point(segment2.A.X, segment3.A.Y));
         }
     }
     return(null);
 }
            public void AddCover(ConnectorRouter.ConnectorSegment cover)
            {
                List <ConnectorRouter.ConnectorSegment> list = (cover.Orientation == Orientation.Vertical) ? this.verticalCovers : this.horizontalCovers;

                for (int i = 0; i < list.Count; i++)
                {
                    ConnectorRouter.ConnectorSegment segment = list[i];
                    if (cover.IsPointOnSegment(segment.A) && cover.IsPointOnSegment(segment.B))
                    {
                        list.RemoveAt(i);
                        break;
                    }
                    if (segment.IsPointOnSegment(cover.A) && segment.IsPointOnSegment(cover.B))
                    {
                        return;
                    }
                }
                list.Add(cover);
            }
            public bool IsEscapePoint(Point origin, Point escape, DesignerEdges side)
            {
                int num;

                ConnectorRouter.ConnectorSegment cover = this.GetCover(origin, side);
                if ((side == DesignerEdges.Left) || (side == DesignerEdges.Right))
                {
                    num = cover.A.X - escape.X;
                }
                else
                {
                    num = cover.A.Y - escape.Y;
                }
                if (cover.Covers(escape))
                {
                    return(false);
                }
                List <ConnectorRouter.ConnectorSegment> covers = this.GetCovers(escape, side);

                for (int i = 0; i < covers.Count; i++)
                {
                    int num3;
                    ConnectorRouter.ConnectorSegment segment2 = covers[i];
                    if (segment2 == cover)
                    {
                        return(false);
                    }
                    if ((side == DesignerEdges.Left) || (side == DesignerEdges.Right))
                    {
                        num3 = Math.Abs((int)(segment2.A.X - escape.X));
                    }
                    else
                    {
                        num3 = Math.Abs((int)(segment2.A.Y - escape.Y));
                    }
                    if ((Math.Sign(num3) == Math.Sign(num)) && (Math.Abs(num3) < Math.Abs(num)))
                    {
                        return(false);
                    }
                }
                return(true);
            }
 public void AddUsedEscapeLine(ConnectorRouter.ConnectorSegment segment)
 {
     this.usedEscapeLine.Add(segment);
 }