aboutsummaryrefslogtreecommitdiffhomepage
path: root/dm/DMSrcSink.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'dm/DMSrcSink.cpp')
-rw-r--r--dm/DMSrcSink.cpp15
1 files changed, 8 insertions, 7 deletions
diff --git a/dm/DMSrcSink.cpp b/dm/DMSrcSink.cpp
index 9f7814f21f..26698bf56a 100644
--- a/dm/DMSrcSink.cpp
+++ b/dm/DMSrcSink.cpp
@@ -170,12 +170,13 @@ Error BRDSrc::draw(SkCanvas* canvas) const {
return Error::Nonfatal(SkStringPrintf("Could not create brd for %s.", fPath.c_str()));
}
- if (kRGB_565_SkColorType == colorType) {
- auto recommendedCT = brd->computeOutputColorType(colorType);
- if (recommendedCT != colorType) {
- return Error::Nonfatal("Skip decoding non-opaque to 565.");
- }
+ auto recommendedCT = brd->computeOutputColorType(colorType);
+ if (kRGB_565_SkColorType == colorType && recommendedCT != colorType) {
+ return Error::Nonfatal("Skip decoding non-opaque to 565.");
}
+ colorType = recommendedCT;
+
+ auto colorSpace = brd->computeOutputColorSpace(colorType, nullptr);
const uint32_t width = brd->width();
const uint32_t height = brd->height();
@@ -187,7 +188,7 @@ Error BRDSrc::draw(SkCanvas* canvas) const {
case kFullImage_Mode: {
SkBitmap bitmap;
if (!brd->decodeRegion(&bitmap, nullptr, SkIRect::MakeXYWH(0, 0, width, height),
- fSampleSize, colorType, false, SkColorSpace::MakeSRGB())) {
+ fSampleSize, colorType, false, colorSpace)) {
return "Cannot decode (full) region.";
}
alpha8_to_gray8(&bitmap);
@@ -243,7 +244,7 @@ Error BRDSrc::draw(SkCanvas* canvas) const {
SkBitmap bitmap;
if (!brd->decodeRegion(&bitmap, nullptr, SkIRect::MakeXYWH(decodeLeft,
decodeTop, decodeWidth, decodeHeight), fSampleSize, colorType, false,
- SkColorSpace::MakeSRGB())) {
+ colorSpace)) {
return "Cannot decode region.";
}