private static void AddSlantNearPath(GraphicsPath borderPath,
VisualOrientation orientation,
Rectangle rect,
bool forBorder)
{
// Cache the distance to use for the slant
int x = _spacingTabSlantPadding;
int xW = Math.Min(x, rect.Width);
int xH = Math.Min(x, rect.Height);
switch (orientation)
{
case VisualOrientation.Top:
if (!forBorder)
borderPath.AddLine(rect.Right, rect.Bottom, rect.Left, rect.Bottom);
borderPath.AddLine(rect.Left - 1, rect.Bottom, rect.Left + xW, rect.Top);
borderPath.AddLine(rect.Left + xW, rect.Top, rect.Right, rect.Top);
borderPath.AddLine(rect.Right, rect.Top, rect.Right, rect.Bottom);
break;
case VisualOrientation.Bottom:
if (!forBorder)
borderPath.AddLine(rect.Right, rect.Top, rect.Left, rect.Top);
borderPath.AddLine(rect.Left - 1, rect.Top, rect.Left + xW, rect.Bottom);
borderPath.AddLine(rect.Left + xW, rect.Bottom, rect.Right, rect.Bottom);
borderPath.AddLine(rect.Right, rect.Bottom, rect.Right, rect.Top);
break;
case VisualOrientation.Left:
if (!forBorder)
borderPath.AddLine(rect.Right, rect.Top, rect.Right, rect.Bottom);
borderPath.AddLine(rect.Right, rect.Bottom, rect.Left, rect.Bottom - xH);
borderPath.AddLine(rect.Left, rect.Bottom - xH, rect.Left, rect.Top);
borderPath.AddLine(rect.Left, rect.Top, rect.Right, rect.Top);
break;
case VisualOrientation.Right:
if (!forBorder)
borderPath.AddLine(rect.Left, rect.Top, rect.Left, rect.Bottom);
borderPath.AddLine(rect.Left, rect.Bottom, rect.Right, rect.Bottom - xH);
borderPath.AddLine(rect.Right, rect.Bottom - xH, rect.Right, rect.Top);
borderPath.AddLine(rect.Right, rect.Top, rect.Left, rect.Top);
break;
}
}