38 uint32_t
width()
const {
return width_; }
39 uint32_t
height()
const {
return height_; }
42 int32_t
pal_num()
const {
return pal_num_; }
43 int32_t
dpi_x()
const {
return dpi_x_; }
44 int32_t
dpi_y()
const {
return dpi_y_; }
47 enum class DecodeStatus : uint8_t {
55 enum class PalType :
bool { kNew, kOld };
62 bool GetDataPosition(uint32_t cur_pos);
63 void ReadNextScanline();
67 bool ReadAllOrNone(pdfium::span<uint8_t> buf);
68 void SaveDecodingStatus(DecodeStatus status);
69 bool ValidateColorIndex(uint8_t val)
const;
70 bool ValidateFlag()
const;
71 bool SetHeight(int32_t signed_height);
72 int PaletteChannelCount()
const {
return pal_type_ == PalType::kNew ? 4 : 3; }
74 UnownedPtr<
const CFX_BmpContext>
const context_;
75 DataVector<uint8_t> out_row_buffer_;
76 std::vector<uint32_t> palette_;
77 uint32_t header_offset_ = 0;
80 uint32_t compress_flag_ = 0;
81 int32_t components_ = 0;
82 size_t src_row_bytes_ = 0;
83 size_t out_row_bytes_ = 0;
84 bool img_tb_flag_ =
false;
85 uint16_t bit_counts_ = 0;
86 uint32_t color_used_ = 0;
88 PalType pal_type_ = PalType::kNew;
89 uint32_t data_offset_ = 0;
90 uint32_t data_size_ = 0;
91 uint32_t img_ifh_size_ = 0;
92 uint32_t row_num_ = 0;
93 uint32_t col_num_ = 0;
96 uint32_t mask_red_ = 0;
97 uint32_t mask_green_ = 0;
98 uint32_t mask_blue_ = 0;
99 DecodeStatus decode_status_ = DecodeStatus::kHeader;
100 RetainPtr<CFX_CodecMemory> input_buffer_;
static Status ReadHeader(ProgressiveDecoderIface::Context *pContext, int32_t *width, int32_t *height, bool *tb_flag, int32_t *components, int32_t *pal_num, const std::vector< uint32_t > **palette, CFX_DIBAttribute *pAttribute)
UnownedPtr< BmpDecoder::Delegate > const m_pDelegate
~CFX_BmpContext() override
CFX_BmpContext(BmpDecoder::Delegate *pDelegate)
CFX_BmpDecompressor m_Bmp
virtual ~Context()=default