Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1458)

Unified Diff: Source/platform/graphics/DrawLooper.h

Issue 177473003: Use SkLayerDrawLooper::Builder to construct SkLayerDrawLooper. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: DrawLooper::Builder Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698