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 "include/private/SkTemplates.h"
11#include "src/codec/SkBmpCodec.h"
12
13/*
14 * Common base class for SkBmpStandardCodec and SkBmpMaskCodec.
15 */
16class SkBmpBaseCodec : public SkBmpCodec {
17public:
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
27protected:
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
33private:
34 SkAutoFree fSrcBuffer;
35
36 typedef SkBmpCodec INHERITED;
37};
38#endif // SkBmpBaseCodec_DEFINED
39