| // 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_INCLUDE_FPDFAPI_FPDF_MODULE_H_ |
| #define CORE_INCLUDE_FPDFAPI_FPDF_MODULE_H_ |
| |
| #include "../../../third_party/base/nonstd_unique_ptr.h" |
| #include "../fxcrt/fx_coordinates.h" |
| #include "../fxcrt/fx_system.h" |
| |
| class CCodec_ModuleMgr; |
| class CFX_AffineMatrix; |
| class CFX_BitmapDevice; |
| class CFX_DIBSource; |
| class CPDF_ColorSpace; |
| class CPDF_Dictionary; |
| class CPDF_DocPageData; |
| class CPDF_DocRenderData; |
| class CPDF_Document; |
| class CPDF_FontGlobals; |
| class CPDF_Image; |
| class CPDF_Page; |
| class CPDF_PageObjects; |
| class CPDF_PageRenderCache; |
| class CPDF_RenderConfig; |
| class CPDF_RenderOptions; |
| class CPDF_SecurityHandler; |
| class CPDF_Stream; |
| class ICodec_FaxModule; |
| class ICodec_FlateModule; |
| class ICodec_IccModule; |
| class ICodec_Jbig2Module; |
| class ICodec_JpegModule; |
| class ICodec_JpxModule; |
| class IPDF_FontMapper; |
| class IPDF_PageModule; |
| class IPDF_RenderModule; |
| |
| class CPDF_ModuleMgr |
| { |
| public: |
| static CPDF_ModuleMgr* Get(); |
| static void Create(); |
| static void Destroy(); |
| static const int kFileBufSize = 512; |
| |
| void SetCodecModule(CCodec_ModuleMgr* pModule) |
| { |
| m_pCodecModule = pModule; |
| } |
| CCodec_ModuleMgr* GetCodecModule() |
| { |
| return m_pCodecModule; |
| } |
| |
| void InitPageModule(); |
| |
| void InitRenderModule(); |
| |
| void SetDownloadCallback(FX_BOOL (*callback)(const FX_CHAR* module_name)); |
| |
| FX_BOOL DownloadModule(const FX_CHAR* module_name); |
| |
| void NotifyModuleAvailable(const FX_CHAR* module_name); |
| |
| IPDF_RenderModule* GetRenderModule() const |
| { |
| return m_pRenderModule.get(); |
| } |
| |
| IPDF_PageModule* GetPageModule() const |
| { |
| return m_pPageModule.get(); |
| } |
| |
| void LoadEmbeddedGB1CMaps(); |
| void LoadEmbeddedCNS1CMaps(); |
| void LoadEmbeddedJapan1CMaps(); |
| void LoadEmbeddedKorea1CMaps(); |
| |
| ICodec_FaxModule* GetFaxModule(); |
| ICodec_JpegModule* GetJpegModule(); |
| ICodec_JpxModule* GetJpxModule(); |
| ICodec_Jbig2Module* GetJbig2Module(); |
| ICodec_IccModule* GetIccModule(); |
| ICodec_FlateModule* GetFlateModule(); |
| |
| void RegisterSecurityHandler( |
| const FX_CHAR* name, |
| CPDF_SecurityHandler* (*CreateHandler)(void* param), |
| void* param); |
| |
| CPDF_SecurityHandler* CreateSecurityHandler(const FX_CHAR* name); |
| |
| void SetPrivateData(void* module_id, |
| void* pData, |
| PD_CALLBACK_FREEDATA callback); |
| |
| void* GetPrivateData(void* module_id); |
| |
| private: |
| CPDF_ModuleMgr(); |
| ~CPDF_ModuleMgr(); |
| |
| CCodec_ModuleMgr* m_pCodecModule; |
| |
| nonstd::unique_ptr<IPDF_RenderModule> m_pRenderModule; |
| nonstd::unique_ptr<IPDF_PageModule> m_pPageModule; |
| |
| FX_BOOL (*m_pDownloadCallback)(const FX_CHAR* module_name); |
| |
| CFX_MapByteStringToPtr m_SecurityHandlerMap; |
| |
| CFX_PrivateData m_privateData; |
| }; |
| |
| class IPDF_PageModule |
| { |
| public: |
| virtual ~IPDF_PageModule() {} |
| |
| virtual CPDF_DocPageData* CreateDocData(CPDF_Document* pDoc) = 0; |
| virtual void ReleaseDoc(CPDF_Document*) = 0; |
| virtual void ClearDoc(CPDF_Document*) = 0; |
| virtual CPDF_FontGlobals* GetFontGlobals() = 0; |
| virtual void ClearStockFont(CPDF_Document* pDoc) = 0; |
| virtual void NotifyCJKAvailable() = 0; |
| virtual CPDF_ColorSpace* GetStockCS(int family) = 0; |
| }; |
| |
| class IPDF_RenderModule |
| { |
| public: |
| virtual ~IPDF_RenderModule() {} |
| |
| virtual CPDF_DocRenderData* CreateDocData(CPDF_Document* pDoc) = 0; |
| virtual void DestroyDocData(CPDF_DocRenderData*) = 0; |
| virtual void ClearDocData(CPDF_DocRenderData*) = 0; |
| virtual CPDF_DocRenderData* GetRenderData() = 0; |
| virtual CPDF_PageRenderCache* CreatePageCache(CPDF_Page* pPage) = 0; |
| virtual void DestroyPageCache(CPDF_PageRenderCache*) = 0; |
| virtual CPDF_RenderConfig* GetConfig() = 0; |
| }; |
| |
| #endif // CORE_INCLUDE_FPDFAPI_FPDF_MODULE_H_ |