Index: src/codec/SkCodec_libico.h |
diff --git a/src/codec/SkCodec_libico.h b/src/codec/SkCodec_libico.h |
index 92675f4d740ea241de38d00ddbf4a768040c8b47..97c22be78a9db46f5be34c248206ae82b34f5f1d 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 SkTArray. |
scroggo
2015/12/02 16:27:03
SkTArray is an implementation detail that isn't ne
msarett
2015/12/03 19:19:16
Done.
|
+ * |
+ * @return the index of the matching codec or -1 if there is no |
+ * matching codec between startIndex and the end of |
+ * the SkTArray. |
+ */ |
+ 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 |
+ // fCodec to one of the fEmbeddedCodecs, if it can find a codec of the |
+ // appropriate size. We will use fCodec for subsequent calls to |
+ // onGetScanlines() or onSkipScanlines(). |
+ // fCodec is owned by this class, but should not be an SkAutoTDelete. |
+ // It will be deleted by the destructor of fEmbeddedCodecs. |
+ SkCodec* fCodec; |
scroggo
2015/12/02 16:27:03
I think this should have a name that indicates tha
msarett
2015/12/03 19:19:16
Agreed. fCurrScanlineCodec it is...I can't think
|
typedef SkCodec INHERITED; |
}; |