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

Unified Diff: include/effects/SkLayerRasterizer.h

Issue 176873004: Builder class for SkLayerRasterizer. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: 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: include/effects/SkLayerRasterizer.h
diff --git a/include/effects/SkLayerRasterizer.h b/include/effects/SkLayerRasterizer.h
index be81a2ba3defd30f273788967bfb95481ec50d51..8096d784337d766a089c01b101cef3ac02bb12cd 100644
--- a/include/effects/SkLayerRasterizer.h
+++ b/include/effects/SkLayerRasterizer.h
@@ -21,6 +21,33 @@ public:
SkLayerRasterizer();
virtual ~SkLayerRasterizer();
+ class SK_API Builder {
+ public:
+ Builder();
+ ~Builder();
+
+ void addLayer(const SkPaint& paint) {
+ this->addLayer(paint, 0, 0);
+ }
+
+ /**
+ * Add a new layer (above any previous layers) to the rasterizer.
+ * The layer will extract those fields that affect the mask from
+ * the specified paint, but will not retain a reference to the paint
+ * object itself, so it may be reused without danger of side-effects.
+ */
+ void addLayer(const SkPaint& paint, SkScalar dx, SkScalar dy);
+
+ /**
+ * Pass queue of layers on to newly created layer rasterizer and return it. The builder
+ * cannot be used any more after calling this function.
+ */
+ SkLayerRasterizer* detachRasterizer();
+
+ private:
+ SkDeque* fLayers;
+ };
+
void addLayer(const SkPaint& paint) {
reed1 2014/02/24 13:35:40 Consider adding a build-guard here, to remind us t
Dominik Grewe 2014/02/24 13:54:34 Done.
this->addLayer(paint, 0, 0);
}
@@ -35,6 +62,7 @@ public:
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkLayerRasterizer)
protected:
+ SkLayerRasterizer(SkDeque* layers);
SkLayerRasterizer(SkReadBuffer&);
virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE;
@@ -44,7 +72,7 @@ protected:
SkMask* mask, SkMask::CreateMode mode) const;
private:
- SkDeque fLayers;
+ SkDeque* fLayers;
typedef SkRasterizer INHERITED;
};

Powered by Google App Engine
This is Rietveld 408576698