Index: src/codec/SkCodec_libbmp.cpp |
diff --git a/src/codec/SkCodec_libbmp.cpp b/src/codec/SkCodec_libbmp.cpp |
index bd5d2ca7c557fa7c4157428b8e5201cde2320254..9c752361d914424f70ea3b74af804f4eeba579c4 100644 |
--- a/src/codec/SkCodec_libbmp.cpp |
+++ b/src/codec/SkCodec_libbmp.cpp |
@@ -759,8 +759,7 @@ SkCodec::Result SkBmpCodec::decodeMask(const SkImageInfo& dstInfo, |
// Create the swizzler |
SkAutoTDelete<SkMaskSwizzler> maskSwizzler( |
- SkMaskSwizzler::CreateMaskSwizzler(dstInfo, dst, dstRowBytes, |
- fMasks, fBitsPerPixel)); |
+ SkMaskSwizzler::CreateMaskSwizzler(dstInfo, fMasks, fBitsPerPixel)); |
// Iterate over rows of the image |
bool transparent = true; |
@@ -781,7 +780,8 @@ SkCodec::Result SkBmpCodec::decodeMask(const SkImageInfo& dstInfo, |
// Decode the row in destination format |
int row = kBottomUp_RowOrder == fRowOrder ? height - 1 - y : y; |
- SkSwizzler::ResultAlpha r = maskSwizzler->next(srcRow, row); |
+ void* dstRow = SkTAddOffset<void>(dst, dstRowBytes * row); |
+ SkSwizzler::ResultAlpha r = maskSwizzler->next(srcRow, dstRow); |
transparent &= SkSwizzler::IsTransparent(r); |
// Move to the next row |
@@ -794,13 +794,14 @@ SkCodec::Result SkBmpCodec::decodeMask(const SkImageInfo& dstInfo, |
const SkImageInfo& opaqueInfo = |
dstInfo.makeAlphaType(kOpaque_SkAlphaType); |
SkAutoTDelete<SkMaskSwizzler> opaqueSwizzler( |
- SkMaskSwizzler::CreateMaskSwizzler(opaqueInfo, dst, dstRowBytes, |
- fMasks, fBitsPerPixel)); |
+ SkMaskSwizzler::CreateMaskSwizzler(opaqueInfo, fMasks, |
+ fBitsPerPixel)); |
scroggo
2015/07/27 20:42:06
nit: Can this fit on the previous line now?
msarett
2015/07/27 21:11:33
Yes!
|
srcRow = srcBuffer.get(); |
for (int y = 0; y < height; y++) { |
// Decode the row in opaque format |
int row = kBottomUp_RowOrder == fRowOrder ? height - 1 - y : y; |
- opaqueSwizzler->next(srcRow, row); |
+ void* dstRow = SkTAddOffset<void>(dst, dstRowBytes * row); |
+ opaqueSwizzler->next(srcRow, dstRow); |
// Move to the next row |
srcRow = SkTAddOffset<uint8_t>(srcRow, rowBytes); |
@@ -1134,7 +1135,7 @@ SkCodec::Result SkBmpCodec::decode(const SkImageInfo& dstInfo, |
// Create swizzler |
SkAutoTDelete<SkSwizzler> swizzler(SkSwizzler::CreateSwizzler(config, |
- colorPtr, dstInfo, dst, dstRowBytes, kNo_ZeroInitialized)); |
+ colorPtr, dstInfo, kNo_ZeroInitialized)); |
// Allocate space for a row buffer and a source for the swizzler |
SkAutoTDeleteArray<uint8_t> srcBuffer(SkNEW_ARRAY(uint8_t, rowBytes)); |
@@ -1162,7 +1163,8 @@ SkCodec::Result SkBmpCodec::decode(const SkImageInfo& dstInfo, |
row = height - 1 - y; |
} |
- swizzler->next(srcBuffer.get(), row); |
+ void* dstRow = SkTAddOffset<void>(dst, dstRowBytes * row); |
+ swizzler->next(srcBuffer.get(), dstRow); |
// FIXME: SkSwizzler::ResultAlpha r = |
// swizzler->next(srcBuffer.get(), row); |
// FIXME: transparent &= SkSwizzler::IsTransparent(r); |