231 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			231 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| #if FRAMEWORK20
 | |
| using System.Drawing;
 | |
| using System.Drawing.Drawing2D;
 | |
| 
 | |
| namespace DevComponents.DotNetBar
 | |
| {
 | |
|     public class OneNote2007SuperTabItem : SuperTabItemBaseDisplay
 | |
|     {
 | |
|         #region Constants
 | |
| 
 | |
|         private const int Radius = 10;
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Constructor for OneNote2007 style SuperTabItem base display
 | |
|         /// </summary>
 | |
|         /// <param name="tabItem">Associated SuperTabItem</param>
 | |
|         public OneNote2007SuperTabItem(SuperTabItem tabItem)
 | |
|             : base(tabItem)
 | |
|         {
 | |
|         }
 | |
| 
 | |
|         #region ContentRectangle
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Calculates the Content Rectangle for the tab
 | |
|         /// </summary>
 | |
|         /// <returns>Content Rectangle</returns>
 | |
|         internal override Rectangle ContentRectangle()
 | |
|         {
 | |
|             Rectangle r = TabItem.DisplayRectangle;
 | |
| 
 | |
|             int n = TabStripItem.TabDisplay.TabOverlap + TabStripItem.TabDisplay.TabSpacing;
 | |
| 
 | |
|             if (TabStripItem.IsVertical == true)
 | |
|                 r.Height -= n;
 | |
|             else
 | |
|                 r.Width -= n;
 | |
| 
 | |
|             return (r);
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region TabItemPath
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Creates the tab item GraphicsPath
 | |
|         /// </summary>
 | |
|         /// <returns>Tab path</returns>
 | |
|         internal override GraphicsPath TabItemPath()
 | |
|         {
 | |
|             GraphicsPath path = base.TabItemPath();
 | |
| 
 | |
|             if (path != null)
 | |
|                 return (path);
 | |
| 
 | |
|             switch (TabItem.TabAlignment)
 | |
|             {
 | |
|                 case eTabStripAlignment.Top:
 | |
|                     return (TopTabPath());
 | |
| 
 | |
|                 case eTabStripAlignment.Bottom:
 | |
|                     return (BottomTabPath());
 | |
| 
 | |
|                 case eTabStripAlignment.Left:
 | |
|                     return (LeftTabPath());
 | |
| 
 | |
|                 default:
 | |
|                     return (RightTabPath());
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         #region TopTabPath
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Create the Top tab path
 | |
|         /// </summary>
 | |
|         /// <returns>GraphicsPath</returns>
 | |
|         private GraphicsPath TopTabPath()
 | |
|         {
 | |
|             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
 | |
| 
 | |
|             GraphicsPath path = new GraphicsPath();
 | |
| 
 | |
|             int n = TabStripItem.TabDisplay.TabOverlap + TabStripItem.TabDisplay.TabSpacing * 2;
 | |
| 
 | |
|             Rectangle ar = new Rectangle(r.X, r.Y, Radius, Radius);
 | |
| 
 | |
|             path.AddLine(r.X, r.Bottom, r.X, r.Top + Radius);
 | |
|             path.AddArc(ar, 180, 90);
 | |
|             path.AddLine(r.Right - n, r.Top, r.Right, r.Bottom);
 | |
| 
 | |
|             return (path);
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region BottomTabPath
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Creates the Bottom tab path
 | |
|         /// </summary>
 | |
|         /// <returns>GraphicsPath</returns>
 | |
|         private GraphicsPath BottomTabPath()
 | |
|         {
 | |
|             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
 | |
| 
 | |
|             GraphicsPath path = new GraphicsPath();
 | |
| 
 | |
|             int n = TabStripItem.TabDisplay.TabOverlap + TabStripItem.TabDisplay.TabSpacing * 2;
 | |
| 
 | |
|             Rectangle ar = new
 | |
|                 Rectangle(r.X, r.Bottom - Radius, Radius, Radius);
 | |
| 
 | |
|             path.AddLine(r.Right, r.Top, r.Right - n, r.Bottom);
 | |
|             path.AddArc(ar, 90, 90);
 | |
|             path.AddLine(r.X, r.Bottom - Radius, r.X, r.Top);
 | |
| 
 | |
| 
 | |
|             return (path);
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region LeftTabPath
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Creates the Left tab path
 | |
|         /// </summary>
 | |
|         /// <returns>GraphicsPath</returns>
 | |
|         private GraphicsPath LeftTabPath()
 | |
|         {
 | |
|             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
 | |
| 
 | |
|             GraphicsPath path = new GraphicsPath();
 | |
| 
 | |
|             int n = TabStripItem.TabDisplay.TabOverlap + TabStripItem.TabDisplay.TabSpacing;
 | |
| 
 | |
|             Rectangle ar = new
 | |
|                 Rectangle(r.X, r.Top, Radius, Radius);
 | |
| 
 | |
|             path.AddLine(r.Right, r.Top, r.X + Radius, r.Top);
 | |
|             path.AddArc(ar, -90, -90);
 | |
| 
 | |
|             path.AddLine(r.X, r.Top + Radius, r.X, r.Bottom - n);
 | |
|             path.AddLine(r.X, r.Bottom - n, r.Right, r.Bottom);
 | |
| 
 | |
|             return (path);
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #region RightTabPath
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Create the Right tab path
 | |
|         /// </summary>
 | |
|         /// <returns>GraphicsPath</returns>
 | |
|         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 + TabStripItem.TabDisplay.TabSpacing;
 | |
| 
 | |
|             if (TabStripItem.HorizontalText == false)
 | |
|                 n += TabStripItem.TabDisplay.TabSpacing;
 | |
| 
 | |
|             Rectangle ar = new
 | |
|                 Rectangle(r.Right - Radius, r.Top, Radius, Radius);
 | |
| 
 | |
|             path.AddLine(r.X, r.Top, r.Right - Radius, r.Top);
 | |
|             path.AddArc(ar, 270, 90);
 | |
| 
 | |
|             path.AddLine(r.Right, r.Top + Radius, r.Right, r.Bottom - n);
 | |
|             path.AddLine(r.Right, r.Bottom - n, r.X, r.Bottom);
 | |
| 
 | |
|             return (path);
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
| 
 | |
|         #endregion
 | |
|     }
 | |
| }
 | |
| #endif |