// Gets the matrix that transforms the top tab geometries for position on left, right, or bottom
        private MatrixTransform GetTabTransform(ClassicBorderStyle style, double xOffset, double yOffset)
        {
            if (_tabCache == null)
                _tabCache = new TabGeometryCache();

            if (_tabCache.Transform == null || xOffset != _tabCache.xOffset || yOffset != _tabCache.yOffset)
            {
                switch (style)
                {
                    case ClassicBorderStyle.TabLeft:
                        _tabCache.Transform = new MatrixTransform(new Matrix(0.0, 1.0, 1.0, 0.0, xOffset, yOffset));
                        break;
                    case ClassicBorderStyle.TabRight:
                        _tabCache.Transform = new MatrixTransform(new Matrix(0.0, -1.0, -1.0, 0.0, xOffset, yOffset));
                        break;
                    case ClassicBorderStyle.TabBottom:
                        _tabCache.Transform = new MatrixTransform(new Matrix(-1.0, 0.0, 0.0, -1.0, xOffset, yOffset));
                        break;
                }
                _tabCache.xOffset = xOffset;
                _tabCache.yOffset = yOffset;
            }
            return _tabCache.Transform;
        }
        // Is this a tab style
        private bool IsTabStyle(ClassicBorderStyle style)
        {
            return style == ClassicBorderStyle.TabLeft ||
                   style == ClassicBorderStyle.TabTop ||
                   style == ClassicBorderStyle.TabRight ||
                   style == ClassicBorderStyle.TabBottom;

        }