Bloom.Workspace.TabStripRenderer.OnRenderButtonBackground C# (CSharp) Method

OnRenderButtonBackground() protected method

protected OnRenderButtonBackground ( System.Windows.Forms.ToolStripItemRenderEventArgs e ) : void
e System.Windows.Forms.ToolStripItemRenderEventArgs
return void
        protected override void OnRenderButtonBackground(ToolStripItemRenderEventArgs e)
        {
            Graphics g = e.Graphics;
            TabStrip tabs = e.ToolStrip as TabStrip;
            TabStripButton tab = e.Item as TabStripButton;
            if (tabs == null || tab == null)
            {
                if (_currentRenderer != null)
                    _currentRenderer.DrawButtonBackground(e);
                else
                    base.OnRenderButtonBackground(e);
                return;
            }

            bool selected = tab.Checked;
            bool hovered = tab.Selected;
            int top = 0;
            int left = 0;
            int width = tab.Bounds.Width - 1;
            int height = tab.Bounds.Height - 1;
            Rectangle drawBorder;

            //
            //			if (UseVisualStyles)
            //			{
            //				if (tabs.Orientation == Orientation.Horizontal)
            //				{
            //					if (!selected)
            //					{
            //						top = selOffset;
            //						height -= (selOffset - 1);
            //					}
            //					else
            //						top = 1;
            //					drawBorder = new Rectangle(0, 0, width, height);
            //				}
            //				else
            //				{
            //					if (!selected)
            //					{
            //						left = selOffset;
            //						width -= (selOffset - 1);
            //					}
            //					else
            //						left = 1;
            //					drawBorder = new Rectangle(0, 0, height, width);
            //				}
            //				using (Bitmap b = new Bitmap(drawBorder.Width, drawBorder.Height))
            //				{
            //					VisualStyleElement el = VisualStyleElement.Tab.TabItem.Normal;
            //					if (selected)
            //						el = VisualStyleElement.Tab.TabItem.Pressed;
            //					if (hovered)
            //						el = VisualStyleElement.Tab.TabItem.Hot;
            //					if (!tab.Enabled)
            //						el = VisualStyleElement.Tab.TabItem.Disabled;
            //
            //					if (!selected || hovered) drawBorder.Width++; else drawBorder.Height++;
            //
            //					using (Graphics gr = Graphics.FromImage(b))
            //					{
            //						VisualStyleRenderer rndr = new VisualStyleRenderer(el);
            //						rndr.DrawBackground(gr, drawBorder);
            //
            //						if (tabs.Orientation == Orientation.Vertical)
            //						{
            //							if (Mirrored)
            //								b.RotateFlip(RotateFlipType.Rotate270FlipXY);
            //							else
            //								b.RotateFlip(RotateFlipType.Rotate270FlipNone);
            //						}
            //						else
            //						{
            //							if (Mirrored)
            //								b.RotateFlip(RotateFlipType.RotateNoneFlipY);
            //						}
            //						if (Mirrored)
            //						{
            //							left = tab.Bounds.Width - b.Width - left;
            //							top = tab.Bounds.Height - b.Height - top;
            //						}
            //						g.DrawImage(b, left, top);
            //					}
            //				}
            //			}
            //			else
            {
                if (tabs.Orientation == Orientation.Horizontal)
                {
                    if (!selected)
                    {
                        top = selOffset;
                        height -= (selOffset - 1);
                    }
                    else
                        top = 1;
                    if (Mirrored)
                    {
                        left = 1;
                        top = 0;
                    }
                    else
                        top++;
                    width--;
                }
            //				else
            //				{
            //					if (!selected)
            //					{
            //						left = selOffset;
            //						width--;
            //					}
            //					else
            //						left = 1;
            //					if (Mirrored)
            //					{
            //						left = 0;
            //						top = 1;
            //					}
            //				}
                height--;
                drawBorder = new Rectangle(left, top, width, height);

                using (GraphicsPath gp = new GraphicsPath())
                {
            //					if (Mirrored && tabs.Orientation == Orientation.Horizontal)
            //					{
            //						gp.AddLine(drawBorder.Left, drawBorder.Top, drawBorder.Left, drawBorder.Bottom - 2);
            //						gp.AddArc(drawBorder.Left, drawBorder.Bottom - 3, 2, 2, 90, 90);
            //						gp.AddLine(drawBorder.Left + 2, drawBorder.Bottom, drawBorder.Right - 2, drawBorder.Bottom);
            //						gp.AddArc(drawBorder.Right - 2, drawBorder.Bottom - 3, 2, 2, 0, 90);
            //						gp.AddLine(drawBorder.Right, drawBorder.Bottom - 2, drawBorder.Right, drawBorder.Top);
            //					}
                    //else
                     if (!Mirrored && tabs.Orientation == Orientation.Horizontal)
                    {
                        gp.AddLine(drawBorder.Left, drawBorder.Bottom, drawBorder.Left, drawBorder.Top + 2);
                        gp.AddArc(drawBorder.Left, drawBorder.Top + 1, 2, 2, 180, 90);
                        gp.AddLine(drawBorder.Left + 2, drawBorder.Top, drawBorder.Right - 2, drawBorder.Top);
                        gp.AddArc(drawBorder.Right - 2, drawBorder.Top + 1, 2, 2, 270, 90);
                        gp.AddLine(drawBorder.Right, drawBorder.Top + 2, drawBorder.Right, drawBorder.Bottom);
                    }
            //					else if (Mirrored && tabs.Orientation == Orientation.Vertical)
            //					{
            //						gp.AddLine(drawBorder.Left, drawBorder.Top, drawBorder.Right - 2, drawBorder.Top);
            //						gp.AddArc(drawBorder.Right - 2, drawBorder.Top + 1, 2, 2, 270, 90);
            //						gp.AddLine(drawBorder.Right, drawBorder.Top + 2, drawBorder.Right, drawBorder.Bottom - 2);
            //						gp.AddArc(drawBorder.Right - 2, drawBorder.Bottom - 3, 2, 2, 0, 90);
            //						gp.AddLine(drawBorder.Right - 2, drawBorder.Bottom, drawBorder.Left, drawBorder.Bottom);
            //					}
            //					else
            //					{
            //						gp.AddLine(drawBorder.Right, drawBorder.Top, drawBorder.Left + 2, drawBorder.Top);
            //						gp.AddArc(drawBorder.Left, drawBorder.Top + 1, 2, 2, 180, 90);
            //						gp.AddLine(drawBorder.Left, drawBorder.Top + 2, drawBorder.Left, drawBorder.Bottom - 2);
            //						gp.AddArc(drawBorder.Left, drawBorder.Bottom - 3, 2, 2, 90, 90);
            //						gp.AddLine(drawBorder.Left + 2, drawBorder.Bottom, drawBorder.Right, drawBorder.Bottom);
            //					}

                    if (selected || hovered)
                    {
                        Color fill = (hovered) ? Palette.TextAgainstDarkBackground : Color.FromArgb(64, 64, 64);
                        if (_renderMode == ToolStripRenderMode.Professional)
                        {
                            fill = (hovered) ? ProfessionalColors.ButtonCheckedGradientBegin : ProfessionalColors.ButtonCheckedGradientEnd;
                            using (LinearGradientBrush br = new LinearGradientBrush(tab.ContentRectangle, fill, ProfessionalColors.ButtonCheckedGradientMiddle, LinearGradientMode.Vertical))
                                g.FillPath(br, gp);
                        }
                        else
                            using (SolidBrush br = new SolidBrush(fill))
                                g.FillPath(br, gp);
                    }
                    else
                    {
                        using (SolidBrush br = new SolidBrush(e.Item.BackColor))
                            g.FillPath(br, gp);
                    }

            //					using (Pen p = new Pen((selected) ? ControlPaint.Dark(SystemColors.AppWorkspace) : SystemColors.AppWorkspace))
            //						g.DrawPath(p, gp);

                    g.DrawPath(Pens.Black, gp);
                }
            }
        }