#if FRAMEWORK20
using System.Drawing;
using System.Drawing.Drawing2D;
namespace DevComponents.DotNetBar
{
    public class VS2008DocumentSuperTabItem : SuperTabItemBaseDisplay
    {
        #region Constants
        private const int SmRadius = 8;
        private const int LgRadius = 20;
        #endregion
        /// 
        /// Constructor
        /// 
        /// Associated SuperTabItem
        public VS2008DocumentSuperTabItem(SuperTabItem tabItem)
            : base(tabItem)
        {
        }
        #region ContentRectangle
        /// 
        /// Returns the tab ContentRectangle
        /// 
        /// 
        internal override Rectangle ContentRectangle()
        {
            Rectangle r = TabItem.DisplayRectangle;
            int n = TabStripItem.TabDisplay.TabOverlap;
            if (TabStripItem.IsVertical == true)
            {
                r.Y += n;
                r.Height -= n;
            }
            else
            {
                r.X += n;
                r.Width -= n;
            }
            return (r);
        }
        #endregion
        #region TabItemPath
        /// 
        /// Creates the tab item GraphicsPath
        /// 
        /// Tab path
        internal override GraphicsPath TabItemPath()
        {
            // Check to see if the user is supplying a path
            
            GraphicsPath path = base.TabItemPath();
            if (path != null)
                return (path);
            // Supply the default path based upon
            // the current tab alignment
            switch (TabItem.TabAlignment)
            {
                case eTabStripAlignment.Top:
                    return (TopTabPath());
                case eTabStripAlignment.Bottom:
                    return (BottomTabPath());
                case eTabStripAlignment.Left:
                    return (LeftTabPath());
                default:
                    return (RightTabPath());
            }
        }
        #region TopTabPath
        /// 
        /// Create the Top tab path
        /// 
        /// GraphicsPath
        private GraphicsPath TopTabPath()
        {
            GraphicsPath path = new GraphicsPath();
            Rectangle r = TabItem.DisplayRectangle;
            r.Width -= 1;
            r.Height -= 1;
            // Allow for the TabStrip border
            
            if (TabItem.IsSelected == true)
                r.Height += 2;
            // Create the path
            
            int n = TabStripItem.TabDisplay.TabOverlap + TabStripItem.TabDisplay.TabSpacing;
            Rectangle ar = new Rectangle(r.X + n, r.Y, LgRadius, LgRadius);
            path.AddLine(r.X, r.Bottom, r.X, r.Bottom);
            path.AddArc(ar, 218, 52);
            ar = new Rectangle(r.Right - SmRadius, r.Y, SmRadius, SmRadius);
            path.AddArc(ar, 270, 90);
            path.AddLine(r.Right, r.Top + SmRadius, r.Right, r.Bottom);
            return (path);
        }
        #endregion
        #region BottomTabPath
        /// 
        /// Creates the Bottom tab path
        /// 
        /// GraphicsPath
        private GraphicsPath BottomTabPath()
        {
            GraphicsPath path = new GraphicsPath();
            Rectangle r = TabItem.DisplayRectangle;
            r.Width -= 1;
            r.Height -= 1;
            // Allow for the TabStrip border
            
            if (TabItem.IsSelected == true)
            {
                r.Y -= 2;
                r.Height += 2;
            }
            // Create the path
            int n = TabStripItem.TabDisplay.TabOverlap;
            Rectangle ar = new
                Rectangle(r.Right - SmRadius, r.Bottom - SmRadius, SmRadius, SmRadius);
            path.AddLine(r.Right, r.Top, r.Right, r.Bottom - SmRadius);
            path.AddArc(ar, 0, 90);
            ar = new Rectangle(r.X + n, r.Bottom - LgRadius, LgRadius, LgRadius);
            path.AddArc(ar, 90, 62);
            path.AddLine(r.X, r.Top, r.X, r.Top);
            return (path);
        }
        #endregion
        #region LeftTabPath
        /// 
        /// Creates the Left tab path
        /// 
        /// GraphicsPath
        private GraphicsPath LeftTabPath()
        {
            GraphicsPath path = new GraphicsPath();
            Rectangle r = TabItem.DisplayRectangle;
            r.Width -= 1;
            r.Height -= 1;
            // Allow for the TabStrip border
            if (TabItem.IsSelected == true)
                r.Width += 2;
            // Create the tab path
            int n = TabStripItem.TabDisplay.TabOverlap;
            Rectangle ar = new
                Rectangle(r.X, r.Bottom - SmRadius, SmRadius, SmRadius);
            path.AddLine(r.Right, r.Bottom, r.X + SmRadius, r.Bottom);
            path.AddArc(ar, 90, 90);
            ar = new Rectangle(r.X, r.Y + n, LgRadius, LgRadius);
            path.AddArc(ar, 180, 62);
            path.AddLine(r.Right, r.Top, r.Right, r.Top);
            return (path);
        }
        #endregion
        #region RightTabPath
        /// 
        /// Create the Right tab path
        /// 
        /// GraphicsPath
        private GraphicsPath RightTabPath()
        {
            GraphicsPath path = new GraphicsPath();
            Rectangle r = TabItem.DisplayRectangle;
            r.Width -= 1;
            r.Height -= 1;
            // Allow for the TabStrip border
            
            if (TabItem.IsSelected == true)
            {
                r.X -= 2;
                r.Width += 2;
            }
            // Create the tab path
            int n = TabStripItem.TabDisplay.TabOverlap;
            Rectangle ar = new
                Rectangle(r.Right - LgRadius, r.Top + n, LgRadius, LgRadius);
            path.AddLine(r.X, r.Top, r.X, r.Top);
            path.AddArc(ar, 360 - 62, 62);
            ar = new Rectangle(r.Right - SmRadius, r.Bottom - SmRadius, SmRadius, SmRadius);
            path.AddArc(ar, 0, 90);
            path.AddLine(r.Right - SmRadius, r.Bottom, r.X, r.Bottom);
            return (path);
        }
        #endregion
        #endregion
    }
}
#endif