1 /*
2  * Copyright 2017 Google Inc.
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 #ifndef SkBmpBaseCodec_DEFINED
8 #define SkBmpBaseCodec_DEFINED
9 
10 #include "SkBmpCodec.h"
11 #include "SkTemplates.h"
12 
13 /*
14  * Common base class for SkBmpStandardCodec and SkBmpMaskCodec.
15  */
16 class SkBmpBaseCodec : public SkBmpCodec {
17 public:
18     ~SkBmpBaseCodec() override;
19 
20     /*
21      * Whether fSrcBuffer was successfully created.
22      *
23      * If false, this Codec must not be used.
24      */
25     bool didCreateSrcBuffer() const { return fSrcBuffer != nullptr; }
26 
27 protected:
28     SkBmpBaseCodec(SkEncodedInfo&& info, std::unique_ptr<SkStream>,
29                    uint16_t bitsPerPixel, SkCodec::SkScanlineOrder rowOrder);
30 
31     uint8_t* srcBuffer() { return reinterpret_cast<uint8_t*>(fSrcBuffer.get()); }
32 
33 private:
34     SkAutoFree fSrcBuffer;
35 
36     typedef SkBmpCodec INHERITED;
37 };
38 #endif // SkBmpBaseCodec_DEFINED
39