diff options
author | msarett <msarett@google.com> | 2016-03-23 06:50:59 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-03-23 06:50:59 -0700 |
commit | 3ec5db42cc145fb11e352eca6474f91d7a4957e3 (patch) | |
tree | 34cdbc141fee49af0ed9a3a7add4837ac7306200 /src/codec/SkCodecImageGenerator.cpp | |
parent | b4a7dc99b1a01cdd5c0cd5913b630436ca696210 (diff) |
Workaround to set the sRGB flag on SkImageGenerator
BUG=skia:4895
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1820413002
Review URL: https://codereview.chromium.org/1820413002
Diffstat (limited to 'src/codec/SkCodecImageGenerator.cpp')
-rw-r--r-- | src/codec/SkCodecImageGenerator.cpp | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/codec/SkCodecImageGenerator.cpp b/src/codec/SkCodecImageGenerator.cpp index e579da92f6..db13aaea29 100644 --- a/src/codec/SkCodecImageGenerator.cpp +++ b/src/codec/SkCodecImageGenerator.cpp @@ -16,16 +16,24 @@ SkImageGenerator* SkCodecImageGenerator::NewFromEncodedCodec(SkData* data) { return new SkCodecImageGenerator(codec, data); } -static SkImageInfo make_premul(const SkImageInfo& info) { - if (kUnpremul_SkAlphaType == info.alphaType()) { - return info.makeAlphaType(kPremul_SkAlphaType); - } +// FIXME: We should expose information about the encoded format on the +// SkImageGenerator, so the client can interpret the encoded +// format and request an output format. For now, as a workaround, +// we guess what output format the client wants. +static SkImageInfo fix_info(const SkCodec& codec) { + const SkImageInfo& info = codec.getInfo(); + SkAlphaType alphaType = (kUnpremul_SkAlphaType == info.alphaType()) ? kPremul_SkAlphaType : + info.alphaType(); + + // Crudely guess that the presence of a color space means sRGB. + SkColorProfileType profileType = (codec.getColorSpace()) ? kSRGB_SkColorProfileType : + kLinear_SkColorProfileType; - return info; + return SkImageInfo::Make(info.width(), info.height(), info.colorType(), alphaType, profileType); } SkCodecImageGenerator::SkCodecImageGenerator(SkCodec* codec, SkData* data) - : INHERITED(make_premul(codec->getInfo())) + : INHERITED(fix_info(*codec)) , fCodec(codec) , fData(SkRef(data)) {} |