// 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; }
// Get the cache for the Highlight Geometry private Geometry GetHighlight1(Rect bounds) { if (_tabCache == null) _tabCache = new TabGeometryCache(); if (_tabCache.Bounds != bounds || _tabCache.Highlight1 == null) { _tabCache.Highlight1 = GenerateTabTopHighlightGeometry(bounds, true); _tabCache.Bounds = bounds; _tabCache.Shadow1 = null; //bounds changed, these are invalid _tabCache.Highlight2 = null; _tabCache.Shadow2 = null; } return _tabCache.Highlight1; }