Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(231)

Side by Side Diff: Source/core/rendering/RenderBoxModelObject.cpp

Issue 21430003: Implement interfaces in PaintInfo and make it a class. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@getterPaintInfo01
Patch Set: Second try Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) 4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com)
5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) 5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com)
6 * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
7 * Copyright (C) 2010 Google Inc. All rights reserved. 7 * Copyright (C) 2010 Google Inc. All rights reserved.
8 * 8 *
9 * This library is free software; you can redistribute it and/or 9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Library General Public 10 * modify it under the terms of the GNU Library General Public
(...skipping 502 matching lines...) Expand 10 before | Expand all | Expand 10 after
513 { 513 {
514 const ShadowData* boxShadow = renderer->style()->boxShadow(); 514 const ShadowData* boxShadow = renderer->style()->boxShadow();
515 while (boxShadow->style() != Normal) 515 while (boxShadow->style() != Normal)
516 boxShadow = boxShadow->next(); 516 boxShadow = boxShadow->next();
517 517
518 FloatSize shadowOffset(boxShadow->x(), boxShadow->y()); 518 FloatSize shadowOffset(boxShadow->x(), boxShadow->y());
519 context->setShadow(shadowOffset, boxShadow->blur(), renderer->resolveColor(b oxShadow->color()), 519 context->setShadow(shadowOffset, boxShadow->blur(), renderer->resolveColor(b oxShadow->color()),
520 DrawLooper::ShadowRespectsTransforms, DrawLooper::ShadowIgnoresAlpha); 520 DrawLooper::ShadowRespectsTransforms, DrawLooper::ShadowIgnoresAlpha);
521 } 521 }
522 522
523 void RenderBoxModelObject::paintFillLayerExtended(const PaintInfo& paintInfo, co nst Color& color, const FillLayer* bgLayer, const LayoutRect& rect, 523 void RenderBoxModelObject::paintFillLayerExtended(PaintInfo& paintInfo, const Co lor& color, const FillLayer* bgLayer, const LayoutRect& rect,
524 BackgroundBleedAvoidance bleedAvoidance, InlineFlowBox* box, const LayoutSiz e& boxSize, CompositeOperator op, RenderObject* backgroundObject) 524 BackgroundBleedAvoidance bleedAvoidance, InlineFlowBox* box, const LayoutSiz e& boxSize, CompositeOperator op, RenderObject* backgroundObject)
525 { 525 {
526 GraphicsContext* context = paintInfo.context; 526 GraphicsContext* context = paintInfo.getContext();
527 if (context->paintingDisabled() || rect.isEmpty()) 527 if (context->paintingDisabled() || rect.isEmpty())
528 return; 528 return;
529 529
530 bool includeLeftEdge = box ? box->includeLogicalLeftEdge() : true; 530 bool includeLeftEdge = box ? box->includeLogicalLeftEdge() : true;
531 bool includeRightEdge = box ? box->includeLogicalRightEdge() : true; 531 bool includeRightEdge = box ? box->includeLogicalRightEdge() : true;
532 532
533 bool hasRoundedBorder = style()->hasBorderRadius() && (includeLeftEdge || in cludeRightEdge); 533 bool hasRoundedBorder = style()->hasBorderRadius() && (includeLeftEdge || in cludeRightEdge);
534 bool clippedWithLocalScrolling = hasOverflowClip() && bgLayer->attachment() == LocalBackgroundAttachment; 534 bool clippedWithLocalScrolling = hasOverflowClip() && bgLayer->attachment() == LocalBackgroundAttachment;
535 bool isBorderFill = bgLayer->clip() == BorderFillBox; 535 bool isBorderFill = bgLayer->clip() == BorderFillBox;
536 bool isRoot = this->isRoot(); 536 bool isRoot = this->isRoot();
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
611 int bLeft = includeLeftEdge ? borderLeft() : 0; 611 int bLeft = includeLeftEdge ? borderLeft() : 0;
612 int bRight = includeRightEdge ? borderRight() : 0; 612 int bRight = includeRightEdge ? borderRight() : 0;
613 LayoutUnit pLeft = includeLeftEdge ? paddingLeft() : LayoutUnit(); 613 LayoutUnit pLeft = includeLeftEdge ? paddingLeft() : LayoutUnit();
614 LayoutUnit pRight = includeRightEdge ? paddingRight() : LayoutUnit(); 614 LayoutUnit pRight = includeRightEdge ? paddingRight() : LayoutUnit();
615 615
616 GraphicsContextStateSaver clipWithScrollingStateSaver(*context, clippedWithL ocalScrolling); 616 GraphicsContextStateSaver clipWithScrollingStateSaver(*context, clippedWithL ocalScrolling);
617 LayoutRect scrolledPaintRect = rect; 617 LayoutRect scrolledPaintRect = rect;
618 if (clippedWithLocalScrolling) { 618 if (clippedWithLocalScrolling) {
619 // Clip to the overflow area. 619 // Clip to the overflow area.
620 RenderBox* thisBox = toRenderBox(this); 620 RenderBox* thisBox = toRenderBox(this);
621 context->clip(thisBox->overflowClipRect(rect.location(), paintInfo.rende rRegion)); 621 context->clip(thisBox->overflowClipRect(rect.location(), paintInfo.getRe nderRegion()));
622 622
623 // Adjust the paint rect to reflect a scrolled content box with borders at the ends. 623 // Adjust the paint rect to reflect a scrolled content box with borders at the ends.
624 IntSize offset = thisBox->scrolledContentOffset(); 624 IntSize offset = thisBox->scrolledContentOffset();
625 scrolledPaintRect.move(-offset); 625 scrolledPaintRect.move(-offset);
626 scrolledPaintRect.setWidth(bLeft + layer()->scrollWidth() + bRight); 626 scrolledPaintRect.setWidth(bLeft + layer()->scrollWidth() + bRight);
627 scrolledPaintRect.setHeight(borderTop() + layer()->scrollHeight() + bord erBottom()); 627 scrolledPaintRect.setHeight(borderTop() + layer()->scrollHeight() + bord erBottom());
628 } 628 }
629 629
630 GraphicsContextStateSaver backgroundClipStateSaver(*context, false); 630 GraphicsContextStateSaver backgroundClipStateSaver(*context, false);
631 IntRect maskRect; 631 IntRect maskRect;
(...skipping 12 matching lines...) Expand all
644 scrolledPaintRect.height() - borderTop() - borderBottom() - (include Padding ? paddingTop() + paddingBottom() : LayoutUnit())); 644 scrolledPaintRect.height() - borderTop() - borderBottom() - (include Padding ? paddingTop() + paddingBottom() : LayoutUnit()));
645 backgroundClipStateSaver.save(); 645 backgroundClipStateSaver.save();
646 context->clip(clipRect); 646 context->clip(clipRect);
647 647
648 break; 648 break;
649 } 649 }
650 case TextFillBox: { 650 case TextFillBox: {
651 // First figure out how big the mask has to be. It should be no bigger than what we need 651 // First figure out how big the mask has to be. It should be no bigger than what we need
652 // to actually render, so we should intersect the dirty rect with the bo rder box of the background. 652 // to actually render, so we should intersect the dirty rect with the bo rder box of the background.
653 maskRect = pixelSnappedIntRect(rect); 653 maskRect = pixelSnappedIntRect(rect);
654 maskRect.intersect(paintInfo.rect); 654 maskRect.intersect(paintInfo.getRect());
655 655
656 // We draw the background into a separate layer, to be later masked with yet another layer 656 // We draw the background into a separate layer, to be later masked with yet another layer
657 // holding the text content. 657 // holding the text content.
658 backgroundClipStateSaver.save(); 658 backgroundClipStateSaver.save();
659 context->clip(maskRect); 659 context->clip(maskRect);
660 context->beginTransparencyLayer(1); 660 context->beginTransparencyLayer(1);
661 661
662 break; 662 break;
663 } 663 }
664 case BorderFillBox: 664 case BorderFillBox:
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
697 } 697 }
698 698
699 // Paint the color first underneath all images, culled if background image o ccludes it. 699 // Paint the color first underneath all images, culled if background image o ccludes it.
700 // FIXME: In the bgLayer->hasFiniteBounds() case, we could improve the culli ng test 700 // FIXME: In the bgLayer->hasFiniteBounds() case, we could improve the culli ng test
701 // by verifying whether the background image covers the entire layout rect. 701 // by verifying whether the background image covers the entire layout rect.
702 if (!bgLayer->next()) { 702 if (!bgLayer->next()) {
703 IntRect backgroundRect(pixelSnappedIntRect(scrolledPaintRect)); 703 IntRect backgroundRect(pixelSnappedIntRect(scrolledPaintRect));
704 bool boxShadowShouldBeAppliedToBackground = this->boxShadowShouldBeAppli edToBackground(bleedAvoidance, box); 704 bool boxShadowShouldBeAppliedToBackground = this->boxShadowShouldBeAppli edToBackground(bleedAvoidance, box);
705 if (boxShadowShouldBeAppliedToBackground || !shouldPaintBackgroundImage || !bgLayer->hasOpaqueImage(this) || !bgLayer->hasRepeatXY()) { 705 if (boxShadowShouldBeAppliedToBackground || !shouldPaintBackgroundImage || !bgLayer->hasOpaqueImage(this) || !bgLayer->hasRepeatXY()) {
706 if (!boxShadowShouldBeAppliedToBackground) 706 if (!boxShadowShouldBeAppliedToBackground)
707 backgroundRect.intersect(paintInfo.rect); 707 backgroundRect.intersect(paintInfo.getRect());
708 708
709 // If we have an alpha and we are painting the root element, go ahea d and blend with the base background color. 709 // If we have an alpha and we are painting the root element, go ahea d and blend with the base background color.
710 Color baseColor; 710 Color baseColor;
711 bool shouldClearBackground = false; 711 bool shouldClearBackground = false;
712 if (isOpaqueRoot) { 712 if (isOpaqueRoot) {
713 baseColor = view()->frameView()->baseBackgroundColor(); 713 baseColor = view()->frameView()->baseBackgroundColor();
714 if (!baseColor.alpha()) 714 if (!baseColor.alpha())
715 shouldClearBackground = true; 715 shouldClearBackground = true;
716 } 716 }
717 717
(...skipping 11 matching lines...) Expand all
729 context->fillRect(backgroundRect, bgColor, operation); 729 context->fillRect(backgroundRect, bgColor, operation);
730 } else if (shouldClearBackground) 730 } else if (shouldClearBackground)
731 context->clearRect(backgroundRect); 731 context->clearRect(backgroundRect);
732 } 732 }
733 } 733 }
734 734
735 // no progressive loading of the background image 735 // no progressive loading of the background image
736 if (shouldPaintBackgroundImage) { 736 if (shouldPaintBackgroundImage) {
737 BackgroundImageGeometry geometry; 737 BackgroundImageGeometry geometry;
738 calculateBackgroundImageGeometry(bgLayer, scrolledPaintRect, geometry, b ackgroundObject); 738 calculateBackgroundImageGeometry(bgLayer, scrolledPaintRect, geometry, b ackgroundObject);
739 geometry.clip(paintInfo.rect); 739 geometry.clip(paintInfo.getRect());
740 if (!geometry.destRect().isEmpty()) { 740 if (!geometry.destRect().isEmpty()) {
741 CompositeOperator compositeOp = op == CompositeSourceOver ? bgLayer- >composite() : op; 741 CompositeOperator compositeOp = op == CompositeSourceOver ? bgLayer- >composite() : op;
742 RenderObject* clientForBackgroundImage = backgroundObject ? backgrou ndObject : this; 742 RenderObject* clientForBackgroundImage = backgroundObject ? backgrou ndObject : this;
743 RefPtr<Image> image = bgImage->image(clientForBackgroundImage, geome try.tileSize()); 743 RefPtr<Image> image = bgImage->image(clientForBackgroundImage, geome try.tileSize());
744 bool useLowQualityScaling = shouldPaintAtLowQuality(context, image.g et(), bgLayer, geometry.tileSize()); 744 bool useLowQualityScaling = shouldPaintAtLowQuality(context, image.g et(), bgLayer, geometry.tileSize());
745 context->drawTiledImage(image.get(), geometry.destRect(), geometry.r elativePhase(), geometry.tileSize(), 745 context->drawTiledImage(image.get(), geometry.destRect(), geometry.r elativePhase(), geometry.tileSize(),
746 compositeOp, useLowQualityScaling, bgLayer->blendMode()); 746 compositeOp, useLowQualityScaling, bgLayer->blendMode());
747 } 747 }
748 } 748 }
749 749
750 if (bgLayer->clip() == TextFillBox) { 750 if (bgLayer->clip() == TextFillBox) {
751 // Create the text mask layer. 751 // Create the text mask layer.
752 context->setCompositeOperation(CompositeDestinationIn); 752 context->setCompositeOperation(CompositeDestinationIn);
753 context->beginTransparencyLayer(1); 753 context->beginTransparencyLayer(1);
754 754
755 // FIXME: Workaround for https://code.google.com/p/skia/issues/detail?id =1291. 755 // FIXME: Workaround for https://code.google.com/p/skia/issues/detail?id =1291.
756 context->clearRect(maskRect); 756 context->clearRect(maskRect);
757 757
758 // Now draw the text into the mask. We do this by painting using a speci al paint phase that signals to 758 // Now draw the text into the mask. We do this by painting using a speci al paint phase that signals to
759 // InlineTextBoxes that they should just add their contents to the clip. 759 // InlineTextBoxes that they should just add their contents to the clip.
760 PaintInfo info(context, maskRect, PaintPhaseTextClip, PaintBehaviorForce BlackText, 0, paintInfo.renderRegion); 760 PaintInfo info(context, maskRect, PaintPhaseTextClip, PaintBehaviorForce BlackText, 0, paintInfo.getRenderRegion());
761 context->setCompositeOperation(CompositeSourceOver); 761 context->setCompositeOperation(CompositeSourceOver);
762 if (box) { 762 if (box) {
763 RootInlineBox* root = box->root(); 763 RootInlineBox* root = box->root();
764 box->paint(info, LayoutPoint(scrolledPaintRect.x() - box->x(), scrol ledPaintRect.y() - box->y()), root->lineTop(), root->lineBottom()); 764 box->paint(info, LayoutPoint(scrolledPaintRect.x() - box->x(), scrol ledPaintRect.y() - box->y()), root->lineTop(), root->lineBottom());
765 } else { 765 } else {
766 LayoutSize localOffset = isBox() ? toRenderBox(this)->locationOffset () : LayoutSize(); 766 LayoutSize localOffset = isBox() ? toRenderBox(this)->locationOffset () : LayoutSize();
767 paint(info, scrolledPaintRect.location() - localOffset); 767 paint(info, scrolledPaintRect.location() - localOffset);
768 } 768 }
769 769
770 context->endTransparencyLayer(); 770 context->endTransparencyLayer();
(...skipping 890 matching lines...) Expand 10 before | Expand all | Expand 10 after
1661 1661
1662 paintBorderSides(graphicsContext, style, outerBorder, innerBorder, inner BorderAdjustment, edges, commonColorEdgeSet, bleedAvoidance, includeLogicalLeftE dge, includeLogicalRightEdge, antialias, &commonColor); 1662 paintBorderSides(graphicsContext, style, outerBorder, innerBorder, inner BorderAdjustment, edges, commonColorEdgeSet, bleedAvoidance, includeLogicalLeftE dge, includeLogicalRightEdge, antialias, &commonColor);
1663 1663
1664 if (useTransparencyLayer) 1664 if (useTransparencyLayer)
1665 graphicsContext->endTransparencyLayer(); 1665 graphicsContext->endTransparencyLayer();
1666 1666
1667 edgesToDraw &= ~commonColorEdgeSet; 1667 edgesToDraw &= ~commonColorEdgeSet;
1668 } 1668 }
1669 } 1669 }
1670 1670
1671 void RenderBoxModelObject::paintBorder(const PaintInfo& info, const LayoutRect& rect, const RenderStyle* style, 1671 void RenderBoxModelObject::paintBorder(PaintInfo& info, const LayoutRect& rect, const RenderStyle* style,
1672 BackgroundBleedAvoidance bleedAvoidance, bool includeLogicalLeftEdge, bool includeLogicalRightEdge) 1672 BackgroundBleedAvoidance bleedAvoidance, bool includeLogicalLeftEdge, bool includeLogicalRightEdge)
1673 { 1673 {
1674 GraphicsContext* graphicsContext = info.context; 1674 GraphicsContext* graphicsContext = info.getContext();
1675 // border-image is not affected by border-radius. 1675 // border-image is not affected by border-radius.
1676 if (paintNinePieceImage(graphicsContext, rect, style, style->borderImage())) 1676 if (paintNinePieceImage(graphicsContext, rect, style, style->borderImage()))
1677 return; 1677 return;
1678 1678
1679 if (graphicsContext->paintingDisabled()) 1679 if (graphicsContext->paintingDisabled())
1680 return; 1680 return;
1681 1681
1682 BorderEdge edges[4]; 1682 BorderEdge edges[4];
1683 getBorderEdgeInfo(edges, style, includeLogicalLeftEdge, includeLogicalRightE dge); 1683 getBorderEdgeInfo(edges, style, includeLogicalLeftEdge, includeLogicalRightE dge);
1684 RoundedRect outerBorder = style->getRoundedBorderFor(rect, view(), includeLo gicalLeftEdge, includeLogicalRightEdge); 1684 RoundedRect outerBorder = style->getRoundedBorderFor(rect, view(), includeLo gicalLeftEdge, includeLogicalRightEdge);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1719 1719
1720 if (currEdge.style != SOLID) 1720 if (currEdge.style != SOLID)
1721 haveAllSolidEdges = false; 1721 haveAllSolidEdges = false;
1722 1722
1723 if (currEdge.style != DOUBLE) 1723 if (currEdge.style != DOUBLE)
1724 haveAllDoubleEdges = false; 1724 haveAllDoubleEdges = false;
1725 } 1725 }
1726 1726
1727 // If no corner intersects the clip region, we can pretend outerBorder is 1727 // If no corner intersects the clip region, we can pretend outerBorder is
1728 // rectangular to improve performance. 1728 // rectangular to improve performance.
1729 if (haveAllSolidEdges && outerBorder.isRounded() && allCornersClippedOut(out erBorder, info.rect)) 1729 if (haveAllSolidEdges && outerBorder.isRounded() && allCornersClippedOut(out erBorder, info.getRect()))
1730 outerBorder.setRadii(RoundedRect::Radii()); 1730 outerBorder.setRadii(RoundedRect::Radii());
1731 1731
1732 // isRenderable() check avoids issue described in https://bugs.webkit.org/sh ow_bug.cgi?id=38787 1732 // isRenderable() check avoids issue described in https://bugs.webkit.org/sh ow_bug.cgi?id=38787
1733 if ((haveAllSolidEdges || haveAllDoubleEdges) && allEdgesShareColor && inner Border.isRenderable()) { 1733 if ((haveAllSolidEdges || haveAllDoubleEdges) && allEdgesShareColor && inner Border.isRenderable()) {
1734 // Fast path for drawing all solid edges and all unrounded double edges 1734 // Fast path for drawing all solid edges and all unrounded double edges
1735 if (numEdgesVisible == 4 && (outerBorder.isRounded() || haveAlphaColor) 1735 if (numEdgesVisible == 4 && (outerBorder.isRounded() || haveAlphaColor)
1736 && (haveAllSolidEdges || (!outerBorder.isRounded() && !innerBorder.i sRounded()))) { 1736 && (haveAllSolidEdges || (!outerBorder.isRounded() && !innerBorder.i sRounded()))) {
1737 Path path; 1737 Path path;
1738 1738
1739 if (outerBorder.isRounded() && bleedAvoidance != BackgroundBleedUseT ransparencyLayer) 1739 if (outerBorder.isRounded() && bleedAvoidance != BackgroundBleedUseT ransparencyLayer)
(...skipping 664 matching lines...) Expand 10 before | Expand all | Expand 10 after
2404 bounds.inflate(shadowBlur); 2404 bounds.inflate(shadowBlur);
2405 2405
2406 if (shadowSpread < 0) 2406 if (shadowSpread < 0)
2407 bounds.inflate(-shadowSpread); 2407 bounds.inflate(-shadowSpread);
2408 2408
2409 IntRect offsetBounds = bounds; 2409 IntRect offsetBounds = bounds;
2410 offsetBounds.move(-shadowOffset); 2410 offsetBounds.move(-shadowOffset);
2411 return unionRect(bounds, offsetBounds); 2411 return unionRect(bounds, offsetBounds);
2412 } 2412 }
2413 2413
2414 void RenderBoxModelObject::paintBoxShadow(const PaintInfo& info, const LayoutRec t& paintRect, const RenderStyle* s, ShadowStyle shadowStyle, bool includeLogical LeftEdge, bool includeLogicalRightEdge) 2414 void RenderBoxModelObject::paintBoxShadow(PaintInfo& info, const LayoutRect& pai ntRect, const RenderStyle* s, ShadowStyle shadowStyle, bool includeLogicalLeftEd ge, bool includeLogicalRightEdge)
2415 { 2415 {
2416 // FIXME: Deal with border-image. Would be great to use border-image as a m ask. 2416 // FIXME: Deal with border-image. Would be great to use border-image as a m ask.
2417 GraphicsContext* context = info.context; 2417 GraphicsContext* context = info.getContext();
2418 if (context->paintingDisabled() || !s->boxShadow()) 2418 if (context->paintingDisabled() || !s->boxShadow())
2419 return; 2419 return;
2420 2420
2421 RoundedRect border = (shadowStyle == Inset) ? s->getRoundedInnerBorderFor(pa intRect, includeLogicalLeftEdge, includeLogicalRightEdge) 2421 RoundedRect border = (shadowStyle == Inset) ? s->getRoundedInnerBorderFor(pa intRect, includeLogicalLeftEdge, includeLogicalRightEdge)
2422 : s->getRoundedBorderFor(pain tRect, view(), includeLogicalLeftEdge, includeLogicalRightEdge); 2422 : s->getRoundedBorderFor(pain tRect, view(), includeLogicalLeftEdge, includeLogicalRightEdge);
2423 2423
2424 bool hasBorderRadius = s->hasBorderRadius(); 2424 bool hasBorderRadius = s->hasBorderRadius();
2425 bool isHorizontal = s->isHorizontalWritingMode(); 2425 bool isHorizontal = s->isHorizontalWritingMode();
2426 2426
2427 bool hasOpaqueBackground = s->visitedDependentColor(CSSPropertyBackgroundCol or).isValid() && s->visitedDependentColor(CSSPropertyBackgroundColor).alpha() == 255; 2427 bool hasOpaqueBackground = s->visitedDependentColor(CSSPropertyBackgroundCol or).isValid() && s->visitedDependentColor(CSSPropertyBackgroundColor).alpha() == 255;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
2463 // corners. Those are avoided by insetting the clipping path by one pixel. 2463 // corners. Those are avoided by insetting the clipping path by one pixel.
2464 if (hasOpaqueBackground) 2464 if (hasOpaqueBackground)
2465 rectToClipOut.inflateWithRadii(-1); 2465 rectToClipOut.inflateWithRadii(-1);
2466 2466
2467 if (!rectToClipOut.isEmpty()) { 2467 if (!rectToClipOut.isEmpty()) {
2468 context->clipOutRoundedRect(rectToClipOut); 2468 context->clipOutRoundedRect(rectToClipOut);
2469 } 2469 }
2470 2470
2471 RoundedRect influenceRect(shadowRect, border.radii()); 2471 RoundedRect influenceRect(shadowRect, border.radii());
2472 influenceRect.expandRadii(2 * shadowBlur + shadowSpread); 2472 influenceRect.expandRadii(2 * shadowBlur + shadowSpread);
2473 if (allCornersClippedOut(influenceRect, info.rect)) 2473 if (allCornersClippedOut(influenceRect, info.getRect()))
2474 context->fillRect(fillRect.rect(), Color::black); 2474 context->fillRect(fillRect.rect(), Color::black);
2475 else { 2475 else {
2476 fillRect.expandRadii(shadowSpread); 2476 fillRect.expandRadii(shadowSpread);
2477 if (!fillRect.isRenderable()) 2477 if (!fillRect.isRenderable())
2478 fillRect.adjustRadii(); 2478 fillRect.adjustRadii();
2479 context->fillRoundedRect(fillRect, Color::black); 2479 context->fillRoundedRect(fillRect, Color::black);
2480 } 2480 }
2481 } else { 2481 } else {
2482 IntRect rectToClipOut = border.rect(); 2482 IntRect rectToClipOut = border.rect();
2483 2483
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after
2754 ASSERT(!beforeChild || toBoxModelObject == beforeChild->parent()); 2754 ASSERT(!beforeChild || toBoxModelObject == beforeChild->parent());
2755 for (RenderObject* child = startChild; child && child != endChild; ) { 2755 for (RenderObject* child = startChild; child && child != endChild; ) {
2756 // Save our next sibling as moveChildTo will clear it. 2756 // Save our next sibling as moveChildTo will clear it.
2757 RenderObject* nextSibling = child->nextSibling(); 2757 RenderObject* nextSibling = child->nextSibling();
2758 moveChildTo(toBoxModelObject, child, beforeChild, fullRemoveInsert); 2758 moveChildTo(toBoxModelObject, child, beforeChild, fullRemoveInsert);
2759 child = nextSibling; 2759 child = nextSibling;
2760 } 2760 }
2761 } 2761 }
2762 2762
2763 } // namespace WebCore 2763 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698