Index: Source/core/rendering/RenderLayer.h |
diff --git a/Source/core/rendering/RenderLayer.h b/Source/core/rendering/RenderLayer.h |
index 6b34194d4389a43b74fe4c89b96b120af8f785d8..9e602c91deb9ef2f9d1629154120411d0ad655c5 100644 |
--- a/Source/core/rendering/RenderLayer.h |
+++ b/Source/core/rendering/RenderLayer.h |
@@ -62,6 +62,8 @@ |
namespace WebCore { |
+struct ClipperContext; |
+class CompositedLayerMapping; |
class FilterEffectRenderer; |
class FilterOperations; |
class HitTestRequest; |
@@ -70,11 +72,11 @@ class HitTestingTransformState; |
class PlatformEvent; |
class RenderFlowThread; |
class RenderGeometryMap; |
-class CompositedLayerMapping; |
class RenderLayerCompositor; |
class RenderReplica; |
class RenderScrollbarPart; |
class RenderStyle; |
+class RenderSVGResourceClipper; |
class RenderView; |
class Scrollbar; |
class TransformationMatrix; |
@@ -207,6 +209,9 @@ public: |
void setHasOutOfFlowPositionedDescendant(bool hasDescendant) { m_hasOutOfFlowPositionedDescendant = hasDescendant; } |
void setHasOutOfFlowPositionedDescendantDirty(bool dirty) { m_hasOutOfFlowPositionedDescendantDirty = dirty; } |
+ void setHasComplexClippedAncestor(bool hasAncestor) { m_hasComplexClippedAncestor = hasAncestor; } |
+ bool hasComplexClippedAncestor() const { return m_hasComplexClippedAncestor; } |
+ |
bool childLayerHasBlendMode() const { ASSERT(!m_childLayerHasBlendModeStatusDirty); return m_childLayerHasBlendMode; } |
bool hasUnclippedDescendant() const { return m_hasUnclippedDescendant; } |
@@ -466,6 +471,7 @@ private: |
void updateSelfPaintingLayer(); |
void updateVisibilityAfterStyleChange(const RenderStyle* oldStyle); |
+ void updateHasComplexClippedAncestor(); |
void updateOutOfFlowPositioned(const RenderStyle* oldStyle); |
@@ -516,6 +522,7 @@ private: |
void paintMaskForFragments(const LayerFragments&, GraphicsContext*, const LayerPaintingInfo&, RenderObject* paintingRootForRenderer); |
void paintChildClippingMaskForFragments(const LayerFragments&, GraphicsContext*, const LayerPaintingInfo&, RenderObject* paintingRootForRenderer); |
void paintTransformedLayerIntoFragments(GraphicsContext*, const LayerPaintingInfo&, PaintLayerFlags); |
+ void applyComplexClip(GraphicsContext*, RenderLayer*, ClipperContext*, const LayerPaintingInfo&, const LayoutPoint& offsetFromRoot, bool* needsContextRestore, bool* rootRelativeBoundsComputed, IntRect* rootRelativeBounds, Vector<RenderSVGResourceClipper*>*); |
RenderLayer* hitTestLayer(RenderLayer* rootLayer, RenderLayer* containerLayer, const HitTestRequest& request, HitTestResult& result, |
const LayoutRect& hitTestRect, const HitTestLocation&, bool appliedTransform, |
@@ -628,6 +635,8 @@ protected: |
unsigned m_isUnclippedDescendant : 1; |
+ unsigned m_hasComplexClippedAncestor : 1; |
+ |
const unsigned m_isRootLayer : 1; |
unsigned m_usedTransparency : 1; // Tracks whether we need to close a transparent layer, i.e., whether |