Index: src/codec/SkBmpMaskCodec.h |
diff --git a/src/codec/SkBmpMaskCodec.h b/src/codec/SkBmpMaskCodec.h |
index 6f43bb3f85ce23424892f05557fda750ebdda77e..efbc4c6a3c676d310742967693c9715819f84076 100644 |
--- a/src/codec/SkBmpMaskCodec.h |
+++ b/src/codec/SkBmpMaskCodec.h |
@@ -29,7 +29,8 @@ public: |
* @param rowOrder indicates whether rows are ordered top-down or bottom-up |
*/ |
SkBmpMaskCodec(const SkImageInfo& srcInfo, SkStream* stream, |
- uint16_t bitsPerPixel, SkMasks* masks, RowOrder rowOrder); |
+ SkBmpCodec::BmpInputFormat inputFormat, uint16_t bitsPerPixel, |
+ SkMasks* masks, RowOrder rowOrder); |
protected: |
@@ -48,5 +49,30 @@ private: |
SkAutoTDelete<SkMaskSwizzler> fMaskSwizzler; |
SkAutoTDeleteArray<uint8_t> fSrcBuffer; |
+ friend class SkBmpMaskScanlineDecoder; |
+ |
typedef SkBmpCodec INHERITED; |
}; |
+ |
+/* |
+ * Scanline decoder for mask bmps |
+ */ |
+class SkBmpMaskScanlineDecoder : public SkScanlineDecoder { |
+public: |
+ SkBmpMaskScanlineDecoder(SkBmpMaskCodec* 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<SkBmpMaskCodec> fCodec; |
+ SkImageInfo fDstInfo; |
+ SkCodec::Options fOpts; |
+ |
+ typedef SkScanlineDecoder INHERITED; |
+}; |