Index: Source/core/paint/TransparencyDisplayItem.h |
diff --git a/Source/core/paint/TransparencyDisplayItem.h b/Source/core/paint/TransparencyDisplayItem.h |
index 290d916f0d37c830bc8643a72329522ab380c8fd..6209996b363fe39b32ea4a33e8e766b0d32a21c6 100644 |
--- a/Source/core/paint/TransparencyDisplayItem.h |
+++ b/Source/core/paint/TransparencyDisplayItem.h |
@@ -11,13 +11,21 @@ |
namespace blink { |
+enum TransparencyClipBehavior { |
+ ClipToRect, |
+ DoNotClip |
+}; |
+ |
+// FIXME: Move this file to TransparencyRecorder |
+ |
class BeginTransparencyDisplayItem : public DisplayItem { |
public: |
- BeginTransparencyDisplayItem(const RenderObject* renderer, Type type, const LayoutRect& clipRect, const WebBlendMode& blendMode, const float opacity) |
+ BeginTransparencyDisplayItem(const RenderObject* renderer, Type type, const LayoutRect& clipRect, const WebBlendMode& blendMode, const float opacity, TransparencyClipBehavior clipBehavior) |
: DisplayItem(renderer, type) |
, m_clipRect(clipRect) |
, m_blendMode(blendMode) |
- , m_opacity(opacity) { } |
+ , m_opacity(opacity) |
+ , m_clipBehavior(clipBehavior) { } |
virtual void replay(GraphicsContext*) override; |
private: |
@@ -30,18 +38,33 @@ private: |
const LayoutRect m_clipRect; |
const WebBlendMode m_blendMode; |
const float m_opacity; |
+ const TransparencyClipBehavior m_clipBehavior; |
}; |
class EndTransparencyDisplayItem : public DisplayItem { |
public: |
- EndTransparencyDisplayItem(const RenderObject* renderer, Type type) |
- : DisplayItem(renderer, type) { } |
+ EndTransparencyDisplayItem(const RenderObject* renderer, Type type, TransparencyClipBehavior clipBehavior) |
+ : DisplayItem(renderer, type), m_clipBehavior(clipBehavior) { } |
virtual void replay(GraphicsContext*) override; |
private: |
#ifndef NDEBUG |
virtual WTF::String asDebugString() const override; |
#endif |
+ const TransparencyClipBehavior m_clipBehavior; |
+}; |
+ |
+class TransparencyRecorder { |
+public: |
+ explicit TransparencyRecorder(GraphicsContext*, const RenderObject*, DisplayItem::Type, const LayoutRect& clipRect, const WebBlendMode&, const float opacity, TransparencyClipBehavior = ClipToRect); |
+ |
+ ~TransparencyRecorder(); |
+ |
+private: |
+ const RenderObject* m_renderer; |
+ const DisplayItem::Type m_type; |
+ GraphicsContext* m_graphicsContext; |
+ const TransparencyClipBehavior m_clipBehavior; |
}; |
} // namespace blink |