You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
145 lines
4.9 KiB
145 lines
4.9 KiB
// Copyright 2014 PDFium Authors. All rights reserved. |
|
// 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 |
|
|
|
#ifndef CORE_FXCODEC_FX_CODEC_H_ |
|
#define CORE_FXCODEC_FX_CODEC_H_ |
|
|
|
#include <map> |
|
#include <memory> |
|
#include <utility> |
|
#include <vector> |
|
|
|
#include "core/fxcodec/codec/ccodec_basicmodule.h" |
|
#include "core/fxcodec/codec/ccodec_faxmodule.h" |
|
#include "core/fxcodec/codec/ccodec_flatemodule.h" |
|
#include "core/fxcodec/codec/ccodec_iccmodule.h" |
|
#include "core/fxcodec/codec/ccodec_jbig2module.h" |
|
#include "core/fxcodec/codec/ccodec_jpegmodule.h" |
|
#include "core/fxcodec/codec/ccodec_jpxmodule.h" |
|
#include "core/fxcodec/codec/ccodec_scanlinedecoder.h" |
|
#include "core/fxcodec/fx_codec_def.h" |
|
#include "core/fxcrt/fx_basic.h" |
|
#include "core/fxcrt/fx_coordinates.h" |
|
|
|
#ifdef PDF_ENABLE_XFA |
|
#include "core/fxcodec/codec/icodec_bmpmodule.h" |
|
#include "core/fxcodec/codec/icodec_gifmodule.h" |
|
#include "core/fxcodec/codec/icodec_pngmodule.h" |
|
#include "core/fxcodec/codec/icodec_tiffmodule.h" |
|
#endif // PDF_ENABLE_XFA |
|
|
|
class CFX_DIBSource; |
|
class CJPX_Decoder; |
|
class CPDF_ColorSpace; |
|
class CPDF_StreamAcc; |
|
|
|
#ifdef PDF_ENABLE_XFA |
|
class CCodec_ProgressiveDecoder; |
|
|
|
class CFX_DIBAttribute { |
|
public: |
|
CFX_DIBAttribute(); |
|
~CFX_DIBAttribute(); |
|
|
|
int32_t m_nXDPI; |
|
int32_t m_nYDPI; |
|
FX_FLOAT m_fAspectRatio; |
|
uint16_t m_wDPIUnit; |
|
CFX_ByteString m_strAuthor; |
|
uint8_t m_strTime[20]; |
|
int32_t m_nGifLeft; |
|
int32_t m_nGifTop; |
|
uint32_t* m_pGifLocalPalette; |
|
uint32_t m_nGifLocalPalNum; |
|
int32_t m_nBmpCompressType; |
|
std::map<uint32_t, void*> m_Exif; |
|
}; |
|
#endif // PDF_ENABLE_XFA |
|
|
|
class CCodec_ModuleMgr { |
|
public: |
|
CCodec_ModuleMgr(); |
|
~CCodec_ModuleMgr(); |
|
|
|
CCodec_BasicModule* GetBasicModule() const { return m_pBasicModule.get(); } |
|
CCodec_FaxModule* GetFaxModule() const { return m_pFaxModule.get(); } |
|
CCodec_JpegModule* GetJpegModule() const { return m_pJpegModule.get(); } |
|
CCodec_JpxModule* GetJpxModule() const { return m_pJpxModule.get(); } |
|
CCodec_Jbig2Module* GetJbig2Module() const { return m_pJbig2Module.get(); } |
|
CCodec_IccModule* GetIccModule() const { return m_pIccModule.get(); } |
|
CCodec_FlateModule* GetFlateModule() const { return m_pFlateModule.get(); } |
|
|
|
#ifdef PDF_ENABLE_XFA |
|
std::unique_ptr<CCodec_ProgressiveDecoder> CreateProgressiveDecoder(); |
|
void SetBmpModule(std::unique_ptr<ICodec_BmpModule> module) { |
|
m_pBmpModule = std::move(module); |
|
} |
|
void SetGifModule(std::unique_ptr<ICodec_GifModule> module) { |
|
m_pGifModule = std::move(module); |
|
} |
|
void SetPngModule(std::unique_ptr<ICodec_PngModule> module) { |
|
m_pPngModule = std::move(module); |
|
} |
|
void SetTiffModule(std::unique_ptr<ICodec_TiffModule> module) { |
|
m_pTiffModule = std::move(module); |
|
} |
|
ICodec_BmpModule* GetBmpModule() const { return m_pBmpModule.get(); } |
|
ICodec_GifModule* GetGifModule() const { return m_pGifModule.get(); } |
|
ICodec_PngModule* GetPngModule() const { return m_pPngModule.get(); } |
|
ICodec_TiffModule* GetTiffModule() const { return m_pTiffModule.get(); } |
|
#endif // PDF_ENABLE_XFA |
|
|
|
protected: |
|
std::unique_ptr<CCodec_BasicModule> m_pBasicModule; |
|
std::unique_ptr<CCodec_FaxModule> m_pFaxModule; |
|
std::unique_ptr<CCodec_JpegModule> m_pJpegModule; |
|
std::unique_ptr<CCodec_JpxModule> m_pJpxModule; |
|
std::unique_ptr<CCodec_Jbig2Module> m_pJbig2Module; |
|
std::unique_ptr<CCodec_IccModule> m_pIccModule; |
|
|
|
#ifdef PDF_ENABLE_XFA |
|
std::unique_ptr<ICodec_BmpModule> m_pBmpModule; |
|
std::unique_ptr<ICodec_GifModule> m_pGifModule; |
|
std::unique_ptr<ICodec_PngModule> m_pPngModule; |
|
std::unique_ptr<ICodec_TiffModule> m_pTiffModule; |
|
#endif // PDF_ENABLE_XFA |
|
|
|
std::unique_ptr<CCodec_FlateModule> m_pFlateModule; |
|
}; |
|
|
|
void ReverseRGB(uint8_t* pDestBuf, const uint8_t* pSrcBuf, int pixels); |
|
uint32_t ComponentsForFamily(int family); |
|
void sRGB_to_AdobeCMYK(FX_FLOAT R, |
|
FX_FLOAT G, |
|
FX_FLOAT B, |
|
FX_FLOAT& c, |
|
FX_FLOAT& m, |
|
FX_FLOAT& y, |
|
FX_FLOAT& k); |
|
void AdobeCMYK_to_sRGB(FX_FLOAT c, |
|
FX_FLOAT m, |
|
FX_FLOAT y, |
|
FX_FLOAT k, |
|
FX_FLOAT& R, |
|
FX_FLOAT& G, |
|
FX_FLOAT& B); |
|
void AdobeCMYK_to_sRGB1(uint8_t c, |
|
uint8_t m, |
|
uint8_t y, |
|
uint8_t k, |
|
uint8_t& R, |
|
uint8_t& G, |
|
uint8_t& B); |
|
bool MD5ComputeID(const void* buf, uint32_t dwSize, uint8_t ID[16]); |
|
void FaxG4Decode(const uint8_t* src_buf, |
|
uint32_t src_size, |
|
int* pbitpos, |
|
uint8_t* dest_buf, |
|
int width, |
|
int height, |
|
int pitch); |
|
|
|
#endif // CORE_FXCODEC_FX_CODEC_H_
|
|
|