| 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/FrameView.h" | 7 #include "core/frame/FrameView.h" |
| 8 #include "core/frame/Settings.h" | 8 #include "core/frame/Settings.h" |
| 9 #include "core/layout/LayoutBlock.h" | 9 #include "core/layout/LayoutBlock.h" |
| 10 #include "core/layout/LayoutView.h" | 10 #include "core/layout/LayoutView.h" |
| (...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 374 ASSERT(objectPaintProperties && objectPaintProperties->localBorderBo
xProperties()); | 374 ASSERT(objectPaintProperties && objectPaintProperties->localBorderBo
xProperties()); |
| 375 PaintChunkProperties properties(context.getPaintController().current
PaintChunkProperties()); | 375 PaintChunkProperties properties(context.getPaintController().current
PaintChunkProperties()); |
| 376 auto& localBorderBoxProperties = *objectPaintProperties->localBorder
BoxProperties(); | 376 auto& localBorderBoxProperties = *objectPaintProperties->localBorder
BoxProperties(); |
| 377 properties.transform = localBorderBoxProperties.propertyTreeState.tr
ansform; | 377 properties.transform = localBorderBoxProperties.propertyTreeState.tr
ansform; |
| 378 properties.clip = localBorderBoxProperties.propertyTreeState.clip; | 378 properties.clip = localBorderBoxProperties.propertyTreeState.clip; |
| 379 properties.effect = localBorderBoxProperties.propertyTreeState.effec
t; | 379 properties.effect = localBorderBoxProperties.propertyTreeState.effec
t; |
| 380 properties.backfaceHidden = m_paintLayer.layoutObject()->hasHiddenBa
ckface(); | 380 properties.backfaceHidden = m_paintLayer.layoutObject()->hasHiddenBa
ckface(); |
| 381 scopedPaintChunkProperties.emplace(context.getPaintController(), m_p
aintLayer, properties); | 381 scopedPaintChunkProperties.emplace(context.getPaintController(), m_p
aintLayer, properties); |
| 382 } | 382 } |
| 383 | 383 |
| 384 bool shouldPaintBackground = isPaintingCompositedBackground && shouldPai
ntContent && !selectionOnly; | 384 bool isPaintingRootLayer = (&m_paintLayer) == paintingInfo.rootLayer; |
| 385 bool shouldPaintBackground = shouldPaintContent && !selectionOnly |
| 386 && (isPaintingCompositedBackground || (isPaintingRootLayer && !(pain
tFlags & PaintLayerPaintingSkipRootBackground))); |
| 385 bool shouldPaintNegZOrderList = (isPaintingScrollingContent && isPaintin
gOverflowContents) || (!isPaintingScrollingContent && isPaintingCompositedBackgr
ound); | 387 bool shouldPaintNegZOrderList = (isPaintingScrollingContent && isPaintin
gOverflowContents) || (!isPaintingScrollingContent && isPaintingCompositedBackgr
ound); |
| 386 bool shouldPaintOwnContents = isPaintingCompositedForeground && shouldPa
intContent; | 388 bool shouldPaintOwnContents = isPaintingCompositedForeground && shouldPa
intContent; |
| 387 bool shouldPaintNormalFlowAndPosZOrderLists = isPaintingCompositedForegr
ound; | 389 bool shouldPaintNormalFlowAndPosZOrderLists = isPaintingCompositedForegr
ound; |
| 388 bool shouldPaintOverlayScrollbars = isPaintingOverlayScrollbars; | 390 bool shouldPaintOverlayScrollbars = isPaintingOverlayScrollbars; |
| 389 | 391 |
| 390 if (shouldPaintBackground) { | 392 if (shouldPaintBackground) { |
| 391 paintBackgroundForFragments(layerFragments, context, paintingInfo.pa
intDirtyRect, | 393 paintBackgroundForFragments(layerFragments, context, paintingInfo.pa
intDirtyRect, |
| 392 localPaintingInfo, paintFlags); | 394 localPaintingInfo, paintFlags); |
| 393 } | 395 } |
| 394 | 396 |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 567 | 569 |
| 568 // TODO(jbroman): Put the real transform origin here, instead of using a | 570 // TODO(jbroman): Put the real transform origin here, instead of using a |
| 569 // matrix with the origin baked in. | 571 // matrix with the origin baked in. |
| 570 FloatPoint3D transformOrigin; | 572 FloatPoint3D transformOrigin; |
| 571 Transform3DRecorder transform3DRecorder(context, *m_paintLayer.layoutObject(
), DisplayItem::Transform3DElementTransform, transform, transformOrigin); | 573 Transform3DRecorder transform3DRecorder(context, *m_paintLayer.layoutObject(
), DisplayItem::Transform3DElementTransform, transform, transformOrigin); |
| 572 | 574 |
| 573 // Now do a paint with the root layer shifted to be us. | 575 // Now do a paint with the root layer shifted to be us. |
| 574 PaintLayerPaintingInfo transformedPaintingInfo(&m_paintLayer, LayoutRect(enc
losingIntRect(transform.inverse().mapRect(paintingInfo.paintDirtyRect))), painti
ngInfo.getGlobalPaintFlags(), | 576 PaintLayerPaintingInfo transformedPaintingInfo(&m_paintLayer, LayoutRect(enc
losingIntRect(transform.inverse().mapRect(paintingInfo.paintDirtyRect))), painti
ngInfo.getGlobalPaintFlags(), |
| 575 adjustedSubPixelAccumulation); | 577 adjustedSubPixelAccumulation); |
| 576 transformedPaintingInfo.ancestorHasClipPathClipping = paintingInfo.ancestorH
asClipPathClipping; | 578 transformedPaintingInfo.ancestorHasClipPathClipping = paintingInfo.ancestorH
asClipPathClipping; |
| 579 |
| 580 // Remove skip root background flag when we're painting with a new root. |
| 581 if (&m_paintLayer != paintingInfo.rootLayer) |
| 582 paintFlags &= ~PaintLayerPaintingSkipRootBackground; |
| 583 |
| 577 return paintLayerContentsAndReflection(context, transformedPaintingInfo, pai
ntFlags, ForceSingleFragment); | 584 return paintLayerContentsAndReflection(context, transformedPaintingInfo, pai
ntFlags, ForceSingleFragment); |
| 578 } | 585 } |
| 579 | 586 |
| 580 PaintLayerPainter::PaintResult PaintLayerPainter::paintChildren(unsigned childre
nToVisit, GraphicsContext& context, const PaintLayerPaintingInfo& paintingInfo,
PaintLayerFlags paintFlags) | 587 PaintLayerPainter::PaintResult PaintLayerPainter::paintChildren(unsigned childre
nToVisit, GraphicsContext& context, const PaintLayerPaintingInfo& paintingInfo,
PaintLayerFlags paintFlags) |
| 581 { | 588 { |
| 582 PaintResult result = FullyPainted; | 589 PaintResult result = FullyPainted; |
| 583 if (!m_paintLayer.hasSelfPaintingLayerDescendant()) | 590 if (!m_paintLayer.hasSelfPaintingLayerDescendant()) |
| 584 return result; | 591 return result; |
| 585 | 592 |
| 586 #if ENABLE(ASSERT) | 593 #if ENABLE(ASSERT) |
| (...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 809 if (!m_paintLayer.containsDirtyOverlayScrollbars()) | 816 if (!m_paintLayer.containsDirtyOverlayScrollbars()) |
| 810 return; | 817 return; |
| 811 | 818 |
| 812 PaintLayerPaintingInfo paintingInfo(&m_paintLayer, LayoutRect(enclosingIntRe
ct(damageRect)), paintFlags, LayoutSize()); | 819 PaintLayerPaintingInfo paintingInfo(&m_paintLayer, LayoutRect(enclosingIntRe
ct(damageRect)), paintFlags, LayoutSize()); |
| 813 paintLayer(context, paintingInfo, PaintLayerPaintingOverlayScrollbars); | 820 paintLayer(context, paintingInfo, PaintLayerPaintingOverlayScrollbars); |
| 814 | 821 |
| 815 m_paintLayer.setContainsDirtyOverlayScrollbars(false); | 822 m_paintLayer.setContainsDirtyOverlayScrollbars(false); |
| 816 } | 823 } |
| 817 | 824 |
| 818 } // namespace blink | 825 } // namespace blink |
| OLD | NEW |