| OLD | NEW | 
|    1 // Copyright 2014 The Chromium Authors. All rights reserved. |    1 // Copyright 2014 The Chromium Authors. All rights reserved. | 
|    2 // Use of this source code is governed by a BSD-style license that can be |    2 // Use of this source code is governed by a BSD-style license that can be | 
|    3 // found in the LICENSE file. |    3 // found in the LICENSE file. | 
|    4  |    4  | 
|    5 #include "config.h" |    5 #include "config.h" | 
|    6 #include "core/paint/BoxPainter.h" |    6 #include "core/paint/BoxPainter.h" | 
|    7  |    7  | 
|    8 #include "core/HTMLNames.h" |    8 #include "core/HTMLNames.h" | 
|    9 #include "core/frame/Settings.h" |    9 #include "core/frame/Settings.h" | 
|   10 #include "core/html/HTMLFrameOwnerElement.h" |   10 #include "core/html/HTMLFrameOwnerElement.h" | 
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  136     if (m_layoutBox.backgroundStolenForBeingBody()) |  136     if (m_layoutBox.backgroundStolenForBeingBody()) | 
|  137         return; |  137         return; | 
|  138     if (m_layoutBox.boxDecorationBackgroundIsKnownToBeObscured()) |  138     if (m_layoutBox.boxDecorationBackgroundIsKnownToBeObscured()) | 
|  139         return; |  139         return; | 
|  140     paintFillLayers(paintInfo, backgroundColor, m_layoutBox.style()->backgroundL
     ayers(), paintRect, bleedAvoidance); |  140     paintFillLayers(paintInfo, backgroundColor, m_layoutBox.style()->backgroundL
     ayers(), paintRect, bleedAvoidance); | 
|  141 } |  141 } | 
|  142  |  142  | 
|  143 static bool isFillLayerOpaque(const FillLayer& layer, const LayoutObject& imageC
     lient) |  143 static bool isFillLayerOpaque(const FillLayer& layer, const LayoutObject& imageC
     lient) | 
|  144 { |  144 { | 
|  145     return layer.hasOpaqueImage(&imageClient) |  145     return layer.hasOpaqueImage(&imageClient) | 
|  146         && layer.image()->canRender(imageClient, imageClient.style()->effectiveZ
     oom()) |  146         && layer.image()->canRender() | 
|  147         && !layer.image()->imageSize(&imageClient, imageClient.style()->effectiv
     eZoom()).isEmpty() |  147         && !layer.image()->imageSize(&imageClient, imageClient.style()->effectiv
     eZoom()).isEmpty() | 
|  148         && layer.hasRepeatXY(); |  148         && layer.hasRepeatXY(); | 
|  149 } |  149 } | 
|  150  |  150  | 
|  151 bool BoxPainter::calculateFillLayerOcclusionCulling(FillLayerOcclusionOutputList
      &reversedPaintList, const FillLayer& fillLayer) |  151 bool BoxPainter::calculateFillLayerOcclusionCulling(FillLayerOcclusionOutputList
      &reversedPaintList, const FillLayer& fillLayer) | 
|  152 { |  152 { | 
|  153     bool isNonAssociative = false; |  153     bool isNonAssociative = false; | 
|  154     for (auto currentLayer = &fillLayer; currentLayer; currentLayer = currentLay
     er->next()) { |  154     for (auto currentLayer = &fillLayer; currentLayer; currentLayer = currentLay
     er->next()) { | 
|  155         reversedPaintList.append(currentLayer); |  155         reversedPaintList.append(currentLayer); | 
|  156         // Stop traversal when an opaque layer is encountered. |  156         // Stop traversal when an opaque layer is encountered. | 
| (...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  431     case BorderFillBox: |  431     case BorderFillBox: | 
|  432         break; |  432         break; | 
|  433     default: |  433     default: | 
|  434         ASSERT_NOT_REACHED(); |  434         ASSERT_NOT_REACHED(); | 
|  435         break; |  435         break; | 
|  436     } |  436     } | 
|  437  |  437  | 
|  438     BackgroundImageGeometry geometry; |  438     BackgroundImageGeometry geometry; | 
|  439     if (bgImage) |  439     if (bgImage) | 
|  440         geometry.calculate(obj, paintInfo.paintContainer(), paintInfo.globalPain
     tFlags(), bgLayer, scrolledPaintRect); |  440         geometry.calculate(obj, paintInfo.paintContainer(), paintInfo.globalPain
     tFlags(), bgLayer, scrolledPaintRect); | 
|  441     bool shouldPaintBackgroundImage = bgImage && bgImage->canRender(obj, obj.sty
     le()->effectiveZoom()); |  441     bool shouldPaintBackgroundImage = bgImage && bgImage->canRender(); | 
|  442  |  442  | 
|  443     // Paint the color first underneath all images, culled if background image o
     ccludes it. |  443     // Paint the color first underneath all images, culled if background image o
     ccludes it. | 
|  444     // TODO(trchen): In the !bgLayer.hasRepeatXY() case, we could improve the cu
     lling test |  444     // TODO(trchen): In the !bgLayer.hasRepeatXY() case, we could improve the cu
     lling test | 
|  445     // by verifying whether the background image covers the entire painting area
     . |  445     // by verifying whether the background image covers the entire painting area
     . | 
|  446     if (isBottomLayer) { |  446     if (isBottomLayer) { | 
|  447         IntRect backgroundRect(pixelSnappedIntRect(scrolledPaintRect)); |  447         IntRect backgroundRect(pixelSnappedIntRect(scrolledPaintRect)); | 
|  448         bool boxShadowShouldBeAppliedToBackground = obj.boxShadowShouldBeApplied
     ToBackground(bleedAvoidance, box); |  448         bool boxShadowShouldBeAppliedToBackground = obj.boxShadowShouldBeApplied
     ToBackground(bleedAvoidance, box); | 
|  449         bool backgroundImageOccludesBackgroundColor = shouldPaintBackgroundImage
      && isFillLayerOpaque(bgLayer, obj); |  449         bool backgroundImageOccludesBackgroundColor = shouldPaintBackgroundImage
      && isFillLayerOpaque(bgLayer, obj); | 
|  450         if (boxShadowShouldBeAppliedToBackground || !backgroundImageOccludesBack
     groundColor)  { |  450         if (boxShadowShouldBeAppliedToBackground || !backgroundImageOccludesBack
     groundColor)  { | 
|  451             GraphicsContextStateSaver shadowStateSaver(*context, boxShadowShould
     BeAppliedToBackground); |  451             GraphicsContextStateSaver shadowStateSaver(*context, boxShadowShould
     BeAppliedToBackground); | 
| (...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  705     } |  705     } | 
|  706 } |  706 } | 
|  707  |  707  | 
|  708 bool BoxPainter::shouldForceWhiteBackgroundForPrintEconomy(const ComputedStyle& 
     style, const Document& document) |  708 bool BoxPainter::shouldForceWhiteBackgroundForPrintEconomy(const ComputedStyle& 
     style, const Document& document) | 
|  709 { |  709 { | 
|  710     return document.printing() && style.printColorAdjust() == PrintColorAdjustEc
     onomy |  710     return document.printing() && style.printColorAdjust() == PrintColorAdjustEc
     onomy | 
|  711         && (!document.settings() || !document.settings()->shouldPrintBackgrounds
     ()); |  711         && (!document.settings() || !document.settings()->shouldPrintBackgrounds
     ()); | 
|  712 } |  712 } | 
|  713  |  713  | 
|  714 } // namespace blink |  714 } // namespace blink | 
| OLD | NEW |