Index: Source/core/rendering/PaintInvalidationState.h |
diff --git a/Source/core/rendering/PaintInvalidationState.h b/Source/core/rendering/PaintInvalidationState.h |
index dcca3932f86641d1850efd77b6424936e3a584f3..da3fde13bcaaa37b16a76ea9f4d7d08d6326857e 100644 |
--- a/Source/core/rendering/PaintInvalidationState.h |
+++ b/Source/core/rendering/PaintInvalidationState.h |
@@ -6,23 +6,27 @@ |
#define PaintInvalidationState_h |
#include "platform/geometry/LayoutRect.h" |
+#include "platform/transforms/AffineTransform.h" |
#include "wtf/Noncopyable.h" |
namespace blink { |
class RenderLayerModelObject; |
class RenderObject; |
+class RenderSVGModelObject; |
class RenderView; |
class PaintInvalidationState { |
WTF_MAKE_NONCOPYABLE(PaintInvalidationState); |
public: |
PaintInvalidationState(const PaintInvalidationState& next, RenderLayerModelObject& renderer, const RenderLayerModelObject& paintInvalidationContainer); |
+ PaintInvalidationState(const PaintInvalidationState& next, const RenderSVGModelObject& renderer); |
explicit PaintInvalidationState(const RenderView&); |
const LayoutRect& clipRect() const { return m_clipRect; } |
const LayoutSize& paintOffset() const { return m_paintOffset; } |
+ const AffineTransform& svgTransform() const { ASSERT(m_svgTransform); return *m_svgTransform; } |
bool cachedOffsetsEnabled() const { return m_cachedOffsetsEnabled; } |
bool isClipped() const { return m_clipped; } |
@@ -38,6 +42,7 @@ public: |
} |
private: |
void applyClipIfNeeded(const RenderObject&); |
+ void addClipRectRelativeToPaintOffset(const LayoutSize& clipSize); |
friend class ForceHorriblySlowRectMapping; |
@@ -51,6 +56,11 @@ private: |
LayoutSize m_paintOffset; |
const RenderLayerModelObject& m_paintInvalidationContainer; |
+ |
+ // Transform from the initial viewport coordinate system of an outermost |
+ // SVG root to the userspace _before_ the relevant element. Combining this |
+ // with |m_paintOffset| yields the "final" offset. |
+ OwnPtr<AffineTransform> m_svgTransform; |
}; |
} // namespace blink |