104 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Drawing;
 | 
						|
using System.Text;
 | 
						|
 | 
						|
 | 
						|
namespace DevComponents.DotNetBar.Rendering
 | 
						|
{
 | 
						|
    /// <summary>
 | 
						|
    /// Represents the painter for ColorItem in Office 2007 style
 | 
						|
    /// </summary>
 | 
						|
    internal class Office2007ColorItemPainter : ColorItemPainter, IOffice2007Painter
 | 
						|
    {
 | 
						|
        #region IOffice2007Painter
 | 
						|
        private Office2007ColorTable m_ColorTable = null; //new Office2007ColorTable();
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets or sets color table used by renderer.
 | 
						|
        /// </summary>
 | 
						|
        public Office2007ColorTable ColorTable
 | 
						|
        {
 | 
						|
            get { return m_ColorTable; }
 | 
						|
            set { m_ColorTable = value; }
 | 
						|
        }
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Internal Implementation
 | 
						|
        public override void PaintColorItem(ColorItemRendererEventArgs e)
 | 
						|
        {
 | 
						|
            Graphics g = e.Graphics;
 | 
						|
            ColorItem item = e.ColorItem;
 | 
						|
            Rectangle r = item.Bounds;
 | 
						|
            Color borderColor = m_ColorTable.ColorItem.Border;
 | 
						|
            Color outerHotColor = m_ColorTable.ColorItem.MouseOverOuterBorder;
 | 
						|
            Color innerHotColor = m_ColorTable.ColorItem.MouseOverInnerBorder;
 | 
						|
 | 
						|
            System.Drawing.Drawing2D.SmoothingMode sm = g.SmoothingMode;
 | 
						|
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.Default;
 | 
						|
 | 
						|
            Region clip = g.Clip;
 | 
						|
            g.SetClip(r);
 | 
						|
            Color selectedColor = Color.Empty;
 | 
						|
            ColorPickerDropDown cpd = null;
 | 
						|
            BaseItem parent = item.Parent;
 | 
						|
            while (parent != null)
 | 
						|
            {
 | 
						|
                if (parent is ColorPickerDropDown)
 | 
						|
                {
 | 
						|
                    cpd = parent as ColorPickerDropDown;
 | 
						|
                    break;
 | 
						|
                }
 | 
						|
                parent = parent.Parent;
 | 
						|
            }
 | 
						|
            if (cpd != null)
 | 
						|
                selectedColor = cpd.SelectedColor;
 | 
						|
            try
 | 
						|
            {
 | 
						|
                if (!item.Color.IsEmpty)
 | 
						|
                {
 | 
						|
                    Rectangle fill = r;
 | 
						|
                    fill.Inflate(1, 1);
 | 
						|
                    DisplayHelp.FillRectangle(g, fill, item.Color, Color.Empty);
 | 
						|
                }
 | 
						|
 | 
						|
                if (item.IsMouseOver || selectedColor == item.Color)
 | 
						|
                {
 | 
						|
                    Rectangle inner = r;
 | 
						|
                    inner.Inflate(-1, -1);
 | 
						|
                    DisplayHelp.DrawRectangle(g, innerHotColor, inner);
 | 
						|
                    DisplayHelp.DrawRectangle(g, outerHotColor, r);
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    eColorItemBorder border = item.Border;
 | 
						|
                    if (border == eColorItemBorder.All)
 | 
						|
                        DisplayHelp.DrawRectangle(g, borderColor, r);
 | 
						|
                    else if (border != eColorItemBorder.None)
 | 
						|
                    {
 | 
						|
                        using (Pen pen = new Pen(borderColor))
 | 
						|
                        {
 | 
						|
                            if ((border & eColorItemBorder.Left) == eColorItemBorder.Left)
 | 
						|
                                g.DrawLine(pen, r.X, r.Y, r.X, r.Bottom - 1);
 | 
						|
                            if ((border & eColorItemBorder.Right) == eColorItemBorder.Right)
 | 
						|
                                g.DrawLine(pen, r.Right - 1, r.Y, r.Right - 1, r.Bottom - 1);
 | 
						|
                            if ((border & eColorItemBorder.Top) == eColorItemBorder.Top)
 | 
						|
                                g.DrawLine(pen, r.X, r.Y, r.Right - 1, r.Y);
 | 
						|
                            if ((border & eColorItemBorder.Bottom) == eColorItemBorder.Bottom)
 | 
						|
                                g.DrawLine(pen, r.X, r.Bottom - 1, r.Right - 1, r.Bottom - 1);
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
            finally
 | 
						|
            {
 | 
						|
                if (clip != null)
 | 
						|
                    g.Clip = clip;
 | 
						|
                else
 | 
						|
                    g.ResetClip();
 | 
						|
            }
 | 
						|
            g.SmoothingMode = sm;
 | 
						|
        }
 | 
						|
        #endregion
 | 
						|
    }
 | 
						|
}
 |