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

Side by Side Diff: Source/core/paint/LayerClipRecorder.h

Issue 1284203004: Generate scroll/clip display item hierarchy for SPv2 (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fix failing test. Update test expectation. Created 5 years, 3 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
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 #ifndef LayerClipRecorder_h 5 #ifndef LayerClipRecorder_h
6 #define LayerClipRecorder_h 6 #define LayerClipRecorder_h
7 7
8 #include "core/CoreExport.h" 8 #include "core/CoreExport.h"
9 #include "core/paint/DeprecatedPaintLayerPaintingInfo.h" 9 #include "core/paint/DeprecatedPaintLayerPaintingInfo.h"
10 #include "core/paint/PaintPhase.h" 10 #include "core/paint/PaintPhase.h"
11 #include "platform/graphics/paint/ClipDisplayItem.h" 11 #include "platform/graphics/paint/ClipDisplayItem.h"
12 #include "platform/graphics/paint/DisplayItem.h" 12 #include "platform/graphics/paint/DisplayItem.h"
13 #include "wtf/Vector.h" 13 #include "wtf/Vector.h"
14 14
15 namespace blink { 15 namespace blink {
16 16
17 class ClipRect; 17 class ClipRect;
18 class GraphicsContext; 18 class GraphicsContext;
19 class LayoutBox;
19 class LayoutBoxModelObject; 20 class LayoutBoxModelObject;
20 21
21 class CORE_EXPORT LayerClipRecorder { 22 class CORE_EXPORT LayerClipRecorder {
22 WTF_MAKE_FAST_ALLOCATED(LayerClipRecorder); 23 WTF_MAKE_FAST_ALLOCATED(LayerClipRecorder);
23 public: 24 public:
24 25
25 enum BorderRadiusClippingRule { IncludeSelfForBorderRadius, DoNotIncludeSelf ForBorderRadius }; 26 enum BorderRadiusClippingRule { IncludeSelfForBorderRadius, DoNotIncludeSelf ForBorderRadius };
26 27
27 // Set rounded clip rectangles defined by border radii all the way from the DeprecatedPaintLayerPaintingInfo 28 // Set rounded clip rectangles defined by border radii all the way from the DeprecatedPaintLayerPaintingInfo
28 // "root" layer down to the specified layer (or the parent of said layer, in case 29 // "root" layer down to the specified layer (or the parent of said layer, in case
29 // BorderRadiusClippingRule says to skip self). fragmentOffset is used for m ulticol, to specify 30 // BorderRadiusClippingRule says to skip self). fragmentOffset is used for m ulticol, to specify
30 // the translation required to get from flow thread coordinates to visual co ordinates for a 31 // the translation required to get from flow thread coordinates to visual co ordinates for a
31 // certain column. 32 // certain column.
32 // FIXME: The BorderRadiusClippingRule parameter is really useless now. If w e want to skip self, 33 // FIXME: The BorderRadiusClippingRule parameter is really useless now. If w e want to skip self,
33 // why not just supply the parent layer as the first parameter instead? 34 // why not just supply the parent layer as the first parameter instead?
34 // FIXME: The ClipRect passed is in visual coordinates (not flow thread coor dinates), but at the 35 // FIXME: The ClipRect passed is in visual coordinates (not flow thread coor dinates), but at the
35 // same time we pass a fragmentOffset, so that we can translate from flow th read coordinates to 36 // same time we pass a fragmentOffset, so that we can translate from flow th read coordinates to
36 // visual coordinates. This may look rather confusing/redundant, but it is n eeded for rounded 37 // visual coordinates. This may look rather confusing/redundant, but it is n eeded for rounded
37 // border clipping. Would be nice to clean up this. 38 // border clipping. Would be nice to clean up this.
38 explicit LayerClipRecorder(GraphicsContext&, const LayoutBoxModelObject&, Di splayItem::Type, const ClipRect&, const DeprecatedPaintLayerPaintingInfo* localP aintingInfo, const LayoutPoint& fragmentOffset, PaintLayerFlags, BorderRadiusCli ppingRule = IncludeSelfForBorderRadius); 39 LayerClipRecorder(GraphicsContext&, const LayoutBoxModelObject&, DisplayItem ::Type, const ClipRect&, const DeprecatedPaintLayerPaintingInfo*, const LayoutPo int& fragmentOffset, PaintLayerFlags, BorderRadiusClippingRule = IncludeSelfForB orderRadius);
40
41 // Note: This constructor is designed for SPv2, and has drastically differen t semantics than
42 // the other version above. In the old layer painting model, a layer is resp onsible for
43 // calculating the accumulated clip from ancestors, and applies the clip to itself.
44 // In SPv2, it is the layer that establishes overflow clipping who is respon sible to clip
45 // its descendants. This constructor takes a layer, and only issues clip for that layer.
46 LayerClipRecorder(GraphicsContext&, const LayoutBox&, const LayoutPoint& pai ntOffset);
pdr. 2015/09/03 06:16:59 Because the two modes for LayerClipRecorder are so
trchen 2015/09/04 06:10:15 Done.
39 47
40 ~LayerClipRecorder(); 48 ~LayerClipRecorder();
41 49
42 private: 50 private:
43 51
44 void collectRoundedRectClips(DeprecatedPaintLayer&, const DeprecatedPaintLay erPaintingInfo& localPaintingInfo, GraphicsContext&, const LayoutPoint& fragment Offset, PaintLayerFlags, 52 void collectRoundedRectClips(DeprecatedPaintLayer&, const DeprecatedPaintLay erPaintingInfo& localPaintingInfo, GraphicsContext&, const LayoutPoint& fragment Offset, PaintLayerFlags,
45 BorderRadiusClippingRule, Vector<FloatRoundedRect>& roundedRectClips); 53 BorderRadiusClippingRule, Vector<FloatRoundedRect>& roundedRectClips);
46 54
47 GraphicsContext& m_graphicsContext; 55 GraphicsContext& m_graphicsContext;
48 const LayoutBoxModelObject& m_layoutObject; 56 const LayoutBoxModelObject& m_layoutObject;
49 DisplayItem::Type m_clipType; 57 DisplayItem::Type m_clipType;
50 }; 58 };
51 59
52 } // namespace blink 60 } // namespace blink
53 61
54 #endif // LayerClipRecorder_h 62 #endif // LayerClipRecorder_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698