private Point GetCp4(Rect rect, Point p1, Point p2) { var rightLineEquation = new LineEquation(p1, p2); var dock = Dock; var isBottom = (dock & TabItemDock.Bottom) == TabItemDock.Bottom; if (isBottom) { return rightLineEquation.IntersectWithHorizontalLine(p2.X, rect.Bottom); } var isTop = (dock & TabItemDock.Top) == TabItemDock.Top; if (isTop) { return rightLineEquation.IntersectWithHorizontalLine(p2.X, rect.Top); } var isLeft = (dock & TabItemDock.Left) == TabItemDock.Left; if (isLeft) { return rightLineEquation.IntersectWithVerticalLine(p2.Y, rect.Left); } return rightLineEquation.IntersectWithVerticalLine(p2.Y, rect.Right); }
private Point GetCp2(Rect rect, Point p1, Point p2) { var leftLineEquation = new LineEquation(p1, p2); var dock = Dock; var isBottom = (dock & TabItemDock.Bottom) == TabItemDock.Bottom; if (isBottom) { // the 1st control point is the intersection between the slope line and the base line. return leftLineEquation.IntersectWithHorizontalLine(p2.X, rect.Top); } var isTop = (dock & TabItemDock.Top) == TabItemDock.Top; if (isTop) { return leftLineEquation.IntersectWithHorizontalLine(p2.X, rect.Bottom); } var isLeft = (dock & TabItemDock.Left) == TabItemDock.Left; if (isLeft) { return leftLineEquation.IntersectWithVerticalLine(p2.Y, rect.Right); } return leftLineEquation.IntersectWithVerticalLine(p2.Y, rect.Left); }