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

Unified Diff: include/effects/SkLayerRasterizer.h

Issue 176873004: Builder class for SkLayerRasterizer. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Make ReadLayers private 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
« no previous file with comments | « include/core/SkRasterizer.h ('k') | samplecode/ClockFaceView.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: include/effects/SkLayerRasterizer.h
diff --git a/include/effects/SkLayerRasterizer.h b/include/effects/SkLayerRasterizer.h
index be81a2ba3defd30f273788967bfb95481ec50d51..fdfb179cb6bab604188c2f20b12f74697e29b757 100644
--- a/include/effects/SkLayerRasterizer.h
+++ b/include/effects/SkLayerRasterizer.h
@@ -18,9 +18,36 @@ class SkPaint;
class SK_API SkLayerRasterizer : public SkRasterizer {
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;
+ };
+
+#ifdef SK_SUPPORT_LEGACY_LAYERRASTERIZER_API
void addLayer(const SkPaint& paint) {
this->addLayer(paint, 0, 0);
}
@@ -31,10 +58,12 @@ public:
object itself, so it may be reused without danger of side-effects.
*/
void addLayer(const SkPaint& paint, SkScalar dx, SkScalar dy);
+#endif
SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkLayerRasterizer)
protected:
+ SkLayerRasterizer(SkDeque* layers);
SkLayerRasterizer(SkReadBuffer&);
virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE;
@@ -43,8 +72,19 @@ protected:
const SkIRect* clipBounds,
SkMask* mask, SkMask::CreateMode mode) const;
+#ifdef SK_SUPPORT_LEGACY_LAYERRASTERIZER_API
+public:
+#endif
+ SkLayerRasterizer();
+
private:
- SkDeque fLayers;
+#ifdef SK_SUPPORT_LEGACY_LAYERRASTERIZER_API
+ SkDeque* fLayers;
+#else
+ const SkDeque* const fLayers;
+#endif
+
+ static SkDeque* ReadLayers(SkReadBuffer& buffer);
typedef SkRasterizer INHERITED;
};
« no previous file with comments | « include/core/SkRasterizer.h ('k') | samplecode/ClockFaceView.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698