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

Side by Side Diff: third_party/WebKit/Source/core/paint/PaintLayer.h

Issue 2521033003: Reland: Don't early out recursion into PaintLayerChildren when computing composited bounds. (Closed)
Patch Set: none Created 4 years, 1 month 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) 2003, 2009, 2012 Apple Inc. All rights reserved. 2 * Copyright (C) 2003, 2009, 2012 Apple Inc. All rights reserved.
3 * Copyright (C) 2013 Intel Corporation. All rights reserved. 3 * Copyright (C) 2013 Intel Corporation. All rights reserved.
4 * 4 *
5 * Portions are Copyright (C) 1998 Netscape Communications Corporation. 5 * Portions are Copyright (C) 1998 Netscape Communications Corporation.
6 * 6 *
7 * Other contributors: 7 * Other contributors:
8 * Robert O'Callahan <roc+@cs.cmu.edu> 8 * Robert O'Callahan <roc+@cs.cmu.edu>
9 * David Baron <dbaron@fas.harvard.edu> 9 * David Baron <dbaron@fas.harvard.edu>
10 * Christian Biesinger <cbiesinger@web.de> 10 * Christian Biesinger <cbiesinger@web.de>
(...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after
421 LayoutRect physicalBoundingBox(const PaintLayer* ancestorLayer) const; 421 LayoutRect physicalBoundingBox(const PaintLayer* ancestorLayer) const;
422 LayoutRect physicalBoundingBoxIncludingStackingChildren( 422 LayoutRect physicalBoundingBoxIncludingStackingChildren(
423 const LayoutPoint& offsetFromRoot, 423 const LayoutPoint& offsetFromRoot,
424 CalculateBoundsOptions = MaybeIncludeTransformForAncestorLayer) const; 424 CalculateBoundsOptions = MaybeIncludeTransformForAncestorLayer) const;
425 LayoutRect fragmentsBoundingBox(const PaintLayer* ancestorLayer) const; 425 LayoutRect fragmentsBoundingBox(const PaintLayer* ancestorLayer) const;
426 426
427 FloatRect boxForFilterOrMask() const; 427 FloatRect boxForFilterOrMask() const;
428 LayoutRect boxForClipPath() const; 428 LayoutRect boxForClipPath() const;
429 429
430 LayoutRect boundingBoxForCompositingOverlapTest() const; 430 LayoutRect boundingBoxForCompositingOverlapTest() const;
431 LayoutRect boundingBoxForCompositing() const;
431 432
432 // If true, this layer's children are included in its bounds for overlap 433 // If true, this layer's children are included in its bounds for overlap
433 // testing. We can't rely on the children's positions if this layer has a 434 // testing. We can't rely on the children's positions if this layer has a
434 // filter that could have moved the children's pixels around. 435 // filter that could have moved the children's pixels around.
435 bool overlapBoundsIncludeChildren() const; 436 bool overlapBoundsIncludeChildren() const;
436 LayoutRect boundingBoxForCompositing(
437 const PaintLayer* ancestorLayer = 0,
438 CalculateBoundsOptions = MaybeIncludeTransformForAncestorLayer) const;
439 437
440 LayoutUnit staticInlinePosition() const { return m_staticInlinePosition; } 438 LayoutUnit staticInlinePosition() const { return m_staticInlinePosition; }
441 LayoutUnit staticBlockPosition() const { return m_staticBlockPosition; } 439 LayoutUnit staticBlockPosition() const { return m_staticBlockPosition; }
442 440
443 void setStaticInlinePosition(LayoutUnit position) { 441 void setStaticInlinePosition(LayoutUnit position) {
444 m_staticInlinePosition = position; 442 m_staticInlinePosition = position;
445 } 443 }
446 void setStaticBlockPosition(LayoutUnit position) { 444 void setStaticBlockPosition(LayoutUnit position) {
447 m_staticBlockPosition = position; 445 m_staticBlockPosition = position;
448 } 446 }
(...skipping 653 matching lines...) Expand 10 before | Expand all | Expand 10 after
1102 layer.m_needsPaintPhaseDescendantOutlines; 1100 layer.m_needsPaintPhaseDescendantOutlines;
1103 m_needsPaintPhaseFloat |= layer.m_needsPaintPhaseFloat; 1101 m_needsPaintPhaseFloat |= layer.m_needsPaintPhaseFloat;
1104 m_needsPaintPhaseDescendantBlockBackgrounds |= 1102 m_needsPaintPhaseDescendantBlockBackgrounds |=
1105 layer.m_needsPaintPhaseDescendantBlockBackgrounds; 1103 layer.m_needsPaintPhaseDescendantBlockBackgrounds;
1106 } 1104 }
1107 1105
1108 bool isSelfPaintingLayerForIntrinsicOrScrollingReasons() const; 1106 bool isSelfPaintingLayerForIntrinsicOrScrollingReasons() const;
1109 1107
1110 bool shouldFragmentCompositedBounds(const PaintLayer* compositingLayer) const; 1108 bool shouldFragmentCompositedBounds(const PaintLayer* compositingLayer) const;
1111 1109
1110 void expandRectForStackingChildren(const PaintLayer* compositedLayer,
1111 LayoutRect& result,
1112 PaintLayer::CalculateBoundsOptions) const;
1113
1114 // The return value is in the space of |stackingParent|, if non-null, or
1115 // |this| otherwise.
1116 LayoutRect boundingBoxForCompositingInternal(
1117 const PaintLayer* compositedLayer,
1118 const PaintLayer* stackingParent,
1119 CalculateBoundsOptions) const;
1120
1112 // Self-painting layer is an optimization where we avoid the heavy Layer 1121 // Self-painting layer is an optimization where we avoid the heavy Layer
1113 // painting machinery for a Layer allocated only to handle the overflow clip 1122 // painting machinery for a Layer allocated only to handle the overflow clip
1114 // case. 1123 // case.
1115 // FIXME(crbug.com/332791): Self-painting layer should be merged into the 1124 // FIXME(crbug.com/332791): Self-painting layer should be merged into the
1116 // overflow-only concept. 1125 // overflow-only concept.
1117 unsigned m_isSelfPaintingLayer : 1; 1126 unsigned m_isSelfPaintingLayer : 1;
1118 1127
1119 // If have no self-painting descendants, we don't have to walk our children 1128 // If have no self-painting descendants, we don't have to walk our children
1120 // during painting. This can lead to significant savings, especially if the 1129 // during painting. This can lead to significant savings, especially if the
1121 // tree has lots of non-self-painting layers grouped together (e.g. table 1130 // tree has lots of non-self-painting layers grouped together (e.g. table
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
1224 1233
1225 } // namespace blink 1234 } // namespace blink
1226 1235
1227 #ifndef NDEBUG 1236 #ifndef NDEBUG
1228 // Outside the WebCore namespace for ease of invocation from gdb. 1237 // Outside the WebCore namespace for ease of invocation from gdb.
1229 CORE_EXPORT void showLayerTree(const blink::PaintLayer*); 1238 CORE_EXPORT void showLayerTree(const blink::PaintLayer*);
1230 CORE_EXPORT void showLayerTree(const blink::LayoutObject*); 1239 CORE_EXPORT void showLayerTree(const blink::LayoutObject*);
1231 #endif 1240 #endif
1232 1241
1233 #endif // Layer_h 1242 #endif // Layer_h
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/ClipRect.h ('k') | third_party/WebKit/Source/core/paint/PaintLayer.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698