| Index: src/codec/SkCodec_libico.h
|
| diff --git a/src/codec/SkCodec_libico.h b/src/codec/SkCodec_libico.h
|
| index 92675f4d740ea241de38d00ddbf4a768040c8b47..a1d99b884dac9c3b68acbc03b7e0257455493d00 100644
|
| --- a/src/codec/SkCodec_libico.h
|
| +++ b/src/codec/SkCodec_libico.h
|
| @@ -47,17 +47,45 @@ protected:
|
| return kICO_SkEncodedFormat;
|
| }
|
|
|
| + SkScanlineOrder onGetScanlineOrder() const override;
|
| +
|
| private:
|
|
|
| + Result onStartScanlineDecode(const SkImageInfo& dstInfo, const SkCodec::Options& options,
|
| + SkPMColor inputColorPtr[], int* inputColorCount) override;
|
| +
|
| + int onGetScanlines(void* dst, int count, size_t rowBytes) override;
|
| +
|
| + bool onSkipScanlines(int count) override;
|
| +
|
| + SkSampler* getSampler(bool createIfNecessary) override;
|
| +
|
| + /*
|
| + * Searches fEmbeddedCodecs for a codec that matches requestedSize.
|
| + * The search starts at startIndex and ends when an appropriate codec
|
| + * is found, or we have reached the end of the array.
|
| + *
|
| + * @return the index of the matching codec or -1 if there is no
|
| + * matching codec between startIndex and the end of
|
| + * the array.
|
| + */
|
| + int chooseCodec(const SkISize& requestedSize, int startIndex);
|
| +
|
| /*
|
| * Constructor called by NewFromStream
|
| * @param embeddedCodecs codecs for the embedded images, takes ownership
|
| */
|
| - SkIcoCodec(const SkImageInfo& srcInfo,
|
| - SkTArray<SkAutoTDelete<SkCodec>, true>* embeddedCodecs);
|
| + SkIcoCodec(const SkImageInfo& srcInfo, SkTArray<SkAutoTDelete<SkCodec>, true>* embeddedCodecs);
|
| +
|
| + SkAutoTDelete<SkTArray<SkAutoTDelete<SkCodec>, true>> fEmbeddedCodecs; // owned
|
|
|
| - SkAutoTDelete<SkTArray<SkAutoTDelete<SkCodec>, true>>
|
| - fEmbeddedCodecs; // owned
|
| + // Only used by the scanline decoder. onStartScanlineDecode() will set
|
| + // fCurrScanlineCodec to one of the fEmbeddedCodecs, if it can find a
|
| + // codec of the appropriate size. We will use fCurrScanlineCodec for
|
| + // subsequent calls to onGetScanlines() or onSkipScanlines().
|
| + // fCurrScanlineCodec is owned by this class, but should not be an
|
| + // SkAutoTDelete. It will be deleted by the destructor of fEmbeddedCodecs.
|
| + SkCodec* fCurrScanlineCodec;
|
|
|
| typedef SkCodec INHERITED;
|
| };
|
|
|