private Rectangle GetTabRectangle(VS2005AutoHideStrip.TabVS2005 tab, bool transformed)
        {
            DockState dockState = tab.Content.DockHandler.DockState;
            Rectangle logicalTabStripRectangle = this.GetLogicalTabStripRectangle(dockState);

            checked
            {
                Rectangle result;
                if (logicalTabStripRectangle.IsEmpty)
                {
                    result = Rectangle.Empty;
                }
                else
                {
                    int tabX     = tab.TabX;
                    int y        = logicalTabStripRectangle.Y + ((dockState == DockState.DockTopAutoHide || dockState == DockState.DockRightAutoHide) ? 0 : VS2005AutoHideStrip.TabGapTop);
                    int tabWidth = tab.TabWidth;
                    int height   = logicalTabStripRectangle.Height - VS2005AutoHideStrip.TabGapTop;
                    if (!transformed)
                    {
                        result = new Rectangle(tabX, y, tabWidth, height);
                    }
                    else
                    {
                        result = this.GetTransformedRectangle(dockState, new Rectangle(tabX, y, tabWidth, height));
                    }
                }
                return(result);
            }
        }
        protected override IDockContent HitTest(Point ptMouse)
        {
            DockState[]  dockStates = VS2005AutoHideStrip.DockStates;
            IDockContent result;

            for (int i = 0; i < dockStates.Length; i++)
            {
                DockState dockState = dockStates[i];
                if (this.GetLogicalTabStripRectangle(dockState, true).Contains(ptMouse))
                {
                    foreach (AutoHideStripBase.Pane current in (IEnumerable <AutoHideStripBase.Pane>)base.GetPanes(dockState))
                    {
                        using (IEnumerator <AutoHideStripBase.Tab> enumerator2 = ((IEnumerable <AutoHideStripBase.Tab>)current.AutoHideTabs).GetEnumerator())
                        {
                            while (enumerator2.MoveNext())
                            {
                                VS2005AutoHideStrip.TabVS2005 tabVS = (VS2005AutoHideStrip.TabVS2005)enumerator2.Current;
                                GraphicsPath tabOutline             = this.GetTabOutline(tabVS, true, true);
                                if (tabOutline.IsVisible(ptMouse))
                                {
                                    result = tabVS.Content;
                                    return(result);
                                }
                            }
                        }
                    }
                }
            }
            result = null;
            return(result);
        }
        private void CalculateTabs(DockState dockState)
        {
            Rectangle logicalTabStripRectangle = this.GetLogicalTabStripRectangle(dockState);

            checked
            {
                int num  = logicalTabStripRectangle.Height - VS2005AutoHideStrip.ImageGapTop - VS2005AutoHideStrip.ImageGapBottom;
                int num2 = VS2005AutoHideStrip.ImageWidth;
                if (num > VS2005AutoHideStrip.ImageHeight)
                {
                    num2 = VS2005AutoHideStrip.ImageWidth * (num / VS2005AutoHideStrip.ImageHeight);
                }
                int num3 = VS2005AutoHideStrip.TabGapLeft + logicalTabStripRectangle.X;
                foreach (AutoHideStripBase.Pane current in (IEnumerable <AutoHideStripBase.Pane>)base.GetPanes(dockState))
                {
                    using (IEnumerator <AutoHideStripBase.Tab> enumerator2 = ((IEnumerable <AutoHideStripBase.Tab>)current.AutoHideTabs).GetEnumerator())
                    {
                        while (enumerator2.MoveNext())
                        {
                            VS2005AutoHideStrip.TabVS2005 tabVS = (VS2005AutoHideStrip.TabVS2005)enumerator2.Current;
                            int num4 = num2 + VS2005AutoHideStrip.ImageGapLeft + VS2005AutoHideStrip.ImageGapRight + TextRenderer.MeasureText(tabVS.Content.DockHandler.TabText, this.TextFont).Width + VS2005AutoHideStrip.TextGapLeft + VS2005AutoHideStrip.TextGapRight;
                            tabVS.TabX     = num3;
                            tabVS.TabWidth = num4;
                            num3          += num4;
                        }
                    }
                    num3 += VS2005AutoHideStrip.TabGapBetween;
                }
            }
        }
        private void DrawTabStrip(Graphics g, DockState dockState)
        {
            Rectangle logicalTabStripRectangle = this.GetLogicalTabStripRectangle(dockState);

            if (!logicalTabStripRectangle.IsEmpty)
            {
                Matrix transform = g.Transform;
                if (dockState == DockState.DockLeftAutoHide || dockState == DockState.DockRightAutoHide)
                {
                    Matrix matrix = new Matrix();
                    matrix.RotateAt(90f, new PointF((float)logicalTabStripRectangle.X + (float)logicalTabStripRectangle.Height / 2f, (float)logicalTabStripRectangle.Y + (float)logicalTabStripRectangle.Height / 2f));
                    g.Transform = matrix;
                }
                foreach (AutoHideStripBase.Pane current in (IEnumerable <AutoHideStripBase.Pane>)base.GetPanes(dockState))
                {
                    using (IEnumerator <AutoHideStripBase.Tab> enumerator2 = ((IEnumerable <AutoHideStripBase.Tab>)current.AutoHideTabs).GetEnumerator())
                    {
                        while (enumerator2.MoveNext())
                        {
                            VS2005AutoHideStrip.TabVS2005 tab = (VS2005AutoHideStrip.TabVS2005)enumerator2.Current;
                            this.DrawTab(g, tab);
                        }
                    }
                }
                g.Transform = transform;
            }
        }
        private GraphicsPath GetTabOutline(VS2005AutoHideStrip.TabVS2005 tab, bool transformed, bool rtlTransform)
        {
            DockState dockState = tab.Content.DockHandler.DockState;
            Rectangle rect      = this.GetTabRectangle(tab, transformed);

            if (rtlTransform)
            {
                rect = this.RtlTransform(rect, dockState);
            }
            bool upCorner = dockState == DockState.DockLeftAutoHide || dockState == DockState.DockBottomAutoHide;

            DrawHelper.GetRoundedCornerTab(VS2005AutoHideStrip.GraphicsPath, rect, upCorner);
            return(VS2005AutoHideStrip.GraphicsPath);
        }
 private Rectangle GetTabRectangle(VS2005AutoHideStrip.TabVS2005 tab)
 {
     return(this.GetTabRectangle(tab, false));
 }
        private void DrawTab(Graphics g, VS2005AutoHideStrip.TabVS2005 tab)
        {
            Rectangle tabRectangle = this.GetTabRectangle(tab);

            checked
            {
                if (!tabRectangle.IsEmpty)
                {
                    DockState          dockState          = tab.Content.DockHandler.DockState;
                    IDockContent       content            = tab.Content;
                    GraphicsPath       tabOutline         = this.GetTabOutline(tab, false, true);
                    Color              startColor         = base.DockPanel.Skin.AutoHideStripSkin.TabGradient.StartColor;
                    Color              endColor           = base.DockPanel.Skin.AutoHideStripSkin.TabGradient.EndColor;
                    LinearGradientMode linearGradientMode = base.DockPanel.Skin.AutoHideStripSkin.TabGradient.LinearGradientMode;
                    g.FillPath(new LinearGradientBrush(tabRectangle, startColor, endColor, linearGradientMode), tabOutline);
                    g.DrawPath(VS2005AutoHideStrip.PenTabBorder, tabOutline);
                    Matrix transform = g.Transform;
                    g.Transform = VS2005AutoHideStrip.MatrixIdentity;
                    Rectangle rect = tabRectangle;
                    rect.X += VS2005AutoHideStrip.ImageGapLeft;
                    rect.Y += VS2005AutoHideStrip.ImageGapTop;
                    int num  = tabRectangle.Height - VS2005AutoHideStrip.ImageGapTop - VS2005AutoHideStrip.ImageGapBottom;
                    int num2 = VS2005AutoHideStrip.ImageWidth;
                    if (num > VS2005AutoHideStrip.ImageHeight)
                    {
                        num2 = VS2005AutoHideStrip.ImageWidth * (num / VS2005AutoHideStrip.ImageHeight);
                    }
                    rect.Height = num;
                    rect.Width  = num2;
                    rect        = this.GetTransformedRectangle(dockState, rect);
                    if (dockState == DockState.DockLeftAutoHide || dockState == DockState.DockRightAutoHide)
                    {
                        Rectangle rectangle  = this.RtlTransform(rect, dockState);
                        Point[]   destPoints = new Point[]
                        {
                            new Point(rectangle.X + rectangle.Width, rectangle.Y),
                            new Point(rectangle.X + rectangle.Width, rectangle.Y + rectangle.Height),
                            new Point(rectangle.X, rectangle.Y)
                        };
                        using (Icon icon = new Icon(((Form)content).Icon, 16, 16))
                        {
                            g.DrawImage(icon.ToBitmap(), destPoints);
                        }
                    }
                    else
                    {
                        g.DrawIcon(((Form)content).Icon, this.RtlTransform(rect, dockState));
                    }
                    Rectangle rectangle2 = tabRectangle;
                    rectangle2.X     += VS2005AutoHideStrip.ImageGapLeft + num2 + VS2005AutoHideStrip.ImageGapRight + VS2005AutoHideStrip.TextGapLeft;
                    rectangle2.Width -= VS2005AutoHideStrip.ImageGapLeft + num2 + VS2005AutoHideStrip.ImageGapRight + VS2005AutoHideStrip.TextGapLeft;
                    rectangle2        = this.RtlTransform(this.GetTransformedRectangle(dockState, rectangle2), dockState);
                    Color textColor = base.DockPanel.Skin.AutoHideStripSkin.TabGradient.TextColor;
                    if (dockState == DockState.DockLeftAutoHide || dockState == DockState.DockRightAutoHide)
                    {
                        g.DrawString(content.DockHandler.TabText, this.TextFont, new SolidBrush(textColor), rectangle2, this.StringFormatTabVertical);
                    }
                    else
                    {
                        g.DrawString(content.DockHandler.TabText, this.TextFont, new SolidBrush(textColor), rectangle2, this.StringFormatTabHorizontal);
                    }
                    g.Transform = transform;
                }
            }
        }