Index: src/codec/SkCodec_libpng.cpp |
diff --git a/src/codec/SkCodec_libpng.cpp b/src/codec/SkCodec_libpng.cpp |
index 7021349ee4f9b5d2ed27637f580e6f9a4efe92f4..ccb9a6766762cab6b2241079e1b22c8eb6d711c0 100644 |
--- a/src/codec/SkCodec_libpng.cpp |
+++ b/src/codec/SkCodec_libpng.cpp |
@@ -394,7 +394,9 @@ void SkPngCodec::destroyReadStruct() { |
SkCodec::Result SkPngCodec::initializeSwizzler(const SkImageInfo& requestedInfo, |
const Options& options, |
SkPMColor ctable[], |
- int* ctableCount) { |
+ int* ctableCount, |
+ int subsetLeft, |
+ int subsetWidth) { |
// FIXME: Could we use the return value of setjmp to specify the type of |
// error? |
if (setjmp(png_jmpbuf(fPng_ptr))) { |
@@ -436,7 +438,7 @@ SkCodec::Result SkPngCodec::initializeSwizzler(const SkImageInfo& requestedInfo, |
// Create the swizzler. SkPngCodec retains ownership of the color table. |
const SkPMColor* colors = get_color_ptr(fColorTable.get()); |
fSwizzler.reset(SkSwizzler::CreateSwizzler(fSrcConfig, colors, requestedInfo, |
- options.fZeroInitialized, this->getInfo())); |
+ options.fZeroInitialized, this->getInfo(), subsetLeft, subsetWidth)); |
if (!fSwizzler) { |
// FIXME: CreateSwizzler could fail for another reason. |
return kUnimplemented; |
@@ -480,8 +482,8 @@ SkCodec::Result SkPngCodec::onGetPixels(const SkImageInfo& requestedInfo, void* |
} |
// Note that ctable and ctableCount may be modified if there is a color table |
- const Result result = this->initializeSwizzler(requestedInfo, options, |
- ctable, ctableCount); |
+ const Result result = this->initializeSwizzler(requestedInfo, options, ctable, ctableCount, 0, |
+ requestedInfo.width()); |
if (result != kSuccess) { |
return result; |
} |
@@ -614,7 +616,7 @@ public: |
{} |
Result onStartScanlineDecode(const SkImageInfo& dstInfo, const Options& options, |
- SkPMColor ctable[], int* ctableCount) override { |
+ SkPMColor ctable[], int* ctableCount, int subsetLeft, int subsetWidth) override { |
if (!conversion_possible(dstInfo, this->getInfo())) { |
return kInvalidConversion; |
} |
@@ -627,7 +629,7 @@ public: |
} |
const Result result = this->initializeSwizzler(dstInfo, options, ctable, |
- ctableCount); |
+ ctableCount, subsetLeft, subsetWidth); |
if (result != kSuccess) { |
return result; |
} |
@@ -708,8 +710,7 @@ public: |
} |
Result onStartScanlineDecode(const SkImageInfo& dstInfo, const Options& options, |
- SkPMColor ctable[], int* ctableCount) override |
- { |
+ SkPMColor ctable[], int* ctableCount, int subsetLeft, int subsetWidth) override { |
if (!conversion_possible(dstInfo, this->getInfo())) { |
return kInvalidConversion; |
} |
@@ -722,7 +723,7 @@ public: |
} |
const Result result = this->initializeSwizzler(dstInfo, options, ctable, |
- ctableCount); |
+ ctableCount, subsetLeft, subsetWidth); |
if (result != kSuccess) { |
return result; |
} |