| // Copyright 2014 The PDFium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| |
| #include "core/fxcodec/bmp/bmp_decoder.h" |
| |
| #include "core/fxcodec/bmp/cfx_bmpcontext.h" |
| #include "core/fxcodec/fx_codec.h" |
| #include "core/fxcrt/check.h" |
| |
| namespace fxcodec { |
| |
| // static |
| ProgressiveDecoderContext::Status BmpDecoder::ReadHeader( |
| ProgressiveDecoderContext* context, |
| int32_t* width, |
| int32_t* height, |
| bool* tb_flag, |
| int32_t* components, |
| pdfium::span<const FX_ARGB>* palette, |
| CFX_DIBAttribute* pAttribute) { |
| DCHECK(pAttribute); |
| |
| auto* ctx = static_cast<CFX_BmpContext*>(context); |
| ProgressiveDecoderContext::Status status = ctx->bmp_.ReadHeader(); |
| if (status != ProgressiveDecoderContext::Status::kSuccess) { |
| return status; |
| } |
| |
| *width = ctx->bmp_.width(); |
| *height = ctx->bmp_.height(); |
| *tb_flag = ctx->bmp_.img_tb_flag(); |
| *components = ctx->bmp_.components(); |
| *palette = ctx->bmp_.palette(); |
| pAttribute->dpi_unit_ = CFX_DIBAttribute::kResUnitMeter; |
| pAttribute->x_dpi_ = ctx->bmp_.dpi_x(); |
| pAttribute->y_dpi_ = ctx->bmp_.dpi_y(); |
| return ProgressiveDecoderContext::Status::kSuccess; |
| } |
| |
| } // namespace fxcodec |