| Index: core/fxcodec/codec/include/ccodec_progressivedecoder.h
|
| diff --git a/core/fxcodec/codec/fx_codec_progress.h b/core/fxcodec/codec/include/ccodec_progressivedecoder.h
|
| similarity index 61%
|
| rename from core/fxcodec/codec/fx_codec_progress.h
|
| rename to core/fxcodec/codec/include/ccodec_progressivedecoder.h
|
| index e8e885b3b57d5a1099235cb42fe6ed75df335ec4..83b73e1ba7cc9c34b791dee69aa0a893ad08e146 100644
|
| --- a/core/fxcodec/codec/fx_codec_progress.h
|
| +++ b/core/fxcodec/codec/include/ccodec_progressivedecoder.h
|
| @@ -4,108 +4,161 @@
|
|
|
| // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
|
|
|
| -#ifndef CORE_FXCODEC_CODEC_FX_CODEC_PROGRESS_H_
|
| -#define CORE_FXCODEC_CODEC_FX_CODEC_PROGRESS_H_
|
| +#ifndef CORE_FXCODEC_CODEC_INCLUDE_CCODEC_PROGRESSIVEDECODER_H_
|
| +#define CORE_FXCODEC_CODEC_INCLUDE_CCODEC_PROGRESSIVEDECODER_H_
|
|
|
| -#include "core/fxcodec/include/fx_codec.h"
|
| -#include "core/fxcrt/include/fx_memory.h"
|
| +#include "core/fxcodec/include/fx_codec_def.h"
|
| #include "core/fxcrt/include/fx_system.h"
|
| #include "core/fxge/include/fx_dib.h"
|
|
|
| -#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
|
| -
|
| -struct PixelWeight {
|
| - int m_SrcStart;
|
| - int m_SrcEnd;
|
| - int m_Weights[1];
|
| -};
|
| -
|
| -class CFXCODEC_WeightTable {
|
| - public:
|
| - CFXCODEC_WeightTable() { m_pWeightTables = NULL; }
|
| - ~CFXCODEC_WeightTable() { FX_Free(m_pWeightTables); }
|
| -
|
| - void Calc(int dest_len,
|
| - int dest_min,
|
| - int dest_max,
|
| - int src_len,
|
| - int src_min,
|
| - int src_max,
|
| - FX_BOOL bInterpol);
|
| - PixelWeight* GetPixelWeight(int pixel) {
|
| - return (PixelWeight*)(m_pWeightTables + (pixel - m_DestMin) * m_ItemSize);
|
| - }
|
| -
|
| - int m_DestMin, m_ItemSize;
|
| - uint8_t* m_pWeightTables;
|
| -};
|
| -class CFXCODEC_HorzTable {
|
| +class CCodec_BmpModule;
|
| +class CCodec_GifContext;
|
| +class CCodec_GifModule;
|
| +class CCodec_JpegModule;
|
| +class CCodec_ModuleMgr;
|
| +class CCodec_PngContext;
|
| +class CCodec_TiffContext;
|
| +class CFX_DIBAttribute;
|
| +class IFX_FileRead;
|
| +class IFX_Pause;
|
| +struct FXBMP_Context;
|
| +struct FXGIF_Context;
|
| +struct FXJPEG_Context;
|
| +struct FXPNG_Context;
|
| +
|
| +class CCodec_ProgressiveDecoder {
|
| public:
|
| - CFXCODEC_HorzTable() { m_pWeightTables = NULL; }
|
| - ~CFXCODEC_HorzTable() { FX_Free(m_pWeightTables); }
|
| + enum FXCodec_Format {
|
| + FXCodec_Invalid = 0,
|
| + FXCodec_1bppGray = 0x101,
|
| + FXCodec_1bppRgb = 0x001,
|
| + FXCodec_8bppGray = 0x108,
|
| + FXCodec_8bppRgb = 0x008,
|
| + FXCodec_Rgb = 0x018,
|
| + FXCodec_Rgb32 = 0x020,
|
| + FXCodec_Argb = 0x220,
|
| + FXCodec_Cmyk = 0x120
|
| + };
|
|
|
| - void Calc(int dest_len, int src_len, FX_BOOL bInterpol);
|
| - PixelWeight* GetPixelWeight(int pixel) {
|
| - return (PixelWeight*)(m_pWeightTables + pixel * m_ItemSize);
|
| - }
|
| -
|
| - int m_ItemSize;
|
| - uint8_t* m_pWeightTables;
|
| -};
|
| -class CFXCODEC_VertTable {
|
| - public:
|
| - CFXCODEC_VertTable() { m_pWeightTables = NULL; }
|
| - ~CFXCODEC_VertTable() { FX_Free(m_pWeightTables); }
|
| - void Calc(int dest_len, int src_len);
|
| - PixelWeight* GetPixelWeight(int pixel) {
|
| - return (PixelWeight*)(m_pWeightTables + pixel * m_ItemSize);
|
| - }
|
| - int m_ItemSize;
|
| - uint8_t* m_pWeightTables;
|
| -};
|
| -enum FXCodec_Format {
|
| - FXCodec_Invalid = 0,
|
| - FXCodec_1bppGray = 0x101,
|
| - FXCodec_1bppRgb = 0x001,
|
| - FXCodec_8bppGray = 0x108,
|
| - FXCodec_8bppRgb = 0x008,
|
| - FXCodec_Rgb = 0x018,
|
| - FXCodec_Rgb32 = 0x020,
|
| - FXCodec_Argb = 0x220,
|
| - FXCodec_Cmyk = 0x120
|
| -};
|
| -class CCodec_ProgressiveDecoder : public ICodec_ProgressiveDecoder {
|
| - public:
|
| CCodec_ProgressiveDecoder(CCodec_ModuleMgr* pCodecMgr);
|
| - ~CCodec_ProgressiveDecoder() override;
|
| + ~CCodec_ProgressiveDecoder();
|
|
|
| FXCODEC_STATUS LoadImageInfo(IFX_FileRead* pFile,
|
| FXCODEC_IMAGE_TYPE imageType,
|
| - CFX_DIBAttribute* pAttribute) override;
|
| + CFX_DIBAttribute* pAttribute);
|
|
|
| - FXCODEC_IMAGE_TYPE GetType() const override { return m_imagType; }
|
| - int32_t GetWidth() const override { return m_SrcWidth; }
|
| - int32_t GetHeight() const override { return m_SrcHeight; }
|
| - int32_t GetNumComponents() const override { return m_SrcComponents; }
|
| - int32_t GetBPC() const override { return m_SrcBPC; }
|
| - void SetClipBox(FX_RECT* clip) override;
|
| + FXCODEC_IMAGE_TYPE GetType() const { return m_imagType; }
|
| + int32_t GetWidth() const { return m_SrcWidth; }
|
| + int32_t GetHeight() const { return m_SrcHeight; }
|
| + int32_t GetNumComponents() const { return m_SrcComponents; }
|
| + int32_t GetBPC() const { return m_SrcBPC; }
|
| + void SetClipBox(FX_RECT* clip);
|
|
|
| - FXCODEC_STATUS GetFrames(int32_t& frames, IFX_Pause* pPause) override;
|
| + FXCODEC_STATUS GetFrames(int32_t& frames, IFX_Pause* pPause = nullptr);
|
| FXCODEC_STATUS StartDecode(CFX_DIBitmap* pDIBitmap,
|
| int start_x,
|
| int start_y,
|
| int size_x,
|
| int size_y,
|
| - int32_t frames,
|
| - FX_BOOL bInterpol) override;
|
| + int32_t frames = 0,
|
| + FX_BOOL bInterpol = TRUE);
|
| +
|
| + FXCODEC_STATUS ContinueDecode(IFX_Pause* pPause = nullptr);
|
| +
|
| + struct PixelWeight {
|
| + int m_SrcStart;
|
| + int m_SrcEnd;
|
| + int m_Weights[1];
|
| + };
|
| +
|
| + class CFXCODEC_WeightTable {
|
| + public:
|
| + CFXCODEC_WeightTable() { m_pWeightTables = NULL; }
|
| + ~CFXCODEC_WeightTable() { FX_Free(m_pWeightTables); }
|
| +
|
| + void Calc(int dest_len,
|
| + int dest_min,
|
| + int dest_max,
|
| + int src_len,
|
| + int src_min,
|
| + int src_max,
|
| + FX_BOOL bInterpol);
|
| + PixelWeight* GetPixelWeight(int pixel) {
|
| + return (PixelWeight*)(m_pWeightTables + (pixel - m_DestMin) * m_ItemSize);
|
| + }
|
| +
|
| + int m_DestMin, m_ItemSize;
|
| + uint8_t* m_pWeightTables;
|
| + };
|
| +
|
| + class CFXCODEC_HorzTable {
|
| + public:
|
| + CFXCODEC_HorzTable() { m_pWeightTables = NULL; }
|
| + ~CFXCODEC_HorzTable() { FX_Free(m_pWeightTables); }
|
| +
|
| + void Calc(int dest_len, int src_len, FX_BOOL bInterpol);
|
| + PixelWeight* GetPixelWeight(int pixel) {
|
| + return (PixelWeight*)(m_pWeightTables + pixel * m_ItemSize);
|
| + }
|
| +
|
| + int m_ItemSize;
|
| + uint8_t* m_pWeightTables;
|
| + };
|
| +
|
| + class CFXCODEC_VertTable {
|
| + public:
|
| + CFXCODEC_VertTable() { m_pWeightTables = NULL; }
|
| + ~CFXCODEC_VertTable() { FX_Free(m_pWeightTables); }
|
| + void Calc(int dest_len, int src_len);
|
| + PixelWeight* GetPixelWeight(int pixel) {
|
| + return (PixelWeight*)(m_pWeightTables + pixel * m_ItemSize);
|
| + }
|
| + int m_ItemSize;
|
| + uint8_t* m_pWeightTables;
|
| + };
|
|
|
| - FXCODEC_STATUS ContinueDecode(IFX_Pause* pPause) override;
|
| + IFX_FileRead* m_pFile;
|
| + CCodec_ModuleMgr* m_pCodecMgr;
|
| + FXJPEG_Context* m_pJpegContext;
|
| + FXPNG_Context* m_pPngContext;
|
| + FXGIF_Context* m_pGifContext;
|
| + FXBMP_Context* m_pBmpContext;
|
| + CCodec_TiffContext* m_pTiffContext;
|
| + FXCODEC_IMAGE_TYPE m_imagType;
|
| + uint32_t m_offSet;
|
| + uint8_t* m_pSrcBuf;
|
| + uint32_t m_SrcSize;
|
| + uint8_t* m_pDecodeBuf;
|
| + int m_ScanlineSize;
|
| + CFX_DIBitmap* m_pDeviceBitmap;
|
| + FX_BOOL m_bInterpol;
|
| + CFXCODEC_WeightTable m_WeightHorz;
|
| + CFXCODEC_VertTable m_WeightVert;
|
| + CFXCODEC_HorzTable m_WeightHorzOO;
|
| + int m_SrcWidth;
|
| + int m_SrcHeight;
|
| + int m_SrcComponents;
|
| + int m_SrcBPC;
|
| + FX_RECT m_clipBox;
|
| + int m_startX;
|
| + int m_startY;
|
| + int m_sizeX;
|
| + int m_sizeY;
|
| + int m_TransMethod;
|
| + FX_ARGB* m_pSrcPalette;
|
| + int m_SrcPaletteNumber;
|
| + int m_SrcRow;
|
| + FXCodec_Format m_SrcFormat;
|
| + int m_SrcPassNumber;
|
| + int m_FrameNumber;
|
| + int m_FrameCur;
|
| + int m_GifBgIndex;
|
| + uint8_t* m_pGifPalette;
|
| + int32_t m_GifPltNumber;
|
| + int m_GifTransIndex;
|
| + FX_RECT m_GifFrameRect;
|
| + FX_BOOL m_BmpIsTopBottom;
|
| + FXCODEC_STATUS m_status;
|
|
|
| protected:
|
| static FX_BOOL PngReadHeaderFunc(void* pModule,
|
| @@ -158,64 +211,20 @@ class CCodec_ProgressiveDecoder : public ICodec_ProgressiveDecoder {
|
| uint8_t* src_scan,
|
| FXCodec_Format src_format);
|
| void ResampleVert(CFX_DIBitmap* pDeviceBitmap, double scale_y, int des_row);
|
| - FX_BOOL JpegReadMoreData(ICodec_JpegModule* pJpegModule,
|
| + FX_BOOL JpegReadMoreData(CCodec_JpegModule* pJpegModule,
|
| FXCODEC_STATUS& err_status);
|
| void PngOneOneMapResampleHorz(CFX_DIBitmap* pDeviceBitmap,
|
| int32_t des_line,
|
| uint8_t* src_scan,
|
| FXCodec_Format src_format);
|
| - FX_BOOL GifReadMoreData(ICodec_GifModule* pGifModule,
|
| + FX_BOOL GifReadMoreData(CCodec_GifModule* pGifModule,
|
| FXCODEC_STATUS& err_status);
|
| void GifDoubleLineResampleVert(CFX_DIBitmap* pDeviceBitmap,
|
| double scale_y,
|
| int des_row);
|
| - FX_BOOL BmpReadMoreData(ICodec_BmpModule* pBmpModule,
|
| + FX_BOOL BmpReadMoreData(CCodec_BmpModule* pBmpModule,
|
| FXCODEC_STATUS& err_status);
|
| void ResampleVertBT(CFX_DIBitmap* pDeviceBitmap, double scale_y, int des_row);
|
| -
|
| - public:
|
| - IFX_FileRead* m_pFile;
|
| - CCodec_ModuleMgr* m_pCodecMgr;
|
| - void* m_pJpegContext;
|
| - void* m_pPngContext;
|
| - void* m_pGifContext;
|
| - void* m_pBmpContext;
|
| - void* m_pTiffContext;
|
| - FXCODEC_IMAGE_TYPE m_imagType;
|
| - uint32_t m_offSet;
|
| - uint8_t* m_pSrcBuf;
|
| - uint32_t m_SrcSize;
|
| - uint8_t* m_pDecodeBuf;
|
| - int m_ScanlineSize;
|
| - CFX_DIBitmap* m_pDeviceBitmap;
|
| - FX_BOOL m_bInterpol;
|
| - CFXCODEC_WeightTable m_WeightHorz;
|
| - CFXCODEC_VertTable m_WeightVert;
|
| - CFXCODEC_HorzTable m_WeightHorzOO;
|
| - int m_SrcWidth;
|
| - int m_SrcHeight;
|
| - int m_SrcComponents;
|
| - int m_SrcBPC;
|
| - FX_RECT m_clipBox;
|
| - int m_startX;
|
| - int m_startY;
|
| - int m_sizeX;
|
| - int m_sizeY;
|
| - int m_TransMethod;
|
| - FX_ARGB* m_pSrcPalette;
|
| - int m_SrcPaletteNumber;
|
| - int m_SrcRow;
|
| - FXCodec_Format m_SrcFormat;
|
| - int m_SrcPassNumber;
|
| - int m_FrameNumber;
|
| - int m_FrameCur;
|
| - int m_GifBgIndex;
|
| - uint8_t* m_pGifPalette;
|
| - int32_t m_GifPltNumber;
|
| - int m_GifTransIndex;
|
| - FX_RECT m_GifFrameRect;
|
| - FX_BOOL m_BmpIsTopBottom;
|
| - FXCODEC_STATUS m_status;
|
| };
|
|
|
| -#endif // CORE_FXCODEC_CODEC_FX_CODEC_PROGRESS_H_
|
| +#endif // CORE_FXCODEC_CODEC_INCLUDE_CCODEC_PROGRESSIVEDECODER_H_
|
|
|