Index: src/codec/SkMaskSwizzler.cpp |
diff --git a/src/codec/SkMaskSwizzler.cpp b/src/codec/SkMaskSwizzler.cpp |
index 6ca9b58f4ed7e16e27490188aa6077412c1ed6dc..9772d87e38e67c31acf41faad788fe0a1567c19c 100644 |
--- a/src/codec/SkMaskSwizzler.cpp |
+++ b/src/codec/SkMaskSwizzler.cpp |
@@ -352,11 +352,7 @@ SkMaskSwizzler* SkMaskSwizzler::CreateMaskSwizzler( |
return nullptr; |
} |
- // Get the sample size |
- int sampleX; |
- SkScaledCodec::ComputeSampleSize(dstInfo, srcInfo, &sampleX, NULL); |
- |
- return new SkMaskSwizzler(dstInfo, masks, proc, sampleX); |
+ return new SkMaskSwizzler(dstInfo.width(), masks, proc); |
} |
/* |
@@ -364,15 +360,28 @@ 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(int width, SkMasks* masks, RowProc proc) |
+ : fMasks(masks) |
, fRowProc(proc) |
- , fSampleX(sampleX) |
- , fStartX(get_start_coord(sampleX)) |
+ , fSrcWidth(width) |
+ , fDstWidth(width) |
+ , fSampleX(1) |
+ , fX0(0) |
{} |
+int SkMaskSwizzler::onSetSampleX(int sampleX) { |
+ // FIXME: Share this function with SkSwizzler? |
+ SkASSERT(sampleX > 0); // Surely there is an upper limit? Should there be |
+ // way to report failure? |
+ fSampleX = sampleX; |
+ fX0 = get_start_coord(sampleX); |
+ fDstWidth = get_scaled_dimension(fSrcWidth, sampleX); |
+ |
+ // check that fX0 is less than original width |
+ SkASSERT(fX0 >= 0 && fX0 < fSrcWidth); |
+ return fDstWidth; |
+} |
+ |
/* |
* |
* Swizzle the specified row |
@@ -380,5 +389,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, fDstWidth, fMasks, fX0, fSampleX); |
} |