diff options
author | Matt Sarett <msarett@google.com> | 2017-03-24 16:31:19 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-04-03 18:32:42 +0000 |
commit | d531ca038fac8acb3320a78c393c002ca59768fe (patch) | |
tree | 2d9891fae706bf8aa7972dda94b01cb6a56cf45c /src/codec/SkCodecImageGenerator.cpp | |
parent | 8576014d8a8b799b30dbee4b9d86571fc4781807 (diff) |
Use SkTransferFunctionBehavior in SkImageGenerator
This fixes SkColorSpaceXformCanvas gms that expect
non-linear premuls from the codec.
BUG=skia:
Change-Id: I5dc236d0cd760c23605a26e9c33ddb18955f9231
Reviewed-on: https://skia-review.googlesource.com/10164
Reviewed-by: Mike Klein <mtklein@chromium.org>
Commit-Queue: Matt Sarett <msarett@google.com>
Diffstat (limited to 'src/codec/SkCodecImageGenerator.cpp')
-rw-r--r-- | src/codec/SkCodecImageGenerator.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/codec/SkCodecImageGenerator.cpp b/src/codec/SkCodecImageGenerator.cpp index 56ca21eb76..6467033371 100644 --- a/src/codec/SkCodecImageGenerator.cpp +++ b/src/codec/SkCodecImageGenerator.cpp @@ -37,8 +37,19 @@ SkData* SkCodecImageGenerator::onRefEncodedData(GrContext* ctx) { bool SkCodecImageGenerator::onGetPixels(const SkImageInfo& info, void* pixels, size_t rowBytes, SkPMColor ctable[], int* ctableCount) { - SkCodec::Result result = fCodec->getPixels(info, pixels, rowBytes, nullptr, ctable, - ctableCount); + Options opts; + opts.fColorTable = ctable; + opts.fColorTableCount = ctableCount; + opts.fBehavior = SkTransferFunctionBehavior::kRespect; + return this->onGetPixels(info, pixels, rowBytes, opts); +} + +bool SkCodecImageGenerator::onGetPixels(const SkImageInfo& info, void* pixels, size_t rowBytes, + const Options& opts) { + SkCodec::Options codecOpts; + codecOpts.fPremulBehavior = opts.fBehavior; + SkCodec::Result result = fCodec->getPixels(info, pixels, rowBytes, &codecOpts, opts.fColorTable, + opts.fColorTableCount); switch (result) { case SkCodec::kSuccess: case SkCodec::kIncompleteInput: |