| Index: src/codec/SkIcoCodec.cpp
|
| diff --git a/src/codec/SkIcoCodec.cpp b/src/codec/SkIcoCodec.cpp
|
| index a80b9df3cf8f01ee535a63fdb0e7aeb2f9fc02bf..0e81b72407218778b9d469e72b95941149b83309 100644
|
| --- a/src/codec/SkIcoCodec.cpp
|
| +++ b/src/codec/SkIcoCodec.cpp
|
| @@ -15,7 +15,6 @@
|
| #include "SkTDArray.h"
|
| #include "SkTSort.h"
|
|
|
| -#ifdef SK_HAS_PNG_LIBRARY
|
| /*
|
| * Checks the start of the stream to see if the image is an Ico or Cur
|
| */
|
| @@ -187,7 +186,6 @@
|
| : INHERITED(width, height, info, nullptr)
|
| , fEmbeddedCodecs(codecs)
|
| , fCurrScanlineCodec(nullptr)
|
| - , fCurrIncrementalCodec(nullptr)
|
| {}
|
|
|
| /*
|
| @@ -291,7 +289,6 @@
|
| result = embeddedCodec->startScanlineDecode(dstInfo, &options, colorTable, colorCount);
|
| if (kSuccess == result) {
|
| fCurrScanlineCodec = embeddedCodec;
|
| - fCurrIncrementalCodec = nullptr;
|
| return result;
|
| }
|
|
|
| @@ -312,83 +309,13 @@
|
| return fCurrScanlineCodec->skipScanlines(count);
|
| }
|
|
|
| -SkCodec::Result SkIcoCodec::onStartIncrementalDecode(const SkImageInfo& dstInfo,
|
| - void* pixels, size_t rowBytes, const SkCodec::Options& options,
|
| - SkPMColor* colorTable, int* colorCount) {
|
| - int index = 0;
|
| - while (true) {
|
| - index = this->chooseCodec(dstInfo.dimensions(), index);
|
| - if (index < 0) {
|
| - break;
|
| - }
|
| -
|
| - SkCodec* embeddedCodec = fEmbeddedCodecs->operator[](index);
|
| - switch (embeddedCodec->startIncrementalDecode(dstInfo,
|
| - pixels, rowBytes, &options, colorTable, colorCount)) {
|
| - case kSuccess:
|
| - fCurrIncrementalCodec = embeddedCodec;
|
| - fCurrScanlineCodec = nullptr;
|
| - return kSuccess;
|
| - case kUnimplemented:
|
| - // FIXME: embeddedCodec is a BMP. If scanline decoding would work,
|
| - // return kUnimplemented so that SkSampledCodec will fall through
|
| - // to use the scanline decoder.
|
| - // Note that calling startScanlineDecode will require an extra
|
| - // rewind. The embedded codec has an SkMemoryStream, which is
|
| - // cheap to rewind, though it will do extra work re-reading the
|
| - // header.
|
| - // Also note that we pass nullptr for Options. This is because
|
| - // Options that are valid for incremental decoding may not be
|
| - // valid for scanline decoding.
|
| - // Once BMP supports incremental decoding this workaround can go
|
| - // away.
|
| - if (embeddedCodec->startScanlineDecode(dstInfo, nullptr,
|
| - colorTable, colorCount) == kSuccess) {
|
| - return kUnimplemented;
|
| - }
|
| - // Move on to the next embedded codec.
|
| - break;
|
| - default:
|
| - break;
|
| - }
|
| -
|
| - index++;
|
| - }
|
| -
|
| - SkCodecPrintf("Error: No matching candidate image in ico.\n");
|
| - return kInvalidScale;
|
| -}
|
| -
|
| -SkCodec::Result SkIcoCodec::onIncrementalDecode(int* rowsDecoded) {
|
| - SkASSERT(fCurrIncrementalCodec);
|
| - return fCurrIncrementalCodec->incrementalDecode(rowsDecoded);
|
| -}
|
| -
|
| SkCodec::SkScanlineOrder SkIcoCodec::onGetScanlineOrder() const {
|
| // FIXME: This function will possibly return the wrong value if it is called
|
| - // before startScanlineDecode()/startIncrementalDecode().
|
| - if (fCurrScanlineCodec) {
|
| - SkASSERT(!fCurrIncrementalCodec);
|
| - return fCurrScanlineCodec->getScanlineOrder();
|
| - }
|
| -
|
| - if (fCurrIncrementalCodec) {
|
| - return fCurrIncrementalCodec->getScanlineOrder();
|
| - }
|
| -
|
| - return INHERITED::onGetScanlineOrder();
|
| + // before startScanlineDecode().
|
| + return fCurrScanlineCodec ? fCurrScanlineCodec->getScanlineOrder() :
|
| + INHERITED::onGetScanlineOrder();
|
| }
|
|
|
| SkSampler* SkIcoCodec::getSampler(bool createIfNecessary) {
|
| - if (fCurrScanlineCodec) {
|
| - SkASSERT(!fCurrIncrementalCodec);
|
| - return fCurrScanlineCodec->getSampler(createIfNecessary);
|
| - }
|
| -
|
| - if (fCurrIncrementalCodec) {
|
| - return fCurrIncrementalCodec->getSampler(createIfNecessary);
|
| - }
|
| -
|
| - return nullptr;
|
| -}
|
| -#endif // SK_HAS_PNG_LIBRARY
|
| + return fCurrScanlineCodec ? fCurrScanlineCodec->getSampler(createIfNecessary) : nullptr;
|
| +}
|
|
|