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

Side by Side Diff: third_party/WebKit/Source/core/paint/LayerClipRecorder.cpp

Issue 2392443009: reflow comments in core/paint (Closed)
Patch Set: Created 4 years, 2 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
OLDNEW
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/LayerClipRecorder.h" 5 #include "core/paint/LayerClipRecorder.h"
6 6
7 #include "core/layout/ClipRect.h" 7 #include "core/layout/ClipRect.h"
8 #include "core/layout/LayoutView.h" 8 #include "core/layout/LayoutView.h"
9 #include "core/paint/PaintLayer.h" 9 #include "core/paint/PaintLayer.h"
10 #include "platform/geometry/IntRect.h" 10 #include "platform/geometry/IntRect.h"
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 } 57 }
58 58
59 void LayerClipRecorder::collectRoundedRectClips( 59 void LayerClipRecorder::collectRoundedRectClips(
60 PaintLayer& paintLayer, 60 PaintLayer& paintLayer,
61 const PaintLayerPaintingInfo& localPaintingInfo, 61 const PaintLayerPaintingInfo& localPaintingInfo,
62 GraphicsContext& context, 62 GraphicsContext& context,
63 const LayoutPoint& fragmentOffset, 63 const LayoutPoint& fragmentOffset,
64 PaintLayerFlags paintFlags, 64 PaintLayerFlags paintFlags,
65 BorderRadiusClippingRule rule, 65 BorderRadiusClippingRule rule,
66 Vector<FloatRoundedRect>& roundedRectClips) { 66 Vector<FloatRoundedRect>& roundedRectClips) {
67 // If the clip rect has been tainted by a border radius, then we have to walk up our layer chain applying the clips from 67 // If the clip rect has been tainted by a border radius, then we have to walk
68 // any layers with overflow. The condition for being able to apply these clips is that the overflow object be in our 68 // up our layer chain applying the clips from any layers with overflow. The
69 // containing block chain so we check that also. 69 // condition for being able to apply these clips is that the overflow object
70 // be in our containing block chain so we check that also.
70 for (PaintLayer* layer = rule == IncludeSelfForBorderRadius 71 for (PaintLayer* layer = rule == IncludeSelfForBorderRadius
71 ? &paintLayer 72 ? &paintLayer
72 : paintLayer.parent(); 73 : paintLayer.parent();
73 layer; layer = layer->parent()) { 74 layer; layer = layer->parent()) {
74 // Composited scrolling layers handle border-radius clip in the compositor v ia a mask layer. We do not 75 // Composited scrolling layers handle border-radius clip in the compositor
75 // want to apply a border-radius clip to the layer contents itself, because that would require re-rastering 76 // via a mask layer. We do not want to apply a border-radius clip to the
76 // every frame to update the clip. We only want to make sure that the mask l ayer is properly clipped so 77 // layer contents itself, because that would require re-rastering every
77 // that it can in turn clip the scrolled contents in the compositor. 78 // frame to update the clip. We only want to make sure that the mask layer
79 // is properly clipped so that it can in turn clip the scrolled contents in
80 // the compositor.
78 if (layer->needsCompositedScrolling() && 81 if (layer->needsCompositedScrolling() &&
79 !(paintFlags & PaintLayerPaintingChildClippingMaskPhase)) 82 !(paintFlags & PaintLayerPaintingChildClippingMaskPhase))
80 break; 83 break;
81 84
82 if (layer->layoutObject()->hasOverflowClip() && 85 if (layer->layoutObject()->hasOverflowClip() &&
83 layer->layoutObject()->style()->hasBorderRadius() && 86 layer->layoutObject()->style()->hasBorderRadius() &&
84 inContainingBlockChain(&paintLayer, layer)) { 87 inContainingBlockChain(&paintLayer, layer)) {
85 LayoutPoint delta(fragmentOffset); 88 LayoutPoint delta(fragmentOffset);
86 layer->convertToLayerCoords(localPaintingInfo.rootLayer, delta); 89 layer->convertToLayerCoords(localPaintingInfo.rootLayer, delta);
87 90
88 // The PaintLayer's size is pixel-snapped if it is a LayoutBox. We can't u se a pre-snapped border rect for clipping, since getRoundedInnerBorderFor assume s 91 // The PaintLayer's size is pixel-snapped if it is a LayoutBox. We can't
89 // it has not been snapped yet. 92 // use a pre-snapped border rect for clipping, since
93 // getRoundedInnerBorderFor assumes it has not been snapped yet.
90 LayoutSize size(layer->layoutBox() 94 LayoutSize size(layer->layoutBox()
91 ? toLayoutBox(layer->layoutObject())->size() 95 ? toLayoutBox(layer->layoutObject())->size()
92 : LayoutSize(layer->size())); 96 : LayoutSize(layer->size()));
93 roundedRectClips.append( 97 roundedRectClips.append(
94 layer->layoutObject()->style()->getRoundedInnerBorderFor( 98 layer->layoutObject()->style()->getRoundedInnerBorderFor(
95 LayoutRect(delta, size))); 99 LayoutRect(delta, size)));
96 } 100 }
97 101
98 if (layer == localPaintingInfo.rootLayer) 102 if (layer == localPaintingInfo.rootLayer)
99 break; 103 break;
100 } 104 }
101 } 105 }
102 106
103 LayerClipRecorder::~LayerClipRecorder() { 107 LayerClipRecorder::~LayerClipRecorder() {
104 m_graphicsContext.getPaintController().endItem<EndClipDisplayItem>( 108 m_graphicsContext.getPaintController().endItem<EndClipDisplayItem>(
105 m_layoutObject, DisplayItem::clipTypeToEndClipType(m_clipType)); 109 m_layoutObject, DisplayItem::clipTypeToEndClipType(m_clipType));
106 } 110 }
107 111
108 } // namespace blink 112 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698