diff options
-rw-r--r-- | include/codec/SkCodec.h | 18 | ||||
-rw-r--r-- | src/codec/SkCodec_libgif.cpp | 2 | ||||
-rw-r--r-- | src/codec/SkCodec_libpng.cpp | 2 |
3 files changed, 15 insertions, 7 deletions
diff --git a/include/codec/SkCodec.h b/include/codec/SkCodec.h index 9f28af010e..075f97680d 100644 --- a/include/codec/SkCodec.h +++ b/include/codec/SkCodec.h @@ -415,9 +415,9 @@ public: int nextScanline() const { return this->outputScanline(fCurrScanline); } /** - * Returns the output y-coordinate of the row that corresponds to an input - * y-coordinate. The input y-coordinate represents where the scanline - * is located in the encoded data. + * Returns the output y-coordinate of the row that corresponds to an input + * y-coordinate. The input y-coordinate represents where the scanline + * is located in the encoded data. * * This will equal inputScanline, except in the case of strangely * encoded image types (bottom-up bmps, interlaced gifs). @@ -529,14 +529,22 @@ protected: virtual SkScanlineOrder onGetScanlineOrder() const { return kTopDown_SkScanlineOrder; } /** - * Update the next scanline. Used by interlaced png. + * Update the current scanline. Used by interlaced png. */ - void updateNextScanline(int newY) { fCurrScanline = newY; } + void updateCurrScanline(int newY) { fCurrScanline = newY; } const SkImageInfo& dstInfo() const { return fDstInfo; } const SkCodec::Options& options() const { return fOptions; } + /** + * Returns the number of scanlines that have been decoded so far. + * This is unaffected by the SkScanlineOrder. + * + * Returns -1 if we have not started a scanline decode. + */ + int currScanline() const { return fCurrScanline; } + virtual int onOutputScanline(int inputScanline) const; private: diff --git a/src/codec/SkCodec_libgif.cpp b/src/codec/SkCodec_libgif.cpp index 8021af95a2..e6a40164f3 100644 --- a/src/codec/SkCodec_libgif.cpp +++ b/src/codec/SkCodec_libgif.cpp @@ -508,7 +508,7 @@ SkCodec::Result SkGifCodec::onStartScanlineDecode(const SkImageInfo& dstInfo, void SkGifCodec::handleScanlineFrame(int count, int* rowsBeforeFrame, int* rowsInFrame) { if (fFrameIsSubset) { - const int currRow = this->INHERITED::nextScanline(); + const int currRow = this->currScanline(); // The number of rows that remain to be skipped before reaching rows that we // actually must decode into. diff --git a/src/codec/SkCodec_libpng.cpp b/src/codec/SkCodec_libpng.cpp index 355d493309..a611705c3b 100644 --- a/src/codec/SkCodec_libpng.cpp +++ b/src/codec/SkCodec_libpng.cpp @@ -768,7 +768,7 @@ public: if (!this->rewindIfNeeded()) { return kCouldNotRewind; } - this->updateNextScanline(currScanline); + this->updateCurrScanline(currScanline); } if (setjmp(png_jmpbuf(this->png_ptr()))) { |