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

Side by Side Diff: Source/core/paint/DeprecatedPaintLayer.cpp

Issue 1110653003: [Reland] Correct fixed-position recording for Slimming Paint (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebase Created 5 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « Source/core/layout/LayoutObject.cpp ('k') | Source/core/paint/DeprecatedPaintLayerPainter.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved.
3 * 3 *
4 * Portions are Copyright (C) 1998 Netscape Communications Corporation. 4 * Portions are Copyright (C) 1998 Netscape Communications Corporation.
5 * 5 *
6 * Other contributors: 6 * Other contributors:
7 * Robert O'Callahan <roc+@cs.cmu.edu> 7 * Robert O'Callahan <roc+@cs.cmu.edu>
8 * David Baron <dbaron@fas.harvard.edu> 8 * David Baron <dbaron@fas.harvard.edu>
9 * Christian Biesinger <cbiesinger@web.de> 9 * Christian Biesinger <cbiesinger@web.de>
10 * Randall Jesup <rjesup@wgate.com> 10 * Randall Jesup <rjesup@wgate.com>
(...skipping 1148 matching lines...) Expand 10 before | Expand all | Expand 10 after
1159 // the transformed layer and all of its children. 1159 // the transformed layer and all of its children.
1160 const DeprecatedPaintLayer* paginationLayer = transparencyMode == Descen dantsOfTransparencyClipBox ? layer->enclosingPaginationLayer() : 0; 1160 const DeprecatedPaintLayer* paginationLayer = transparencyMode == Descen dantsOfTransparencyClipBox ? layer->enclosingPaginationLayer() : 0;
1161 const DeprecatedPaintLayer* rootLayerForTransform = paginationLayer ? pa ginationLayer : rootLayer; 1161 const DeprecatedPaintLayer* rootLayerForTransform = paginationLayer ? pa ginationLayer : rootLayer;
1162 LayoutPoint delta; 1162 LayoutPoint delta;
1163 layer->convertToLayerCoords(rootLayerForTransform, delta); 1163 layer->convertToLayerCoords(rootLayerForTransform, delta);
1164 1164
1165 delta.move(subPixelAccumulation); 1165 delta.move(subPixelAccumulation);
1166 IntPoint pixelSnappedDelta = roundedIntPoint(delta); 1166 IntPoint pixelSnappedDelta = roundedIntPoint(delta);
1167 TransformationMatrix transform; 1167 TransformationMatrix transform;
1168 transform.translate(pixelSnappedDelta.x(), pixelSnappedDelta.y()); 1168 transform.translate(pixelSnappedDelta.x(), pixelSnappedDelta.y());
1169 transform = transform * *layer->transform(); 1169 if (layer->transform())
1170 transform = transform * *layer->transform();
1170 1171
1171 // We don't use fragment boxes when collecting a transformed layer's bou nding box, since it always 1172 // We don't use fragment boxes when collecting a transformed layer's bou nding box, since it always
1172 // paints unfragmented. 1173 // paints unfragmented.
1173 LayoutRect clipRect = layer->physicalBoundingBox(layer); 1174 LayoutRect clipRect = layer->physicalBoundingBox(layer);
1174 expandClipRectForDescendantsAndReflection(clipRect, layer, layer, transp arencyBehavior, subPixelAccumulation, paintBehavior); 1175 expandClipRectForDescendantsAndReflection(clipRect, layer, layer, transp arencyBehavior, subPixelAccumulation, paintBehavior);
1175 clipRect.expand(layer->layoutObject()->style()->filterOutsets()); 1176 clipRect.expand(layer->layoutObject()->style()->filterOutsets());
1176 LayoutRect result = transform.mapRect(clipRect); 1177 LayoutRect result = transform.mapRect(clipRect);
1177 if (!paginationLayer) 1178 if (!paginationLayer)
1178 return result; 1179 return result;
1179 1180
(...skipping 1301 matching lines...) Expand 10 before | Expand all | Expand 10 after
2481 expandRectForReflectionAndStackingChildren(parent(), options, result ); 2482 expandRectForReflectionAndStackingChildren(parent(), options, result );
2482 else 2483 else
2483 expandRectForReflectionAndStackingChildren(this, options, result); 2484 expandRectForReflectionAndStackingChildren(this, options, result);
2484 2485
2485 // FIXME: We can optimize the size of the composited layers, by not enla rging 2486 // FIXME: We can optimize the size of the composited layers, by not enla rging
2486 // filtered areas with the outsets if we know that the filter is going t o render in hardware. 2487 // filtered areas with the outsets if we know that the filter is going t o render in hardware.
2487 // https://bugs.webkit.org/show_bug.cgi?id=81239 2488 // https://bugs.webkit.org/show_bug.cgi?id=81239
2488 result.expand(m_layoutObject->style()->filterOutsets()); 2489 result.expand(m_layoutObject->style()->filterOutsets());
2489 } 2490 }
2490 2491
2491 if (paintsWithTransform(PaintBehaviorNormal) || (options == ApplyBoundsChick enEggHacks && transform())) 2492 if (transform() && (paintsWithTransform(PaintBehaviorNormal) || options == A pplyBoundsChickenEggHacks))
2492 result = transform()->mapRect(result); 2493 result = transform()->mapRect(result);
2493 2494
2494 if (enclosingPaginationLayer()) { 2495 if (enclosingPaginationLayer()) {
2495 convertFromFlowThreadToVisualBoundingBoxInAncestor(this, ancestorLayer, result); 2496 convertFromFlowThreadToVisualBoundingBoxInAncestor(this, ancestorLayer, result);
2496 return result; 2497 return result;
2497 } 2498 }
2498 LayoutPoint delta; 2499 LayoutPoint delta;
2499 convertToLayerCoords(ancestorLayer, delta); 2500 convertToLayerCoords(ancestorLayer, delta);
2500 result.moveBy(delta); 2501 result.moveBy(delta);
2501 return result; 2502 return result;
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
2603 return m_compositedDeprecatedPaintLayerMapping && m_compositedDeprecatedPain tLayerMapping->hasMaskLayer(); 2604 return m_compositedDeprecatedPaintLayerMapping && m_compositedDeprecatedPain tLayerMapping->hasMaskLayer();
2604 } 2605 }
2605 2606
2606 bool DeprecatedPaintLayer::hasCompositedClippingMask() const 2607 bool DeprecatedPaintLayer::hasCompositedClippingMask() const
2607 { 2608 {
2608 return m_compositedDeprecatedPaintLayerMapping && m_compositedDeprecatedPain tLayerMapping->hasChildClippingMaskLayer(); 2609 return m_compositedDeprecatedPaintLayerMapping && m_compositedDeprecatedPain tLayerMapping->hasChildClippingMaskLayer();
2609 } 2610 }
2610 2611
2611 bool DeprecatedPaintLayer::paintsWithTransform(PaintBehavior paintBehavior) cons t 2612 bool DeprecatedPaintLayer::paintsWithTransform(PaintBehavior paintBehavior) cons t
2612 { 2613 {
2613 return transform() && ((paintBehavior & PaintBehaviorFlattenCompositingLayer s) || compositingState() != PaintsIntoOwnBacking); 2614 return (transform() || layoutObject()->style()->position() == FixedPosition) && ((paintBehavior & PaintBehaviorFlattenCompositingLayers) || compositingState () != PaintsIntoOwnBacking);
2614 } 2615 }
2615 2616
2616 bool DeprecatedPaintLayer::backgroundIsKnownToBeOpaqueInRect(const LayoutRect& l ocalRect) const 2617 bool DeprecatedPaintLayer::backgroundIsKnownToBeOpaqueInRect(const LayoutRect& l ocalRect) const
2617 { 2618 {
2618 if (!isSelfPaintingLayer() && !hasSelfPaintingLayerDescendant()) 2619 if (!isSelfPaintingLayer() && !hasSelfPaintingLayerDescendant())
2619 return false; 2620 return false;
2620 2621
2621 if (paintsWithTransparency(PaintBehaviorNormal)) 2622 if (paintsWithTransparency(PaintBehaviorNormal))
2622 return false; 2623 return false;
2623 2624
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after
2977 } 2978 }
2978 } 2979 }
2979 2980
2980 void showLayerTree(const blink::LayoutObject* layoutObject) 2981 void showLayerTree(const blink::LayoutObject* layoutObject)
2981 { 2982 {
2982 if (!layoutObject) 2983 if (!layoutObject)
2983 return; 2984 return;
2984 showLayerTree(layoutObject->enclosingLayer()); 2985 showLayerTree(layoutObject->enclosingLayer());
2985 } 2986 }
2986 #endif 2987 #endif
OLDNEW
« no previous file with comments | « Source/core/layout/LayoutObject.cpp ('k') | Source/core/paint/DeprecatedPaintLayerPainter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698