| Index: src/codec/SkMaskSwizzler.cpp
|
| diff --git a/src/codec/SkMaskSwizzler.cpp b/src/codec/SkMaskSwizzler.cpp
|
| index 6ca9b58f4ed7e16e27490188aa6077412c1ed6dc..46f7898b1ffb3509000ddddc52618deb805714b5 100644
|
| --- a/src/codec/SkMaskSwizzler.cpp
|
| +++ b/src/codec/SkMaskSwizzler.cpp
|
| @@ -250,9 +250,9 @@ static SkSwizzler::ResultAlpha swizzle_mask32_to_565(
|
| * Create a new mask swizzler
|
| *
|
| */
|
| -SkMaskSwizzler* SkMaskSwizzler::CreateMaskSwizzler(
|
| - const SkImageInfo& dstInfo, const SkImageInfo& srcInfo, SkMasks* masks,
|
| - uint32_t bitsPerPixel) {
|
| +SkMaskSwizzler* SkMaskSwizzler::CreateMaskSwizzler(const SkImageInfo& dstInfo,
|
| + const SkImageInfo& srcInfo, SkMasks* masks, uint32_t bitsPerPixel, int subsetLeft,
|
| + int subsetWidth) {
|
|
|
| // Choose the appropriate row procedure
|
| RowProc proc = nullptr;
|
| @@ -354,9 +354,10 @@ SkMaskSwizzler* SkMaskSwizzler::CreateMaskSwizzler(
|
|
|
| // Get the sample size
|
| int sampleX;
|
| - SkScaledCodec::ComputeSampleSize(dstInfo, srcInfo, &sampleX, NULL);
|
| + SkScaledCodec::ComputeSampleSize(dstInfo.dimensions(), srcInfo.dimensions(), &sampleX, nullptr);
|
| + int startX = get_start_coord(sampleX) + subsetLeft;
|
|
|
| - return new SkMaskSwizzler(dstInfo, masks, proc, sampleX);
|
| + return new SkMaskSwizzler(masks, proc, subsetWidth, sampleX, startX);
|
| }
|
|
|
| /*
|
| @@ -364,13 +365,13 @@ SkMaskSwizzler* SkMaskSwizzler::CreateMaskSwizzler(
|
| * Constructor for mask swizzler
|
| *
|
| */
|
| -SkMaskSwizzler::SkMaskSwizzler(const SkImageInfo& dstInfo, SkMasks* masks,
|
| - RowProc proc, uint32_t sampleX)
|
| - : fDstInfo(dstInfo)
|
| - , fMasks(masks)
|
| +SkMaskSwizzler::SkMaskSwizzler(SkMasks* masks, RowProc proc, uint32_t width, uint32_t sampleX,
|
| + uint32_t startX)
|
| + : fMasks(masks)
|
| , fRowProc(proc)
|
| + , fWidth(width)
|
| , fSampleX(sampleX)
|
| - , fStartX(get_start_coord(sampleX))
|
| + , fStartX(startX)
|
| {}
|
|
|
| /*
|
| @@ -380,5 +381,5 @@ SkMaskSwizzler::SkMaskSwizzler(const SkImageInfo& dstInfo, SkMasks* masks,
|
| */
|
| SkSwizzler::ResultAlpha SkMaskSwizzler::swizzle(void* dst, const uint8_t* SK_RESTRICT src) {
|
| SkASSERT(nullptr != dst && nullptr != src);
|
| - return fRowProc(dst, src, fDstInfo.width(), fMasks, fStartX, fSampleX);
|
| + return fRowProc(dst, src, fWidth, fMasks, fStartX, fSampleX);
|
| }
|
|
|