| Index: Source/platform/scroll/ScrollbarThemeMacCommon.mm
|
| diff --git a/Source/platform/scroll/ScrollbarThemeMacCommon.mm b/Source/platform/scroll/ScrollbarThemeMacCommon.mm
|
| index ca4a59859db8831d1ef3678ea735bcddff0a6e25..efca048f10662bc8a919c6da6e984e2210036814 100644
|
| --- a/Source/platform/scroll/ScrollbarThemeMacCommon.mm
|
| +++ b/Source/platform/scroll/ScrollbarThemeMacCommon.mm
|
| @@ -130,140 +130,6 @@ void ScrollbarThemeMacCommon::paintGivenTickmarks(GraphicsContext* context, Scro
|
| }
|
| }
|
|
|
| -void ScrollbarThemeMacCommon::paintOverhangBackground(GraphicsContext* context, const IntRect& horizontalOverhangRect, const IntRect& verticalOverhangRect, const IntRect& dirtyRect)
|
| -{
|
| - const bool hasHorizontalOverhang = !horizontalOverhangRect.isEmpty();
|
| - const bool hasVerticalOverhang = !verticalOverhangRect.isEmpty();
|
| -
|
| - GraphicsContextStateSaver stateSaver(*context);
|
| -
|
| - if (!m_overhangPattern) {
|
| - // Lazily load the linen pattern image used for overhang drawing.
|
| - RefPtr<Image> patternImage = Image::loadPlatformResource("overhangPattern");
|
| - m_overhangPattern = Pattern::createBitmapPattern(patternImage);
|
| - }
|
| - context->setFillPattern(m_overhangPattern);
|
| - if (hasHorizontalOverhang)
|
| - context->fillRect(intersection(horizontalOverhangRect, dirtyRect));
|
| - if (hasVerticalOverhang)
|
| - context->fillRect(intersection(verticalOverhangRect, dirtyRect));
|
| -}
|
| -
|
| -void ScrollbarThemeMacCommon::paintOverhangShadows(GraphicsContext* context, const IntSize& scrollOffset, const IntRect& horizontalOverhangRect, const IntRect& verticalOverhangRect, const IntRect& dirtyRect)
|
| -{
|
| - // The extent of each shadow in pixels.
|
| - const int kShadowSize = 4;
|
| - // Offset of negative one pixel to make the gradient blend with the toolbar's bottom border.
|
| - const int kToolbarShadowOffset = -1;
|
| - const struct {
|
| - float stop;
|
| - Color color;
|
| - } kShadowColors[] = {
|
| - { 0.000, Color(0, 0, 0, 255) },
|
| - { 0.125, Color(0, 0, 0, 57) },
|
| - { 0.375, Color(0, 0, 0, 41) },
|
| - { 0.625, Color(0, 0, 0, 18) },
|
| - { 0.875, Color(0, 0, 0, 6) },
|
| - { 1.000, Color(0, 0, 0, 0) }
|
| - };
|
| - const unsigned kNumShadowColors = sizeof(kShadowColors)/sizeof(kShadowColors[0]);
|
| -
|
| - const bool hasHorizontalOverhang = !horizontalOverhangRect.isEmpty();
|
| - const bool hasVerticalOverhang = !verticalOverhangRect.isEmpty();
|
| - // Prefer non-additive shadows, but degrade to additive shadows if there is vertical overhang.
|
| - const bool useAdditiveShadows = hasVerticalOverhang;
|
| -
|
| - GraphicsContextStateSaver stateSaver(*context);
|
| -
|
| - FloatPoint shadowCornerOrigin;
|
| - FloatPoint shadowCornerOffset;
|
| -
|
| - // Draw the shadow for the horizontal overhang.
|
| - if (hasHorizontalOverhang) {
|
| - int toolbarShadowHeight = kShadowSize;
|
| - RefPtr<Gradient> gradient;
|
| - IntRect shadowRect = horizontalOverhangRect;
|
| - shadowRect.setHeight(kShadowSize);
|
| - if (scrollOffset.height() < 0) {
|
| - if (useAdditiveShadows) {
|
| - toolbarShadowHeight = std::min(horizontalOverhangRect.height(), kShadowSize);
|
| - } else if (horizontalOverhangRect.height() < 2 * kShadowSize + kToolbarShadowOffset) {
|
| - // Split the overhang area between the web content shadow and toolbar shadow if it's too small.
|
| - shadowRect.setHeight((horizontalOverhangRect.height() + 1) / 2);
|
| - toolbarShadowHeight = horizontalOverhangRect.height() - shadowRect.height() - kToolbarShadowOffset;
|
| - }
|
| - shadowRect.setY(horizontalOverhangRect.maxY() - shadowRect.height());
|
| - gradient = Gradient::create(FloatPoint(0, shadowRect.maxY()), FloatPoint(0, shadowRect.maxY() - kShadowSize));
|
| - shadowCornerOrigin.setY(shadowRect.maxY());
|
| - shadowCornerOffset.setY(-kShadowSize);
|
| - } else {
|
| - gradient = Gradient::create(FloatPoint(0, shadowRect.y()), FloatPoint(0, shadowRect.maxY()));
|
| - shadowCornerOrigin.setY(shadowRect.y());
|
| - }
|
| - if (hasVerticalOverhang) {
|
| - shadowRect.setWidth(shadowRect.width() - verticalOverhangRect.width());
|
| - if (scrollOffset.width() < 0) {
|
| - shadowRect.setX(shadowRect.x() + verticalOverhangRect.width());
|
| - shadowCornerOrigin.setX(shadowRect.x());
|
| - shadowCornerOffset.setX(-kShadowSize);
|
| - } else {
|
| - shadowCornerOrigin.setX(shadowRect.maxX());
|
| - }
|
| - }
|
| - for (unsigned i = 0; i < kNumShadowColors; i++)
|
| - gradient->addColorStop(kShadowColors[i].stop, kShadowColors[i].color);
|
| - context->setFillGradient(gradient);
|
| - context->fillRect(intersection(shadowRect, dirtyRect));
|
| -
|
| - // Draw a drop-shadow from the toolbar.
|
| - if (scrollOffset.height() < 0) {
|
| - shadowRect.setY(kToolbarShadowOffset);
|
| - shadowRect.setHeight(toolbarShadowHeight);
|
| - gradient = Gradient::create(FloatPoint(0, shadowRect.y()), FloatPoint(0, shadowRect.y() + kShadowSize));
|
| - for (unsigned i = 0; i < kNumShadowColors; i++)
|
| - gradient->addColorStop(kShadowColors[i].stop, kShadowColors[i].color);
|
| - context->setFillGradient(gradient);
|
| - context->fillRect(intersection(shadowRect, dirtyRect));
|
| - }
|
| - }
|
| -
|
| - // Draw the shadow for the vertical overhang.
|
| - if (hasVerticalOverhang) {
|
| - RefPtr<Gradient> gradient;
|
| - IntRect shadowRect = verticalOverhangRect;
|
| - shadowRect.setWidth(kShadowSize);
|
| - if (scrollOffset.width() < 0) {
|
| - shadowRect.setX(verticalOverhangRect.maxX() - shadowRect.width());
|
| - gradient = Gradient::create(FloatPoint(shadowRect.maxX(), 0), FloatPoint(shadowRect.x(), 0));
|
| - } else {
|
| - gradient = Gradient::create(FloatPoint(shadowRect.x(), 0), FloatPoint(shadowRect.maxX(), 0));
|
| - }
|
| - for (unsigned i = 0; i < kNumShadowColors; i++)
|
| - gradient->addColorStop(kShadowColors[i].stop, kShadowColors[i].color);
|
| - context->setFillGradient(gradient);
|
| - context->fillRect(intersection(shadowRect, dirtyRect));
|
| -
|
| - // Draw a drop-shadow from the toolbar.
|
| - shadowRect = verticalOverhangRect;
|
| - shadowRect.setY(kToolbarShadowOffset);
|
| - shadowRect.setHeight(kShadowSize);
|
| - gradient = Gradient::create(FloatPoint(0, shadowRect.y()), FloatPoint(0, shadowRect.maxY()));
|
| - for (unsigned i = 0; i < kNumShadowColors; i++)
|
| - gradient->addColorStop(kShadowColors[i].stop, kShadowColors[i].color);
|
| - context->setFillGradient(gradient);
|
| - context->fillRect(intersection(shadowRect, dirtyRect));
|
| - }
|
| -
|
| - // If both rectangles present, draw a radial gradient for the corner.
|
| - if (hasHorizontalOverhang && hasVerticalOverhang) {
|
| - RefPtr<Gradient> gradient = Gradient::create(shadowCornerOrigin, 0, shadowCornerOrigin, kShadowSize);
|
| - for (unsigned i = 0; i < kNumShadowColors; i++)
|
| - gradient->addColorStop(kShadowColors[i].stop, kShadowColors[i].color);
|
| - context->setFillGradient(gradient);
|
| - context->fillRect(FloatRect(shadowCornerOrigin.x() + shadowCornerOffset.x(), shadowCornerOrigin.y() + shadowCornerOffset.y(), kShadowSize, kShadowSize));
|
| - }
|
| -}
|
| -
|
| void ScrollbarThemeMacCommon::paintTickmarks(GraphicsContext* context, ScrollbarThemeClient* scrollbar, const IntRect& rect)
|
| {
|
| // Note: This is only used for css-styled scrollbars on mac.
|
|
|