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