| Index: core/fxcodec/codec/fx_codec_progress.cpp
|
| diff --git a/core/fxcodec/codec/fx_codec_progress.cpp b/core/fxcodec/codec/fx_codec_progress.cpp
|
| index 89e4b25dbb51fbb35fce4d5dcc3188e1461d01c1..95a90b3e6898a50e9ed761c7ced7a1e35aa4db00 100644
|
| --- a/core/fxcodec/codec/fx_codec_progress.cpp
|
| +++ b/core/fxcodec/codec/fx_codec_progress.cpp
|
| @@ -4,18 +4,26 @@
|
|
|
| // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
|
|
|
| -#include "core/fxcodec/codec/fx_codec_progress.h"
|
| +#include "core/fxcodec/codec/include/ccodec_progressivedecoder.h"
|
|
|
| #include "core/fxcodec/include/fx_codec.h"
|
| #include "core/fxge/include/fx_dib.h"
|
|
|
| -void CFXCODEC_WeightTable::Calc(int dest_len,
|
| - int dest_min,
|
| - int dest_max,
|
| - int src_len,
|
| - int src_min,
|
| - int src_max,
|
| - FX_BOOL bInterpol) {
|
| +#define FXCODEC_BLOCK_SIZE 4096
|
| +#define FXCODEC_PNG_GAMMA 2.2
|
| +
|
| +#if _FX_OS_ == _FX_MACOSX_ || _FX_OS_ == _FX_IOS_
|
| +#undef FXCODEC_PNG_GAMMA
|
| +#define FXCODEC_PNG_GAMMA 1.7
|
| +#endif
|
| +
|
| +void CCodec_ProgressiveDecoder::CFXCODEC_WeightTable::Calc(int dest_len,
|
| + int dest_min,
|
| + int dest_max,
|
| + int src_len,
|
| + int src_min,
|
| + int src_max,
|
| + FX_BOOL bInterpol) {
|
| if (m_pWeightTables) {
|
| FX_Free(m_pWeightTables);
|
| }
|
| @@ -113,7 +121,9 @@ void CFXCODEC_WeightTable::Calc(int dest_len,
|
| }
|
| }
|
| }
|
| -void CFXCODEC_HorzTable::Calc(int dest_len, int src_len, FX_BOOL bInterpol) {
|
| +void CCodec_ProgressiveDecoder::CFXCODEC_HorzTable::Calc(int dest_len,
|
| + int src_len,
|
| + FX_BOOL bInterpol) {
|
| if (m_pWeightTables) {
|
| FX_Free(m_pWeightTables);
|
| }
|
| @@ -173,7 +183,8 @@ void CFXCODEC_HorzTable::Calc(int dest_len, int src_len, FX_BOOL bInterpol) {
|
| pWeight->m_Weights[1] = 0;
|
| }
|
| }
|
| -void CFXCODEC_VertTable::Calc(int dest_len, int src_len) {
|
| +void CCodec_ProgressiveDecoder::CFXCODEC_VertTable::Calc(int dest_len,
|
| + int src_len) {
|
| if (m_pWeightTables) {
|
| FX_Free(m_pWeightTables);
|
| }
|
| @@ -294,7 +305,7 @@ CCodec_ProgressiveDecoder::~CCodec_ProgressiveDecoder() {
|
| FX_Free(m_pSrcPalette);
|
| }
|
| FX_BOOL CCodec_ProgressiveDecoder::JpegReadMoreData(
|
| - ICodec_JpegModule* pJpegModule,
|
| + CCodec_JpegModule* pJpegModule,
|
| FXCODEC_STATUS& err_status) {
|
| uint32_t dwSize = (uint32_t)m_pFile->GetSize();
|
| if (dwSize <= m_offSet) {
|
| @@ -552,7 +563,7 @@ void CCodec_ProgressiveDecoder::PngFillScanlineBufCompletedFunc(void* pModule,
|
| }
|
| }
|
| }
|
| -FX_BOOL CCodec_ProgressiveDecoder::GifReadMoreData(ICodec_GifModule* pGifModule,
|
| +FX_BOOL CCodec_ProgressiveDecoder::GifReadMoreData(CCodec_GifModule* pGifModule,
|
| FXCODEC_STATUS& err_status) {
|
| uint32_t dwSize = (uint32_t)m_pFile->GetSize();
|
| if (dwSize <= m_offSet) {
|
| @@ -834,7 +845,7 @@ void CCodec_ProgressiveDecoder::GifDoubleLineResampleVert(
|
| GifDoubleLineResampleVert(pDeviceBitmap, scale_y, des_row + (int)scale_y);
|
| }
|
| }
|
| -FX_BOOL CCodec_ProgressiveDecoder::BmpReadMoreData(ICodec_BmpModule* pBmpModule,
|
| +FX_BOOL CCodec_ProgressiveDecoder::BmpReadMoreData(CCodec_BmpModule* pBmpModule,
|
| FXCODEC_STATUS& err_status) {
|
| uint32_t dwSize = (uint32_t)m_pFile->GetSize();
|
| if (dwSize <= m_offSet) {
|
| @@ -1008,7 +1019,7 @@ FX_BOOL CCodec_ProgressiveDecoder::DetectImageType(
|
| m_SrcSize = size;
|
| switch (imageType) {
|
| case FXCODEC_IMAGE_BMP: {
|
| - ICodec_BmpModule* pBmpModule = m_pCodecMgr->GetBmpModule();
|
| + CCodec_BmpModule* pBmpModule = m_pCodecMgr->GetBmpModule();
|
| if (pBmpModule == NULL) {
|
| m_status = FXCODEC_STATUS_ERR_MEMORY;
|
| return FALSE;
|
| @@ -1063,7 +1074,7 @@ FX_BOOL CCodec_ProgressiveDecoder::DetectImageType(
|
| return FALSE;
|
| } break;
|
| case FXCODEC_IMAGE_JPG: {
|
| - ICodec_JpegModule* pJpegModule = m_pCodecMgr->GetJpegModule();
|
| + CCodec_JpegModule* pJpegModule = m_pCodecMgr->GetJpegModule();
|
| if (pJpegModule == NULL) {
|
| m_status = FXCODEC_STATUS_ERR_MEMORY;
|
| return FALSE;
|
| @@ -1106,7 +1117,7 @@ FX_BOOL CCodec_ProgressiveDecoder::DetectImageType(
|
| return FALSE;
|
| } break;
|
| case FXCODEC_IMAGE_PNG: {
|
| - ICodec_PngModule* pPngModule = m_pCodecMgr->GetPngModule();
|
| + CCodec_PngModule* pPngModule = m_pCodecMgr->GetPngModule();
|
| if (pPngModule == NULL) {
|
| m_status = FXCODEC_STATUS_ERR_MEMORY;
|
| return FALSE;
|
| @@ -1167,7 +1178,7 @@ FX_BOOL CCodec_ProgressiveDecoder::DetectImageType(
|
| }
|
| } break;
|
| case FXCODEC_IMAGE_GIF: {
|
| - ICodec_GifModule* pGifModule = m_pCodecMgr->GetGifModule();
|
| + CCodec_GifModule* pGifModule = m_pCodecMgr->GetGifModule();
|
| if (pGifModule == NULL) {
|
| m_status = FXCODEC_STATUS_ERR_MEMORY;
|
| return FALSE;
|
| @@ -1219,7 +1230,7 @@ FX_BOOL CCodec_ProgressiveDecoder::DetectImageType(
|
| return FALSE;
|
| } break;
|
| case FXCODEC_IMAGE_TIF: {
|
| - ICodec_TiffModule* pTiffModule = m_pCodecMgr->GetTiffModule();
|
| + CCodec_TiffModule* pTiffModule = m_pCodecMgr->GetTiffModule();
|
| if (pTiffModule == NULL) {
|
| m_status = FXCODEC_STATUS_ERR_FORMAT;
|
| return FALSE;
|
| @@ -1799,7 +1810,7 @@ FXCODEC_STATUS CCodec_ProgressiveDecoder::GetFrames(int32_t& frames,
|
| frames = m_FrameNumber = 1;
|
| return m_status = FXCODEC_STATUS_DECODE_READY;
|
| case FXCODEC_IMAGE_GIF: {
|
| - ICodec_GifModule* pGifModule = m_pCodecMgr->GetGifModule();
|
| + CCodec_GifModule* pGifModule = m_pCodecMgr->GetGifModule();
|
| while (TRUE) {
|
| int32_t readResult =
|
| pGifModule->LoadFrameInfo(m_pGifContext, &m_FrameNumber);
|
| @@ -1888,7 +1899,7 @@ FXCODEC_STATUS CCodec_ProgressiveDecoder::StartDecode(CFX_DIBitmap* pDIBitmap,
|
| }
|
| switch (m_imagType) {
|
| case FXCODEC_IMAGE_JPG: {
|
| - ICodec_JpegModule* pJpegModule = m_pCodecMgr->GetJpegModule();
|
| + CCodec_JpegModule* pJpegModule = m_pCodecMgr->GetJpegModule();
|
| int down_scale = 1;
|
| GetDownScale(down_scale);
|
| FX_BOOL bStart = pJpegModule->StartScanline(m_pJpegContext, down_scale);
|
| @@ -1924,7 +1935,7 @@ FXCODEC_STATUS CCodec_ProgressiveDecoder::StartDecode(CFX_DIBitmap* pDIBitmap,
|
| return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE;
|
| } break;
|
| case FXCODEC_IMAGE_PNG: {
|
| - ICodec_PngModule* pPngModule = m_pCodecMgr->GetPngModule();
|
| + CCodec_PngModule* pPngModule = m_pCodecMgr->GetPngModule();
|
| if (pPngModule == NULL) {
|
| m_pDeviceBitmap = NULL;
|
| m_pFile = NULL;
|
| @@ -1972,7 +1983,7 @@ FXCODEC_STATUS CCodec_ProgressiveDecoder::StartDecode(CFX_DIBitmap* pDIBitmap,
|
| return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE;
|
| } break;
|
| case FXCODEC_IMAGE_GIF: {
|
| - ICodec_GifModule* pGifModule = m_pCodecMgr->GetGifModule();
|
| + CCodec_GifModule* pGifModule = m_pCodecMgr->GetGifModule();
|
| if (pGifModule == NULL) {
|
| m_pDeviceBitmap = NULL;
|
| m_pFile = NULL;
|
| @@ -1991,7 +2002,7 @@ FXCODEC_STATUS CCodec_ProgressiveDecoder::StartDecode(CFX_DIBitmap* pDIBitmap,
|
| return m_status = FXCODEC_STATUS_DECODE_TOBECONTINUE;
|
| } break;
|
| case FXCODEC_IMAGE_BMP: {
|
| - ICodec_BmpModule* pBmpModule = m_pCodecMgr->GetBmpModule();
|
| + CCodec_BmpModule* pBmpModule = m_pCodecMgr->GetBmpModule();
|
| if (pBmpModule == NULL) {
|
| m_pDeviceBitmap = NULL;
|
| m_pFile = NULL;
|
| @@ -2031,7 +2042,7 @@ FXCODEC_STATUS CCodec_ProgressiveDecoder::ContinueDecode(IFX_Pause* pPause) {
|
| }
|
| switch (m_imagType) {
|
| case FXCODEC_IMAGE_JPG: {
|
| - ICodec_JpegModule* pJpegModule = m_pCodecMgr->GetJpegModule();
|
| + CCodec_JpegModule* pJpegModule = m_pCodecMgr->GetJpegModule();
|
| while (TRUE) {
|
| FX_BOOL readRes =
|
| pJpegModule->ReadScanline(m_pJpegContext, m_pDecodeBuf);
|
| @@ -2061,7 +2072,7 @@ FXCODEC_STATUS CCodec_ProgressiveDecoder::ContinueDecode(IFX_Pause* pPause) {
|
| }
|
| } break;
|
| case FXCODEC_IMAGE_PNG: {
|
| - ICodec_PngModule* pPngModule = m_pCodecMgr->GetPngModule();
|
| + CCodec_PngModule* pPngModule = m_pCodecMgr->GetPngModule();
|
| while (TRUE) {
|
| uint32_t remain_size = (uint32_t)m_pFile->GetSize() - m_offSet;
|
| uint32_t input_size =
|
| @@ -2101,7 +2112,7 @@ FXCODEC_STATUS CCodec_ProgressiveDecoder::ContinueDecode(IFX_Pause* pPause) {
|
| }
|
| } break;
|
| case FXCODEC_IMAGE_GIF: {
|
| - ICodec_GifModule* pGifModule = m_pCodecMgr->GetGifModule();
|
| + CCodec_GifModule* pGifModule = m_pCodecMgr->GetGifModule();
|
| while (TRUE) {
|
| int32_t readRes =
|
| pGifModule->LoadFrame(m_pGifContext, m_FrameCur, nullptr);
|
| @@ -2128,7 +2139,7 @@ FXCODEC_STATUS CCodec_ProgressiveDecoder::ContinueDecode(IFX_Pause* pPause) {
|
| }
|
| } break;
|
| case FXCODEC_IMAGE_BMP: {
|
| - ICodec_BmpModule* pBmpModule = m_pCodecMgr->GetBmpModule();
|
| + CCodec_BmpModule* pBmpModule = m_pCodecMgr->GetBmpModule();
|
| while (TRUE) {
|
| int32_t readRes = pBmpModule->LoadImage(m_pBmpContext);
|
| while (readRes == 2) {
|
| @@ -2154,7 +2165,7 @@ FXCODEC_STATUS CCodec_ProgressiveDecoder::ContinueDecode(IFX_Pause* pPause) {
|
| }
|
| } break;
|
| case FXCODEC_IMAGE_TIF: {
|
| - ICodec_TiffModule* pTiffModule = m_pCodecMgr->GetTiffModule();
|
| + CCodec_TiffModule* pTiffModule = m_pCodecMgr->GetTiffModule();
|
| FX_BOOL ret = FALSE;
|
| if (m_pDeviceBitmap->GetBPP() == 32 &&
|
| m_pDeviceBitmap->GetWidth() == m_SrcWidth && m_SrcWidth == m_sizeX &&
|
| @@ -2296,6 +2307,6 @@ FXCODEC_STATUS CCodec_ProgressiveDecoder::ContinueDecode(IFX_Pause* pPause) {
|
| }
|
| return FXCODEC_STATUS_ERROR;
|
| }
|
| -ICodec_ProgressiveDecoder* CCodec_ModuleMgr::CreateProgressiveDecoder() {
|
| +CCodec_ProgressiveDecoder* CCodec_ModuleMgr::CreateProgressiveDecoder() {
|
| return new CCodec_ProgressiveDecoder(this);
|
| }
|
|
|