1 // Copyright 2016 PDFium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7 #ifndef CORE_FPDFAPI_CPDF_MODULEMGR_H_ 8 #define CORE_FPDFAPI_CPDF_MODULEMGR_H_ 9 10 #include <memory> 11 #include <utility> 12 13 #include "core/fxcrt/fx_basic.h" 14 15 class CCodec_FaxModule; 16 class CCodec_FlateModule; 17 class CCodec_IccModule; 18 class CCodec_Jbig2Module; 19 class CCodec_JpegModule; 20 class CCodec_JpxModule; 21 class CCodec_ModuleMgr; 22 class CPDF_PageModule; 23 24 class CFSDK_UnsupportInfo_Adapter { 25 public: CFSDK_UnsupportInfo_Adapter(void * unsp_info)26 explicit CFSDK_UnsupportInfo_Adapter(void* unsp_info) 27 : m_unsp_info(unsp_info) {} 28 GetUnspInfo()29 void* GetUnspInfo() const { return m_unsp_info; } 30 31 private: 32 void* const m_unsp_info; 33 }; 34 35 class CPDF_ModuleMgr { 36 public: 37 static CPDF_ModuleMgr* Get(); 38 static void Destroy(); 39 static const int kFileBufSize = 512; 40 SetCodecModule(CCodec_ModuleMgr * pModule)41 void SetCodecModule(CCodec_ModuleMgr* pModule) { m_pCodecModule = pModule; } GetCodecModule()42 CCodec_ModuleMgr* GetCodecModule() { return m_pCodecModule; } 43 44 void InitPageModule(); GetPageModule()45 CPDF_PageModule* GetPageModule() const { return m_pPageModule.get(); } 46 SetUnsupportInfoAdapter(std::unique_ptr<CFSDK_UnsupportInfo_Adapter> pAdapter)47 void SetUnsupportInfoAdapter( 48 std::unique_ptr<CFSDK_UnsupportInfo_Adapter> pAdapter) { 49 m_pUnsupportInfoAdapter = std::move(pAdapter); 50 } GetUnsupportInfoAdapter()51 CFSDK_UnsupportInfo_Adapter* GetUnsupportInfoAdapter() const { 52 return m_pUnsupportInfoAdapter.get(); 53 } 54 55 void LoadEmbeddedGB1CMaps(); 56 void LoadEmbeddedCNS1CMaps(); 57 void LoadEmbeddedJapan1CMaps(); 58 void LoadEmbeddedKorea1CMaps(); 59 60 CCodec_FaxModule* GetFaxModule(); 61 CCodec_JpegModule* GetJpegModule(); 62 CCodec_JpxModule* GetJpxModule(); 63 CCodec_Jbig2Module* GetJbig2Module(); 64 CCodec_IccModule* GetIccModule(); 65 CCodec_FlateModule* GetFlateModule(); 66 67 private: 68 CPDF_ModuleMgr(); 69 ~CPDF_ModuleMgr(); 70 71 CCodec_ModuleMgr* m_pCodecModule; 72 std::unique_ptr<CPDF_PageModule> m_pPageModule; 73 std::unique_ptr<CFSDK_UnsupportInfo_Adapter> m_pUnsupportInfoAdapter; 74 }; 75 76 #endif // CORE_FPDFAPI_CPDF_MODULEMGR_H_ 77