using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
namespace DevComponents.DotNetBar
{
	/// 
	/// Represents painter for Office 2003 style splitter.
	/// 
	internal class SplitterOffice2003Painter:SplitterPainter
	{
		/// 
		/// Creates new instance of splitter painter.
		/// 
		public SplitterOffice2003Painter(){}
		#region Painting
		/// 
		/// Paints splitter.
		/// 
		/// Paint information.
		public override void Paint(SplitterPaintInfo info)
		{
			int spacing=8;
			Rectangle r=info.DisplayRectangle;
			Graphics g=info.Graphics;
			SplitterColors colors=info.Colors;
			PaintBackground(info);
			if(info.Dock==DockStyle.Top || info.Dock==DockStyle.Bottom)
			{
				Point pStart=new Point(r.X+(r.Width-34)/2-1,r.Y+(r.Height-4)/2);
				using(SolidBrush brush=new SolidBrush(colors.GripLightColor)) //White
				{
					int x=pStart.X+1;
					int y=pStart.Y+1;
					for(int i=0;i<9;i++)
					{
						g.FillRectangle(brush,x,y,2,2);
						x+=4;
					}
				}
				using(SolidBrush brush=new SolidBrush(colors.GripDarkColor)) //Color.FromArgb(128,ControlPaint.Dark(colors.PanelBackground))))
				{
					int x=pStart.X;
					int y=pStart.Y;
					for(int i=0;i<9;i++)
					{
						g.FillRectangle(brush,x,y,2,2);
						x+=4;
					}
				}
				if(info.Expandable)
				{
					Point p=new Point(r.X+(r.Width-36)/2-this.ArrowSize-spacing,r.Y+(r.Height-ArrowSize/2)/2);
					this.PaintArrow(p,info);
					p.Offset(36+spacing*2+ArrowSize,0);
					this.PaintArrow(p,info);
				}
			}
			else
			{
				Point pStart=new Point(r.X+(r.Width-4)/2,r.Y+(r.Height-34)/2);
				using(SolidBrush brush=new SolidBrush(colors.GripLightColor))
				{
					int y=pStart.Y; //r.Y+(r.Height-34)/2;
					int x=pStart.X+1; // r.X+2;
					for(int i=0;i<9;i++)
					{
						g.FillRectangle(brush,x,y,2,2);
						y+=4;
					}
				}
				using(SolidBrush brush=new SolidBrush(colors.GripDarkColor))
				{
					int y=pStart.Y-1; //r.Y+(r.Height-34)/2-1;
					int x=pStart.X; //r.X+1;
					for(int i=0;i<9;i++)
					{
						g.FillRectangle(brush,x,y,2,2);
						y+=4;
					}
				}
				if(info.Expandable)
				{
					Point p=new Point(r.X+(r.Width-ArrowSize/2)/2,r.Y+(r.Height-36)/2-this.ArrowSize-spacing);
					this.PaintArrow(p,info);
					p.Offset(0,36+spacing*2+ArrowSize);
					this.PaintArrow(p,info);
				}
			}
		}
		#endregion
	}
}