182 lines
		
	
	
		
			8.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			182 lines
		
	
	
		
			8.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Drawing;
 | 
						|
 | 
						|
namespace DevComponents.DotNetBar
 | 
						|
{
 | 
						|
	/// <summary>
 | 
						|
	/// Summary description for ButtonItemPainter.
 | 
						|
	/// </summary>
 | 
						|
	internal abstract class ButtonItemPainter
 | 
						|
	{
 | 
						|
		public abstract void PaintButton(ButtonItem button, ItemPaintArgs pa);
 | 
						|
        public abstract void PaintButtonBackground(ButtonItem button, ItemPaintArgs pa, CompositeImage image);
 | 
						|
		public abstract void PaintButtonCheck(ButtonItem button, ItemPaintArgs pa, CompositeImage image, Rectangle r);
 | 
						|
		public abstract void PaintButtonImage(ButtonItem button, ItemPaintArgs pa, CompositeImage image, Rectangle imagebounds);
 | 
						|
		public abstract void PaintButtonMouseOver(ButtonItem button, ItemPaintArgs pa, CompositeImage image, Rectangle r);
 | 
						|
		public abstract void PaintButtonText(ButtonItem button, ItemPaintArgs pa, Color textColor, CompositeImage image);
 | 
						|
		public abstract void PaintCustomizeCheck(ButtonItem button, ItemPaintArgs pa, Rectangle r);
 | 
						|
		public abstract void PaintExpandButton(ButtonItem button, ItemPaintArgs pa);
 | 
						|
 | 
						|
		public abstract Rectangle GetCheckRectangle(ButtonItem button, ItemPaintArgs pa, CompositeImage image);
 | 
						|
		public abstract Rectangle GetCustomizeMenuCheckRectangle(ButtonItem button, ItemPaintArgs pa);
 | 
						|
		public abstract Rectangle GetImageRectangle(ButtonItem button, ItemPaintArgs pa, CompositeImage image);
 | 
						|
		public abstract Rectangle GetMouseOverRectangle(ButtonItem button, ItemPaintArgs pa, CompositeImage image);
 | 
						|
 | 
						|
		public abstract eTextFormat GetStringFormat(ButtonItem button, ItemPaintArgs pa, CompositeImage image);
 | 
						|
 | 
						|
		public static string GetDrawText(string text)
 | 
						|
		{
 | 
						|
			return text; //.Replace(@"\n",Environment.NewLine);
 | 
						|
		}
 | 
						|
 | 
						|
		public static bool IsItemEnabled(BaseItem item, ItemPaintArgs pa)
 | 
						|
		{
 | 
						|
            return item.GetEnabled(pa.ContainerControl);
 | 
						|
		}
 | 
						|
 | 
						|
        public static Point[] GetExpandPolygon(Rectangle r, ePopupSide direction)
 | 
						|
        {
 | 
						|
            Point[] p = new Point[3];
 | 
						|
            Size defaultSize = new Size(Dpi.Width4, Dpi.Height3);
 | 
						|
            switch (direction)
 | 
						|
            {
 | 
						|
                case ePopupSide.Right:
 | 
						|
                    {
 | 
						|
                        p[0].X = r.Left + 1;
 | 
						|
                        p[0].Y = r.Top + (r.Height - defaultSize.Height) / 2 - 1;
 | 
						|
                        p[1].X = p[0].X;
 | 
						|
                        p[1].Y = p[0].Y + Dpi.Height6;
 | 
						|
                        p[2].X = p[0].X + Dpi.Width3;
 | 
						|
                        p[2].Y = p[0].Y + Dpi.Width3;
 | 
						|
                        break;
 | 
						|
                    }
 | 
						|
                case ePopupSide.Left:
 | 
						|
                    {
 | 
						|
                        p[0].X = r.Left + Dpi.Width3;
 | 
						|
                        p[0].Y = r.Top + (r.Height - defaultSize.Height) / 2 - 1;
 | 
						|
                        p[1].X = p[0].X;
 | 
						|
                        p[1].Y = p[0].Y + Dpi.Height6;
 | 
						|
                        p[2].X = p[0].X - Dpi.Width3;
 | 
						|
                        p[2].Y = p[0].Y + Dpi.Height3;
 | 
						|
                        break;
 | 
						|
                    }
 | 
						|
                case ePopupSide.Top:
 | 
						|
                    {
 | 
						|
                        p[0].X = r.Left + (r.Width - defaultSize.Width) / 2;
 | 
						|
                        p[0].Y = r.Top + (r.Height - defaultSize.Height) / 2 + defaultSize.Height;
 | 
						|
                        p[1].X = p[0].X + Dpi.Width5;
 | 
						|
                        p[1].Y = p[0].Y+1;
 | 
						|
                        p[2].X = p[0].X + Dpi.Width2;
 | 
						|
                        p[2].Y = p[0].Y - Dpi.Height3;
 | 
						|
                        //p[0].X = r.Left + (r.Width - defaultSize.Width) / 2 - Dpi.Width1;
 | 
						|
                        //p[0].Y = r.Top + (r.Height - defaultSize.Height) / 2 + defaultSize.Height;
 | 
						|
                        //p[1].X = p[0].X + Dpi.Width6;
 | 
						|
                        //p[1].Y = p[0].Y;
 | 
						|
                        //p[2].X = p[0].X + Dpi.Width3;
 | 
						|
                        //p[2].Y = p[0].Y - Dpi.Height4;
 | 
						|
                        break;
 | 
						|
                    }
 | 
						|
                case ePopupSide.Bottom:
 | 
						|
                case ePopupSide.Default:
 | 
						|
                    {
 | 
						|
                        p[0].X = r.Left + (r.Width - defaultSize.Width) / 2;
 | 
						|
                        p[0].Y = r.Top + (r.Height - defaultSize.Height) / 2 + 1;
 | 
						|
                        p[1].X = p[0].X + Dpi.Width5;
 | 
						|
                        p[1].Y = p[0].Y;
 | 
						|
                        p[2].X = p[0].X + Dpi.Width2;
 | 
						|
                        p[2].Y = p[0].Y + Dpi.Height3;
 | 
						|
                        break;
 | 
						|
                    }
 | 
						|
            }
 | 
						|
            return p;
 | 
						|
        }
 | 
						|
 | 
						|
        public static void PaintButtonExpandIndicator(ButtonItem button, ItemPaintArgs pa)
 | 
						|
        {
 | 
						|
            Graphics g = pa.Graphics;
 | 
						|
            Rectangle itemRect = button.DisplayRectangle;
 | 
						|
            Point[] p = new Point[3];
 | 
						|
            Rectangle r = button.SubItemsRect;
 | 
						|
 | 
						|
            if (button.PopupSide == ePopupSide.Default)
 | 
						|
            {
 | 
						|
                if (button.Orientation == eOrientation.Horizontal)
 | 
						|
                {
 | 
						|
                    p[0].X = itemRect.Left + r.Left + (r.Width - Dpi.Width5) / 2;
 | 
						|
                    p[0].Y = itemRect.Top + r.Top + (r.Height - Dpi.Height3) / 2 + 1;
 | 
						|
                    p[1].X = p[0].X + Dpi.Width5;
 | 
						|
                    p[1].Y = p[0].Y;
 | 
						|
                    p[2].X = p[0].X + Dpi.Width2;
 | 
						|
                    p[2].Y = p[0].Y + Dpi.Height3;
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    p[0].X = itemRect.Left + r.Left + r.Width / 2;
 | 
						|
                    p[0].Y = itemRect.Top + r.Top + r.Height / 2 - Dpi.Height3;
 | 
						|
                    p[1].X = p[0].X;
 | 
						|
                    p[1].Y = p[0].Y + Dpi.Height6;
 | 
						|
                    p[2].X = p[0].X + Dpi.Width3;
 | 
						|
                    p[2].Y = p[0].Y + Dpi.Height3;
 | 
						|
                }
 | 
						|
            }
 | 
						|
            else
 | 
						|
            {
 | 
						|
                switch (button.PopupSide)
 | 
						|
                {
 | 
						|
                    case ePopupSide.Right:
 | 
						|
                        {
 | 
						|
                            p[0].X = itemRect.Left + r.Left + r.Width / 2;
 | 
						|
                            p[0].Y = itemRect.Top + r.Top + r.Height / 2 - Dpi.Height3;
 | 
						|
                            p[1].X = p[0].X;
 | 
						|
                            p[1].Y = p[0].Y + Dpi.Height6;
 | 
						|
                            p[2].X = p[0].X + Dpi.Width3;
 | 
						|
                            p[2].Y = p[0].Y + Dpi.Height3;
 | 
						|
                            break;
 | 
						|
                        }
 | 
						|
                    case ePopupSide.Left:
 | 
						|
                        {
 | 
						|
                            p[0].X = itemRect.Left + r.Left + r.Width / 2 + Dpi.Width3;
 | 
						|
                            p[0].Y = itemRect.Top + r.Top + r.Height / 2 - Dpi.Height3;
 | 
						|
                            p[1].X = p[0].X;
 | 
						|
                            p[1].Y = p[0].Y + Dpi.Height6;
 | 
						|
                            p[2].X = p[0].X - Dpi.Width3;
 | 
						|
                            p[2].Y = p[0].Y + Dpi.Height3;
 | 
						|
                            break;
 | 
						|
                        }
 | 
						|
                    case ePopupSide.Top:
 | 
						|
                        {
 | 
						|
                            p[0].X = itemRect.Left + r.Left + (r.Width - Dpi.Width5) / 2;
 | 
						|
                            p[0].Y = itemRect.Top + r.Top + (r.Height - Dpi.Height3) / 2 + Dpi.Height4;
 | 
						|
                            p[1].X = p[0].X + Dpi.Width6;
 | 
						|
                            p[1].Y = p[0].Y;
 | 
						|
                            p[2].X = p[0].X + Dpi.Width3;
 | 
						|
                            p[2].Y = p[0].Y - Dpi.Height4;
 | 
						|
                            break;
 | 
						|
                        }
 | 
						|
                    case ePopupSide.Bottom:
 | 
						|
                        {
 | 
						|
                            p[0].X = itemRect.Left + r.Left + (r.Width - Dpi.Width5) / 2 + 1;
 | 
						|
                            p[0].Y = itemRect.Top + r.Top + (r.Height - Dpi.Height3) / 2 + 1;
 | 
						|
                            p[1].X = p[0].X + Dpi.Width5;
 | 
						|
                            p[1].Y = p[0].Y;
 | 
						|
                            p[2].X = p[0].X + Dpi.Width2;
 | 
						|
                            p[2].Y = p[0].Y + Dpi.Height3;
 | 
						|
                            break;
 | 
						|
                        }
 | 
						|
                }
 | 
						|
            }
 | 
						|
            if (IsItemEnabled(button, pa))
 | 
						|
            {
 | 
						|
                using (SolidBrush mybrush = new SolidBrush(pa.Colors.ItemText))
 | 
						|
                    g.FillPolygon(mybrush, p);
 | 
						|
            }
 | 
						|
            else
 | 
						|
            {
 | 
						|
                using (SolidBrush mybrush = new SolidBrush(pa.Colors.ItemDisabledText))
 | 
						|
                    g.FillPolygon(mybrush, p);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
	}
 | 
						|
}
 |