clang-format all pdfium code.
[pdfium.git] / core / src / fpdfapi / fpdf_basic_module.cpp
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 #include "../../include/fxcodec/fx_codec.h"
8 #include "../../include/fpdfapi/fpdf_module.h"
9
10 namespace {
11
12 CPDF_ModuleMgr* g_FPDFAPI_pDefaultMgr = nullptr;
13
14 const char kAddinNameCJK[] = "Eastern Asian Language Support";
15
16 }  // namespace
17
18 // static
19 CPDF_ModuleMgr* CPDF_ModuleMgr::Get() {
20   return g_FPDFAPI_pDefaultMgr;
21 }
22
23 // static
24 void CPDF_ModuleMgr::Create() {
25   ASSERT(!g_FPDFAPI_pDefaultMgr);
26   g_FPDFAPI_pDefaultMgr = new CPDF_ModuleMgr;
27 }
28
29 // static
30 void CPDF_ModuleMgr::Destroy() {
31   delete g_FPDFAPI_pDefaultMgr;
32   g_FPDFAPI_pDefaultMgr = nullptr;
33 }
34
35 CPDF_ModuleMgr::CPDF_ModuleMgr() : m_pCodecModule(nullptr) {}
36
37 CPDF_ModuleMgr::~CPDF_ModuleMgr() {}
38
39 void CPDF_ModuleMgr::SetDownloadCallback(
40     FX_BOOL (*callback)(const FX_CHAR* module_name)) {
41   m_pDownloadCallback = callback;
42 }
43 FX_BOOL CPDF_ModuleMgr::DownloadModule(const FX_CHAR* module_name) {
44   if (m_pDownloadCallback == NULL) {
45     return FALSE;
46   }
47   return m_pDownloadCallback(module_name);
48 }
49 void CPDF_ModuleMgr::NotifyModuleAvailable(const FX_CHAR* module_name) {
50   if (FXSYS_strcmp(module_name, kAddinNameCJK) == 0) {
51     m_pPageModule->NotifyCJKAvailable();
52   }
53 }
54 void CPDF_ModuleMgr::RegisterSecurityHandler(
55     const FX_CHAR* filter,
56     CPDF_SecurityHandler* (*CreateHandler)(void* param),
57     void* param) {
58   if (CreateHandler == NULL) {
59     m_SecurityHandlerMap.RemoveKey(filter);
60   } else {
61     m_SecurityHandlerMap.SetAt(filter, (void*)CreateHandler);
62   }
63   if (param) {
64     m_SecurityHandlerMap.SetAt(FX_BSTRC("_param_") + filter, param);
65   }
66 }
67 void CPDF_ModuleMgr::SetPrivateData(void* module_id,
68                                     void* pData,
69                                     PD_CALLBACK_FREEDATA callback) {
70   m_privateData.SetPrivateData(module_id, pData, callback);
71 }
72 void* CPDF_ModuleMgr::GetPrivateData(void* module_id) {
73   return m_privateData.GetPrivateData(module_id);
74 }
75 CPDF_SecurityHandler* CPDF_ModuleMgr::CreateSecurityHandler(
76     const FX_CHAR* filter) {
77   CPDF_SecurityHandler* (*CreateHandler)(void*) = NULL;
78   if (!m_SecurityHandlerMap.Lookup(filter, (void*&)CreateHandler)) {
79     return NULL;
80   }
81   if (CreateHandler == NULL) {
82     return NULL;
83   }
84   void* param = NULL;
85   m_SecurityHandlerMap.Lookup(FX_BSTRC("_param_") + filter, param);
86   return CreateHandler(param);
87 }
88 ICodec_FaxModule* CPDF_ModuleMgr::GetFaxModule() {
89   return m_pCodecModule ? m_pCodecModule->GetFaxModule() : NULL;
90 }
91 ICodec_JpegModule* CPDF_ModuleMgr::GetJpegModule() {
92   return m_pCodecModule ? m_pCodecModule->GetJpegModule() : NULL;
93 }
94 ICodec_JpxModule* CPDF_ModuleMgr::GetJpxModule() {
95   return m_pCodecModule ? m_pCodecModule->GetJpxModule() : NULL;
96 }
97 ICodec_Jbig2Module* CPDF_ModuleMgr::GetJbig2Module() {
98   return m_pCodecModule ? m_pCodecModule->GetJbig2Module() : NULL;
99 }
100 ICodec_IccModule* CPDF_ModuleMgr::GetIccModule() {
101   return m_pCodecModule ? m_pCodecModule->GetIccModule() : NULL;
102 }
103 ICodec_FlateModule* CPDF_ModuleMgr::GetFlateModule() {
104   return m_pCodecModule ? m_pCodecModule->GetFlateModule() : NULL;
105 }