Chromium Code Reviews| Index: include/effects/SkLayerRasterizer.h |
| diff --git a/include/effects/SkLayerRasterizer.h b/include/effects/SkLayerRasterizer.h |
| index be81a2ba3defd30f273788967bfb95481ec50d51..d8e6481fdbf99829485e4ee6615d55e65ca67eb1 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; |
| + static SkDeque* ReadLayers(SkReadBuffer& buffer); |
|
reed1
2014/02/24 15:22:22
Lets make this guy private if possible. -- less is
Dominik Grewe
2014/02/24 15:48:22
Done.
|
| + |
| +#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 |
| typedef SkRasterizer INHERITED; |
| }; |