xref: /third_party/skia/src/codec/SkBmpBaseCodec.h (revision cb93a386)
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    using INHERITED = SkBmpCodec;
37};
38#endif // SkBmpBaseCodec_DEFINED
39