| Index: dm/DMSrcSink.cpp
|
| diff --git a/dm/DMSrcSink.cpp b/dm/DMSrcSink.cpp
|
| index 840936c894b29d7742fee8d9b07e30b06b72bc74..5676faca55a1b56fa2d885713655f87c21d89ba9 100644
|
| --- a/dm/DMSrcSink.cpp
|
| +++ b/dm/DMSrcSink.cpp
|
| @@ -13,6 +13,7 @@
|
| #include "SkDeferredCanvas.h"
|
| #include "SkDocument.h"
|
| #include "SkError.h"
|
| +#include "SkFunction.h"
|
| #include "SkImageGenerator.h"
|
| #include "SkMultiPictureDraw.h"
|
| #include "SkNullCanvas.h"
|
| @@ -505,21 +506,20 @@ Error RasterSink::draw(const Src& src, SkBitmap* dst, SkWStream*, SkString*) con
|
| /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
|
|
| // Handy for front-patching a Src. Do whatever up-front work you need, then call draw_to_canvas(),
|
| -// passing the Sink draw() arguments, a size, and a lambda that takes SkCanvas* and returns Error.
|
| +// passing the Sink draw() arguments, a size, and a function draws into an SkCanvas.
|
| // Several examples below.
|
|
|
| -template <typename DrawFn>
|
| static Error draw_to_canvas(Sink* sink, SkBitmap* bitmap, SkWStream* stream, SkString* log,
|
| - SkISize size, DrawFn draw) {
|
| + SkISize size, SkFunction<Error(SkCanvas*)> draw) {
|
| class ProxySrc : public Src {
|
| public:
|
| - ProxySrc(SkISize size, DrawFn draw) : fSize(size), fDraw(draw) {}
|
| + ProxySrc(SkISize size, SkFunction<Error(SkCanvas*)> draw) : fSize(size), fDraw(draw) {}
|
| Error draw(SkCanvas* canvas) const override { return fDraw(canvas); }
|
| Name name() const override { sk_throw(); return ""; } // Won't be called.
|
| SkISize size() const override { return fSize; }
|
| private:
|
| - SkISize fSize;
|
| - DrawFn fDraw;
|
| + SkISize fSize;
|
| + SkFunction<Error(SkCanvas*)> fDraw;
|
| };
|
| return sink->draw(ProxySrc(size, draw), bitmap, stream, log);
|
| }
|
|
|