diff options
author | msarett <msarett@google.com> | 2016-04-25 07:04:58 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-04-25 07:04:58 -0700 |
commit | c7eb4905c4629eba44e76d98ce5e32546f739974 (patch) | |
tree | 0c8ff5540cbf57206d22ebaad5d8ee5113351cbe /dm/DMSrcSink.cpp | |
parent | 1dc172165b8186950fda4a269bd1b12c11947b14 (diff) |
Fix kSubset_Mode tests on non-native swizzles
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1918813002
Review URL: https://codereview.chromium.org/1918813002
Diffstat (limited to 'dm/DMSrcSink.cpp')
-rw-r--r-- | dm/DMSrcSink.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/dm/DMSrcSink.cpp b/dm/DMSrcSink.cpp index dcbd220275..18ac6b420a 100644 --- a/dm/DMSrcSink.cpp +++ b/dm/DMSrcSink.cpp @@ -585,11 +585,12 @@ Error CodecSrc::draw(SkCanvas* canvas) const { // And scale // FIXME: Should we have a version of getScaledDimensions that takes a subset // into account? - decodeInfo = decodeInfo.makeWH( - SkTMax(1, SkScalarRoundToInt(preScaleW * fScale)), - SkTMax(1, SkScalarRoundToInt(preScaleH * fScale))); - size_t rowBytes = decodeInfo.minRowBytes(); - if (!subsetBm.installPixels(decodeInfo, pixels, rowBytes, colorTable.get(), + const int scaledW = SkTMax(1, SkScalarRoundToInt(preScaleW * fScale)); + const int scaledH = SkTMax(1, SkScalarRoundToInt(preScaleH * fScale)); + decodeInfo = decodeInfo.makeWH(scaledW, scaledH); + SkImageInfo subsetBitmapInfo = bitmapInfo.makeWH(scaledW, scaledH); + size_t rowBytes = subsetBitmapInfo.minRowBytes(); + if (!subsetBm.installPixels(subsetBitmapInfo, pixels, rowBytes, colorTable.get(), nullptr, nullptr)) { return SkStringPrintf("could not install pixels for %s.", fPath.c_str()); } @@ -606,7 +607,7 @@ Error CodecSrc::draw(SkCanvas* canvas) const { fPath.c_str(), W, H, result); } premultiply_if_necessary(subsetBm); - swap_rb_if_necessary(bitmap, fDstColorType); + swap_rb_if_necessary(subsetBm, fDstColorType); canvas->drawBitmap(subsetBm, SkIntToScalar(left), SkIntToScalar(top)); // translate by the scaled height. top += decodeInfo.height(); |