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; |
}; |