| 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 "core/paint/PaintLayerPainter.h" | 5 #include "core/paint/PaintLayerPainter.h" |
| 6 | 6 |
| 7 #include "core/frame/LocalFrame.h" | 7 #include "core/frame/LocalFrame.h" |
| 8 #include "core/layout/LayoutInline.h" | 8 #include "core/layout/LayoutInline.h" |
| 9 #include "core/layout/LayoutView.h" | 9 #include "core/layout/LayoutView.h" |
| 10 #include "core/paint/ClipPathClipper.h" | 10 #include "core/paint/ClipPathClipper.h" |
| (...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 268 paintingInfo.ancestorHasClipPathClipping = true; | 268 paintingInfo.ancestorHasClipPathClipping = true; |
| 269 | 269 |
| 270 LayoutRect referenceBox(m_paintLayer.boxForClipPath()); | 270 LayoutRect referenceBox(m_paintLayer.boxForClipPath()); |
| 271 // Note that this isn't going to work correctly if crossing a column bou
ndary. The reference box should be | 271 // Note that this isn't going to work correctly if crossing a column bou
ndary. The reference box should be |
| 272 // determined per-fragment, and hence this ought to be performed after f
ragmentation. | 272 // determined per-fragment, and hence this ought to be performed after f
ragmentation. |
| 273 if (m_paintLayer.enclosingPaginationLayer()) | 273 if (m_paintLayer.enclosingPaginationLayer()) |
| 274 m_paintLayer.convertFromFlowThreadToVisualBoundingBoxInAncestor(pain
tingInfo.rootLayer, referenceBox); | 274 m_paintLayer.convertFromFlowThreadToVisualBoundingBoxInAncestor(pain
tingInfo.rootLayer, referenceBox); |
| 275 else | 275 else |
| 276 referenceBox.moveBy(offsetFromRoot); | 276 referenceBox.moveBy(offsetFromRoot); |
| 277 clipPathClipper.emplace( | 277 clipPathClipper.emplace( |
| 278 context, *m_paintLayer.layoutObject(), FloatRect(referenceBox), Floa
tPoint(referenceBox.location())); | 278 context, *m_paintLayer.layoutObject()->styleRef().clipPath(), *m_pai
ntLayer.layoutObject(), |
| 279 FloatRect(referenceBox), FloatPoint(referenceBox.location())); |
| 279 } | 280 } |
| 280 | 281 |
| 281 Optional<CompositingRecorder> compositingRecorder; | 282 Optional<CompositingRecorder> compositingRecorder; |
| 282 // Blending operations must be performed only with the nearest ancestor stac
king context. | 283 // Blending operations must be performed only with the nearest ancestor stac
king context. |
| 283 // Note that there is no need to composite if we're painting the root. | 284 // Note that there is no need to composite if we're painting the root. |
| 284 // FIXME: this should be unified further into PaintLayer::paintsWithTranspar
ency(). | 285 // FIXME: this should be unified further into PaintLayer::paintsWithTranspar
ency(). |
| 285 bool shouldCompositeForBlendMode = (!m_paintLayer.layoutObject()->isDocument
Element() || m_paintLayer.layoutObject()->isSVGRoot()) && m_paintLayer.stackingN
ode()->isStackingContext() && m_paintLayer.hasNonIsolatedDescendantWithBlendMode
(); | 286 bool shouldCompositeForBlendMode = (!m_paintLayer.layoutObject()->isDocument
Element() || m_paintLayer.layoutObject()->isSVGRoot()) && m_paintLayer.stackingN
ode()->isStackingContext() && m_paintLayer.hasNonIsolatedDescendantWithBlendMode
(); |
| 286 if (shouldCompositeForBlendMode || m_paintLayer.paintsWithTransparency(paint
ingInfo.getGlobalPaintFlags())) { | 287 if (shouldCompositeForBlendMode || m_paintLayer.paintsWithTransparency(paint
ingInfo.getGlobalPaintFlags())) { |
| 287 FloatRect compositingBounds = FloatRect(m_paintLayer.paintingExtent(pain
tingInfo.rootLayer, paintingInfo.subPixelAccumulation, paintingInfo.getGlobalPai
ntFlags())); | 288 FloatRect compositingBounds = FloatRect(m_paintLayer.paintingExtent(pain
tingInfo.rootLayer, paintingInfo.subPixelAccumulation, paintingInfo.getGlobalPai
ntFlags())); |
| 288 compositingRecorder.emplace(context, *m_paintLayer.layoutObject(), | 289 compositingRecorder.emplace(context, *m_paintLayer.layoutObject(), |
| (...skipping 504 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 793 if (!m_paintLayer.containsDirtyOverlayScrollbars()) | 794 if (!m_paintLayer.containsDirtyOverlayScrollbars()) |
| 794 return; | 795 return; |
| 795 | 796 |
| 796 PaintLayerPaintingInfo paintingInfo(&m_paintLayer, LayoutRect(enclosingIntRe
ct(damageRect)), paintFlags, LayoutSize()); | 797 PaintLayerPaintingInfo paintingInfo(&m_paintLayer, LayoutRect(enclosingIntRe
ct(damageRect)), paintFlags, LayoutSize()); |
| 797 paintLayer(context, paintingInfo, PaintLayerPaintingOverlayScrollbars); | 798 paintLayer(context, paintingInfo, PaintLayerPaintingOverlayScrollbars); |
| 798 | 799 |
| 799 m_paintLayer.setContainsDirtyOverlayScrollbars(false); | 800 m_paintLayer.setContainsDirtyOverlayScrollbars(false); |
| 800 } | 801 } |
| 801 | 802 |
| 802 } // namespace blink | 803 } // namespace blink |
| OLD | NEW |