1e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// Copyright 2014 PDFium Authors. All rights reserved.
2e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// Use of this source code is governed by a BSD-style license that can be
3e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// found in the LICENSE file.
4ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
5e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov
7ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "core/include/fxcodec/fx_codec.h"
8ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "core/include/fpdfapi/fpdf_module.h"
9ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
10ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannnamespace {
11ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
12ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCPDF_ModuleMgr* g_FPDFAPI_pDefaultMgr = nullptr;
13ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
14ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}  // namespace
15ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
16ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// static
17ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCPDF_ModuleMgr* CPDF_ModuleMgr::Get() {
18ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return g_FPDFAPI_pDefaultMgr;
19e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}
20ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
21ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// static
22ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CPDF_ModuleMgr::Create() {
23ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  ASSERT(!g_FPDFAPI_pDefaultMgr);
24ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  g_FPDFAPI_pDefaultMgr = new CPDF_ModuleMgr;
25e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}
26ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
27ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// static
28ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CPDF_ModuleMgr::Destroy() {
29ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  delete g_FPDFAPI_pDefaultMgr;
30ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  g_FPDFAPI_pDefaultMgr = nullptr;
31e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}
32ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
33ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCPDF_ModuleMgr::CPDF_ModuleMgr() : m_pCodecModule(nullptr) {}
34ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
35ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCPDF_ModuleMgr::~CPDF_ModuleMgr() {}
36ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
37ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CPDF_ModuleMgr::SetPrivateData(void* module_id,
38ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                                    void* pData,
39ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                                    PD_CALLBACK_FREEDATA callback) {
40ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  m_privateData.SetPrivateData(module_id, pData, callback);
41e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}
42ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid* CPDF_ModuleMgr::GetPrivateData(void* module_id) {
43ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return m_privateData.GetPrivateData(module_id);
44e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}
45ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannICodec_FaxModule* CPDF_ModuleMgr::GetFaxModule() {
46ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return m_pCodecModule ? m_pCodecModule->GetFaxModule() : NULL;
47e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}
48ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannICodec_JpegModule* CPDF_ModuleMgr::GetJpegModule() {
49ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return m_pCodecModule ? m_pCodecModule->GetJpegModule() : NULL;
50e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}
51ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannICodec_JpxModule* CPDF_ModuleMgr::GetJpxModule() {
52ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return m_pCodecModule ? m_pCodecModule->GetJpxModule() : NULL;
53e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}
54ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannICodec_Jbig2Module* CPDF_ModuleMgr::GetJbig2Module() {
55ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return m_pCodecModule ? m_pCodecModule->GetJbig2Module() : NULL;
56e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}
57ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannICodec_IccModule* CPDF_ModuleMgr::GetIccModule() {
58ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return m_pCodecModule ? m_pCodecModule->GetIccModule() : NULL;
59e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}
60ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannICodec_FlateModule* CPDF_ModuleMgr::GetFlateModule() {
61ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return m_pCodecModule ? m_pCodecModule->GetFlateModule() : NULL;
62e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}
63