diff options
Diffstat (limited to 'core/fxcodec/codec/ccodec_bmpmodule.cpp')
-rw-r--r-- | core/fxcodec/codec/ccodec_bmpmodule.cpp | 49 |
1 files changed, 21 insertions, 28 deletions
diff --git a/core/fxcodec/codec/ccodec_bmpmodule.cpp b/core/fxcodec/codec/ccodec_bmpmodule.cpp index 9186553c7b..370919634a 100644 --- a/core/fxcodec/codec/ccodec_bmpmodule.cpp +++ b/core/fxcodec/codec/ccodec_bmpmodule.cpp @@ -13,16 +13,13 @@ #include "core/fxge/fx_dib.h" #include "third_party/base/ptr_util.h" -CBmpContext::CBmpContext(BMPDecompressor* pBmp, - CCodec_BmpModule* pModule, +CBmpContext::CBmpContext(CCodec_BmpModule* pModule, CCodec_BmpModule::Delegate* pDelegate) - : m_pBmp(pBmp), m_pModule(pModule), m_pDelegate(pDelegate) { + : m_pModule(pModule), m_pDelegate(pDelegate) { memset(m_szLastError, 0, sizeof(m_szLastError)); } -CBmpContext::~CBmpContext() { - bmp_destroy_decompress(&m_pBmp); -} +CBmpContext::~CBmpContext() {} CCodec_BmpModule::CCodec_BmpModule() {} @@ -30,13 +27,9 @@ CCodec_BmpModule::~CCodec_BmpModule() {} std::unique_ptr<CCodec_BmpModule::Context> CCodec_BmpModule::Start( Delegate* pDelegate) { - BMPDecompressor* pBmp = bmp_create_decompress(); - if (!pBmp) - return nullptr; - - auto p = pdfium::MakeUnique<CBmpContext>(pBmp, this, pDelegate); - p->m_pBmp->context_ptr = p.get(); - p->m_pBmp->err_ptr = p->m_szLastError; + auto p = pdfium::MakeUnique<CBmpContext>(this, pDelegate); + p->m_Bmp.context_ptr = p.get(); + p->m_Bmp.err_ptr = p->m_szLastError; return p; } @@ -49,45 +42,45 @@ int32_t CCodec_BmpModule::ReadHeader(Context* pContext, uint32_t** pal_pp, CFX_DIBAttribute* pAttribute) { auto* ctx = static_cast<CBmpContext*>(pContext); - if (setjmp(ctx->m_pBmp->jmpbuf)) + if (setjmp(ctx->m_Bmp.jmpbuf)) return 0; - int32_t ret = ctx->m_pBmp->ReadHeader(); + int32_t ret = ctx->m_Bmp.ReadHeader(); if (ret != 1) return ret; - *width = ctx->m_pBmp->width; - *height = ctx->m_pBmp->height; - *tb_flag = ctx->m_pBmp->imgTB_flag; - *components = ctx->m_pBmp->components; - *pal_num = ctx->m_pBmp->pal_num; - *pal_pp = ctx->m_pBmp->pal_ptr; + *width = ctx->m_Bmp.width; + *height = ctx->m_Bmp.height; + *tb_flag = false; + *components = ctx->m_Bmp.components; + *pal_num = ctx->m_Bmp.pal_num; + *pal_pp = ctx->m_Bmp.pal_ptr; if (pAttribute) { pAttribute->m_wDPIUnit = FXCODEC_RESUNIT_METER; - pAttribute->m_nXDPI = ctx->m_pBmp->dpi_x; - pAttribute->m_nYDPI = ctx->m_pBmp->dpi_y; - pAttribute->m_nBmpCompressType = ctx->m_pBmp->compress_flag; + pAttribute->m_nXDPI = ctx->m_Bmp.dpi_x; + pAttribute->m_nYDPI = ctx->m_Bmp.dpi_y; + pAttribute->m_nBmpCompressType = ctx->m_Bmp.compress_flag; } return 1; } int32_t CCodec_BmpModule::LoadImage(Context* pContext) { auto* ctx = static_cast<CBmpContext*>(pContext); - if (setjmp(ctx->m_pBmp->jmpbuf)) + if (setjmp(ctx->m_Bmp.jmpbuf)) return 0; - return ctx->m_pBmp->DecodeImage(); + return ctx->m_Bmp.DecodeImage(); } uint32_t CCodec_BmpModule::GetAvailInput(Context* pContext, uint8_t** avail_buf_ptr) { auto* ctx = static_cast<CBmpContext*>(pContext); - return ctx->m_pBmp->GetAvailInput(avail_buf_ptr); + return ctx->m_Bmp.GetAvailInput(avail_buf_ptr); } void CCodec_BmpModule::Input(Context* pContext, const uint8_t* src_buf, uint32_t src_size) { auto* ctx = static_cast<CBmpContext*>(pContext); - ctx->m_pBmp->SetInputBuffer(const_cast<uint8_t*>(src_buf), src_size); + ctx->m_Bmp.SetInputBuffer(const_cast<uint8_t*>(src_buf), src_size); } |