aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--include/codec/SkCodec.h18
-rw-r--r--src/codec/SkCodec_libgif.cpp2
-rw-r--r--src/codec/SkCodec_libpng.cpp2
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()))) {