| // 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(); | |
| 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 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_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_ |