Index: Source/platform/graphics/DrawLooper.h |
diff --git a/Source/platform/graphics/DrawLooper.h b/Source/platform/graphics/DrawLooper.h |
index 4a66910c30029162ca8768a7cc52f49b3dc366f8..521dd6e1a461c7285c1aee767116690be43ef3d5 100644 |
--- a/Source/platform/graphics/DrawLooper.h |
+++ b/Source/platform/graphics/DrawLooper.h |
@@ -32,18 +32,19 @@ |
#define DrawLooper_h |
#include "platform/PlatformExport.h" |
+#include "third_party/skia/include/effects/SkLayerDrawLooper.h" |
#include "wtf/Noncopyable.h" |
+#include "wtf/RefCounted.h" |
#include "wtf/RefPtr.h" |
class SkDrawLooper; |
-class SkLayerDrawLooper; |
namespace WebCore { |
class Color; |
class FloatSize; |
-class PLATFORM_EXPORT DrawLooper { |
+class PLATFORM_EXPORT DrawLooper : public RefCounted<DrawLooper> { |
jbroman
2014/02/24 17:47:44
Why make this refcounted? The second level of refc
Dominik Grewe
2014/02/24 18:11:57
If I remove it the compiler complains that it can'
jbroman
2014/02/24 18:18:53
If you make this class not refcounted, you have to
Dominik Grewe
2014/02/24 18:34:39
Done.
|
// Implementing the copy constructor properly would require writing code to |
// copy the underlying SkDrawLooper. |
WTF_MAKE_NONCOPYABLE(DrawLooper); |
@@ -58,20 +59,33 @@ public: |
ShadowIgnoresAlpha |
}; |
- DrawLooper(); |
~DrawLooper(); |
// Callees should not modify this looper other than to iterate over it. |
// A downcast to SkLayerDrawLooper* is tantamount to a const_cast. |
SkDrawLooper* skDrawLooper() const; |
- void addUnmodifiedContent(); |
- void addShadow(const FloatSize& offset, float blur, const Color&, |
- ShadowTransformMode = ShadowRespectsTransforms, |
- ShadowAlphaMode = ShadowRespectsAlpha); |
+ class Builder { |
+ public: |
+ Builder() { } |
+ ~Builder() { } |
+ |
+ void addUnmodifiedContent(); |
+ void addShadow(const FloatSize& offset, float blur, const Color&, |
+ ShadowTransformMode = ShadowRespectsTransforms, |
+ ShadowAlphaMode = ShadowRespectsAlpha); |
+ |
+ // Pass layers to new DrawLooper object and return it. The builder |
+ // should not be used any more after calling this method. |
+ PassRefPtr<DrawLooper> detachDrawLooper(); |
+ |
+ private: |
+ SkLayerDrawLooper::Builder m_skDrawLooperBuilder; |
+ }; |
private: |
- RefPtr<SkLayerDrawLooper> m_skDrawLooper; |
+ DrawLooper(SkDrawLooper*); |
+ RefPtr<SkDrawLooper> m_skDrawLooper; |
}; |
} // namespace WebCore |