diff options
Diffstat (limited to 'src/codec')
-rw-r--r-- | src/codec/SkAndroidCodec.cpp | 14 | ||||
-rw-r--r-- | src/codec/SkJpegCodec.cpp | 2 |
2 files changed, 15 insertions, 1 deletions
diff --git a/src/codec/SkAndroidCodec.cpp b/src/codec/SkAndroidCodec.cpp index c315b032fb..5dddfe355e 100644 --- a/src/codec/SkAndroidCodec.cpp +++ b/src/codec/SkAndroidCodec.cpp @@ -114,6 +114,20 @@ SkAlphaType SkAndroidCodec::computeOutputAlphaType(bool requestedUnpremul) { return requestedUnpremul ? kUnpremul_SkAlphaType : kPremul_SkAlphaType; } +sk_sp<SkColorSpace> SkAndroidCodec::computeOutputColorSpace(SkColorType outputColorType) { + switch (outputColorType) { + case kRGBA_8888_SkColorType: + case kBGRA_8888_SkColorType: + case kIndex_8_SkColorType: + return SkColorSpace::MakeNamed(SkColorSpace::kSRGB_Named); + case kRGBA_F16_SkColorType: + return SkColorSpace::MakeNamed(SkColorSpace::kSRGBLinear_Named); + default: + // Color correction not supported for k565 and kGray. + return nullptr; + } +} + SkISize SkAndroidCodec::getSampledDimensions(int sampleSize) const { if (!is_valid_sample_size(sampleSize)) { return SkISize::Make(0, 0); diff --git a/src/codec/SkJpegCodec.cpp b/src/codec/SkJpegCodec.cpp index 7867fd0e8b..ad5ce5834d 100644 --- a/src/codec/SkJpegCodec.cpp +++ b/src/codec/SkJpegCodec.cpp @@ -503,7 +503,7 @@ int SkJpegCodec::readRows(const SkImageInfo& dstInfo, void* dst, size_t rowBytes uint32_t* swizzleDst = (uint32_t*) dst; size_t decodeDstRowBytes = rowBytes; size_t swizzleDstRowBytes = rowBytes; - int dstWidth = dstInfo.width(); + int dstWidth = this->options().fSubset ? this->options().fSubset->width() : dstInfo.width(); if (fSwizzleSrcRow && fColorXformSrcRow) { decodeDst = (JSAMPLE*) fSwizzleSrcRow; swizzleDst = fColorXformSrcRow; |