Chromium Code Reviews| 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 |