• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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