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/codec/SkCodec.h" 11 #include "include/private/base/SkTemplates.h" 12 #include "src/codec/SkBmpCodec.h" 13 14 #include <cstdint> 15 #include <memory> 16 17 class SkStream; 18 struct SkEncodedInfo; 19 20 /* 21 * Common base class for SkBmpStandardCodec and SkBmpMaskCodec. 22 */ 23 class SkBmpBaseCodec : public SkBmpCodec { 24 public: 25 ~SkBmpBaseCodec() override; 26 27 /* 28 * Whether fSrcBuffer was successfully created. 29 * 30 * If false, this Codec must not be used. 31 */ didCreateSrcBuffer()32 bool didCreateSrcBuffer() const { return fSrcBuffer != nullptr; } 33 34 protected: 35 SkBmpBaseCodec(SkEncodedInfo&& info, std::unique_ptr<SkStream>, 36 uint16_t bitsPerPixel, SkCodec::SkScanlineOrder rowOrder); 37 srcBuffer()38 uint8_t* srcBuffer() { return reinterpret_cast<uint8_t*>(fSrcBuffer.get()); } 39 40 private: 41 skia_private::UniqueVoidPtr fSrcBuffer; 42 43 using INHERITED = SkBmpCodec; 44 }; 45 #endif // SkBmpBaseCodec_DEFINED 46