Index: src/codec/SkBmpStandardCodec.h |
diff --git a/src/codec/SkBmpStandardCodec.h b/src/codec/SkBmpStandardCodec.h |
index 45450e65918b95c5d5222ec36cb3ddba9f28edfa..1cbefccb21f57456d6e0ca192c556a05b68b1f0e 100644 |
--- a/src/codec/SkBmpStandardCodec.h |
+++ b/src/codec/SkBmpStandardCodec.h |
@@ -36,8 +36,9 @@ public: |
* @param rowOrder indicates whether rows are ordered top-down or bottom-up |
*/ |
SkBmpStandardCodec(const SkImageInfo& srcInfo, SkStream* stream, |
- uint16_t bitsPerPixel, uint32_t numColors, uint32_t bytesPerColor, |
- uint32_t offset, SkBmpCodec::RowOrder rowOrder, bool isIco); |
+ SkBmpCodec::BmpInputFormat inputFormat, uint16_t bitsPerPixel, |
+ uint32_t numColors, uint32_t bytesPerColor, uint32_t offset, |
+ SkBmpCodec::RowOrder rowOrder, bool isIco); |
protected: |
@@ -68,5 +69,30 @@ private: |
SkAutoTDeleteArray<uint8_t> fSrcBuffer; |
const bool fInIco; |
+ friend class SkBmpStandardScanlineDecoder; |
+ |
typedef SkBmpCodec INHERITED; |
}; |
+ |
+/* |
+ * Scanline decoder for standard bmps |
+ */ |
+class SkBmpStandardScanlineDecoder : public SkScanlineDecoder { |
+public: |
+ SkBmpStandardScanlineDecoder(SkBmpStandardCodec* codec); |
+ |
+ SkCodec::Result onStart(const SkImageInfo& dstInfo, const SkCodec::Options& options, |
+ SkPMColor inputColorPtr[], int* inputColorCount) override; |
+ |
+ SkCodec::Result onGetScanlines(void* dst, int count, size_t rowBytes) override; |
+ |
+ // TODO(msarett): Override default skipping with something more clever. |
+ // TODO(msarett): Consider other optimizations for this codec. |
+ |
+private: |
+ SkAutoTDelete<SkBmpStandardCodec> fCodec; |
+ SkImageInfo fDstInfo; |
+ SkCodec::Options fOpts; |
+ |
+ typedef SkScanlineDecoder INHERITED; |
+}; |