Index: Source/core/paint/ClipRecorder.h |
diff --git a/Source/core/paint/ClipRecorder.h b/Source/core/paint/ClipRecorder.h |
index eccf137ffba1b8dcf3b583b55d65cf7ef867189e..9fea722569798fec58d068cae47a11c30744afbd 100644 |
--- a/Source/core/paint/ClipRecorder.h |
+++ b/Source/core/paint/ClipRecorder.h |
@@ -6,14 +6,16 @@ |
#define ClipRecorder_h |
#include "core/paint/ViewDisplayList.h" |
+#include "core/rendering/LayerPaintingInfo.h" |
+#include "core/rendering/PaintPhase.h" |
#include "core/rendering/RenderLayerModelObject.h" |
-#include "platform/geometry/LayoutRect.h" |
#include "platform/geometry/RoundedRect.h" |
+#include "wtf/Vector.h" |
namespace blink { |
-class RenderLayerModelObject; |
-struct PaintInfo; |
+class ClipRect; |
+class GraphicsContext; |
class ClipDisplayItem : public DisplayItem { |
public: |
@@ -39,16 +41,33 @@ |
class ClipRecorder { |
public: |
- ClipRecorder(RenderLayerModelObject&, const PaintInfo&, const LayoutRect& clipRect); |
+ |
+ enum BorderRadiusClippingRule { IncludeSelfForBorderRadius, DoNotIncludeSelfForBorderRadius }; |
+ |
+ // Set rounded clip rectangles defined by border radii all the way from the LayerPaintingInfo |
+ // "root" layer down to the specified layer (or the parent of said layer, in case |
+ // BorderRadiusClippingRule says to skip self). fragmentOffset is used for multicol, to specify |
+ // the translation required to get from flow thread coordinates to visual coordinates for a |
+ // certain column. |
+ // FIXME: The BorderRadiusClippingRule parameter is really useless now. If we want to skip self, |
+ // why not just supply the parent layer as the first parameter instead? |
+ // FIXME: The ClipRect passed is in visual coordinates (not flow thread coordinates), but at the |
+ // same time we pass a fragmentOffset, so that we can translate from flow thread coordinates to |
+ // visual coordinates. This may look rather confusing/redundant, but it is needed for rounded |
+ // border clipping. Would be nice to clean up this. |
+ explicit ClipRecorder(const RenderLayerModelObject*, GraphicsContext*, DisplayItem::Type, const ClipRect&, const LayerPaintingInfo* localPaintingInfo, const LayoutPoint& fragmentOffset, PaintLayerFlags, BorderRadiusClippingRule = IncludeSelfForBorderRadius); |
+ |
~ClipRecorder(); |
- static DisplayItem::Type paintPhaseToClipType(PaintPhase); |
private: |
- LayoutRect m_clipRect; |
- const PaintInfo& m_paintInfo; |
- RenderLayerModelObject& m_canvas; |
+ |
+ void collectRoundedRectClips(RenderLayer&, const LayerPaintingInfo& localPaintingInfo, GraphicsContext*, const LayoutPoint& fragmentOffset, PaintLayerFlags, |
+ BorderRadiusClippingRule, Vector<RoundedRect>& roundedRectClips); |
+ |
+ GraphicsContext* m_graphicsContext; |
+ const RenderLayerModelObject* m_renderer; |
}; |
} // namespace blink |
-#endif // ClipRecorder_h |
+#endif // ViewDisplayList_h |