Home | History | Annotate | Download | only in fpdfapi
      1 // Copyright 2014 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_INCLUDE_FPDFAPI_FPDF_MODULE_H_
      8 #define CORE_INCLUDE_FPDFAPI_FPDF_MODULE_H_
      9 
     10 #include "../fxcrt/fx_ext.h"
     11 
     12 class CCodec_ModuleMgr;
     13 class CFX_AffineMatrix;
     14 class CFX_BitmapDevice;
     15 class CFX_DIBSource;
     16 class CPDF_ColorSpace;
     17 class CPDF_Dictionary;
     18 class CPDF_DocPageData;
     19 class CPDF_DocRenderData;
     20 class CPDF_Document;
     21 class CPDF_FontGlobals;
     22 class CPDF_Image;
     23 class CPDF_ModuleMgr;
     24 class CPDF_Page;
     25 class CPDF_PageModuleDef;
     26 class CPDF_PageObjects;
     27 class CPDF_PageRenderCache;
     28 class CPDF_RenderConfig;
     29 class CPDF_RenderModuleDef;
     30 class CPDF_RenderOptions;
     31 class CPDF_SecurityHandler;
     32 class CPDF_Stream;
     33 class ICodec_FaxModule;
     34 class ICodec_FlateModule;
     35 class ICodec_IccModule;
     36 class ICodec_Jbig2Module;
     37 class ICodec_JpegModule;
     38 class ICodec_JpxModule;
     39 class IPDF_FontMapper;
     40 
     41 #define ADDIN_NAME_CJK			"Eastern Asian Language Support"
     42 #define ADDIN_NAME_DECODER		"JPEG2000 and JBIG2 Image Decoders"
     43 
     44 class CPDF_ModuleMgr
     45 {
     46 public:
     47 
     48     static void	Create();
     49 
     50     static CPDF_ModuleMgr*	Get();
     51 
     52     static void	Destroy();
     53 
     54 
     55 
     56     void		SetCodecModule(CCodec_ModuleMgr* pModule)
     57     {
     58         m_pCodecModule = pModule;
     59     }
     60     CCodec_ModuleMgr*		GetCodecModule()
     61     {
     62         return m_pCodecModule;
     63     }
     64 
     65     void		InitPageModule();
     66 
     67     void		InitRenderModule();
     68 
     69     void		SetDownloadCallback(FX_BOOL (*callback)(FX_LPCSTR module_name));
     70 
     71     FX_BOOL		DownloadModule(FX_LPCSTR module_name);
     72 
     73     void		NotifyModuleAvailable(FX_LPCSTR module_name);
     74 
     75 
     76 
     77     CPDF_RenderModuleDef*	GetRenderModule() const
     78     {
     79         return m_pRenderModule;
     80     }
     81 
     82     CPDF_PageModuleDef*		GetPageModule() const
     83     {
     84         return m_pPageModule;
     85     }
     86 
     87 
     88 
     89 
     90     void					LoadEmbeddedGB1CMaps();
     91 
     92     void					LoadEmbeddedCNS1CMaps();
     93 
     94     void					LoadEmbeddedJapan1CMaps();
     95 
     96     void					LoadEmbeddedKorea1CMaps();
     97 
     98     ICodec_FaxModule*		GetFaxModule();
     99     ICodec_JpegModule*		GetJpegModule();
    100     ICodec_JpxModule*		GetJpxModule();
    101     ICodec_Jbig2Module*		GetJbig2Module();
    102     ICodec_IccModule*		GetIccModule();
    103     ICodec_FlateModule*		GetFlateModule();
    104 
    105     void					RegisterSecurityHandler(FX_LPCSTR name, CPDF_SecurityHandler * (*CreateHandler)(void* param), void* param);
    106 
    107     CPDF_SecurityHandler*	CreateSecurityHandler(FX_LPCSTR name);
    108 
    109     void					SetPrivateData(FX_LPVOID module_id, FX_LPVOID pData, PD_CALLBACK_FREEDATA callback);
    110 
    111     FX_LPVOID				GetPrivateData(FX_LPVOID module_id);
    112 
    113     int						m_FileBufSize;
    114 protected:
    115 
    116     CPDF_ModuleMgr();
    117 
    118     ~CPDF_ModuleMgr();
    119     void					Initialize();
    120 
    121     void					InitModules();
    122 
    123 
    124 
    125     CCodec_ModuleMgr*		m_pCodecModule;
    126 
    127     CPDF_RenderModuleDef*	m_pRenderModule;
    128 
    129     CPDF_PageModuleDef*		m_pPageModule;
    130 
    131 
    132     FX_BOOL (*m_pDownloadCallback)(FX_LPCSTR module_name);
    133 
    134     CFX_MapByteStringToPtr	m_SecurityHandlerMap;
    135 
    136     CFX_PrivateData			m_privateData;
    137 };
    138 class CPDF_PageModuleDef
    139 {
    140 public:
    141     virtual ~CPDF_PageModuleDef() {}
    142 
    143     virtual CPDF_DocPageData*	CreateDocData(CPDF_Document* pDoc)
    144     {
    145         return NULL;
    146     }
    147 
    148     virtual void				ReleaseDoc(CPDF_Document*) {}
    149     virtual void				ClearDoc(CPDF_Document*) {}
    150 
    151     virtual CPDF_FontGlobals*	GetFontGlobals()
    152     {
    153         return NULL;
    154     }
    155 
    156     virtual void				ClearStockFont(CPDF_Document* pDoc) {}
    157 
    158     virtual void				NotifyCJKAvailable() {}
    159 
    160     virtual CPDF_ColorSpace*	GetStockCS(int family)
    161     {
    162         return NULL;
    163     }
    164 };
    165 class CPDF_RenderModuleDef
    166 {
    167 public:
    168     virtual ~CPDF_RenderModuleDef() {}
    169 
    170     virtual CPDF_DocRenderData*	CreateDocData(CPDF_Document* pDoc)
    171     {
    172         return NULL;
    173     }
    174 
    175     virtual void	DestroyDocData(CPDF_DocRenderData*) {}
    176     virtual void	ClearDocData(CPDF_DocRenderData*) {}
    177 
    178     virtual CPDF_DocRenderData* GetRenderData()
    179     {
    180         return NULL;
    181     }
    182 
    183     virtual CPDF_PageRenderCache*	CreatePageCache(CPDF_Page* pPage)
    184     {
    185         return NULL;
    186     }
    187 
    188     virtual void	DestroyPageCache(CPDF_PageRenderCache*) {}
    189 
    190     virtual void	NotifyDecoderAvailable() {}
    191 
    192     virtual CPDF_RenderConfig* GetConfig()
    193     {
    194         return NULL;
    195     }
    196 };
    197 
    198 #endif  // CORE_INCLUDE_FPDFAPI_FPDF_MODULE_H_
    199