diff options
Diffstat (limited to 'dm/DMSrcSink.cpp')
-rw-r--r-- | dm/DMSrcSink.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/dm/DMSrcSink.cpp b/dm/DMSrcSink.cpp index 6561ad9da3..4f5cd43af8 100644 --- a/dm/DMSrcSink.cpp +++ b/dm/DMSrcSink.cpp @@ -13,6 +13,7 @@ #include "SkCodecImageGenerator.h" #include "SkColorSpace.h" #include "SkColorSpaceXform.h" +#include "SkColorSpaceXformCanvas.h" #include "SkColorSpace_XYZ.h" #include "SkCommonFlags.h" #include "SkData.h" @@ -1839,4 +1840,16 @@ Error ViaLite::draw(const Src& src, SkBitmap* bitmap, SkWStream* stream, SkStrin }); } +/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ + +ViaCSXform::ViaCSXform(Sink* sink, sk_sp<SkColorSpace> cs) : Via(sink), fCS(std::move(cs)) {} + +Error ViaCSXform::draw(const Src& src, SkBitmap* bitmap, SkWStream* stream, SkString* log) const { + return draw_to_canvas(fSink.get(), bitmap, stream, log, src.size(), + [&](SkCanvas* canvas) -> Error { + auto proxy = SkCreateColorSpaceXformCanvas(canvas, fCS); + return src.draw(proxy.get()); + }); +} + } // namespace DM |