aboutsummaryrefslogtreecommitdiffhomepage
path: root/dm/DMSrcSink.cpp
diff options
context:
space:
mode:
authorGravatar msarett <msarett@google.com>2016-04-25 07:04:58 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-04-25 07:04:58 -0700
commitc7eb4905c4629eba44e76d98ce5e32546f739974 (patch)
tree0c8ff5540cbf57206d22ebaad5d8ee5113351cbe /dm/DMSrcSink.cpp
parent1dc172165b8186950fda4a269bd1b12c11947b14 (diff)
Fix kSubset_Mode tests on non-native swizzles
Diffstat (limited to 'dm/DMSrcSink.cpp')
-rw-r--r--dm/DMSrcSink.cpp13
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();