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 "core/fpdfapi/cpdf_modulemgr.h"
8
9#include "core/fpdfapi/page/cpdf_pagemodule.h"
10#include "core/fxcodec/fx_codec.h"
11#include "third_party/base/ptr_util.h"
12
13namespace {
14
15CPDF_ModuleMgr* g_pDefaultMgr = nullptr;
16
17}  // namespace
18
19// static
20CPDF_ModuleMgr* CPDF_ModuleMgr::Get() {
21  if (!g_pDefaultMgr)
22    g_pDefaultMgr = new CPDF_ModuleMgr;
23  return g_pDefaultMgr;
24}
25
26// static
27void CPDF_ModuleMgr::Destroy() {
28  delete g_pDefaultMgr;
29  g_pDefaultMgr = nullptr;
30}
31
32CPDF_ModuleMgr::CPDF_ModuleMgr() : m_pCodecModule(nullptr) {}
33
34CPDF_ModuleMgr::~CPDF_ModuleMgr() {}
35
36void CPDF_ModuleMgr::InitPageModule() {
37  m_pPageModule = pdfium::MakeUnique<CPDF_PageModule>();
38}
39
40CCodec_FaxModule* CPDF_ModuleMgr::GetFaxModule() {
41  return m_pCodecModule ? m_pCodecModule->GetFaxModule() : nullptr;
42}
43
44CCodec_JpegModule* CPDF_ModuleMgr::GetJpegModule() {
45  return m_pCodecModule ? m_pCodecModule->GetJpegModule() : nullptr;
46}
47
48CCodec_JpxModule* CPDF_ModuleMgr::GetJpxModule() {
49  return m_pCodecModule ? m_pCodecModule->GetJpxModule() : nullptr;
50}
51
52CCodec_Jbig2Module* CPDF_ModuleMgr::GetJbig2Module() {
53  return m_pCodecModule ? m_pCodecModule->GetJbig2Module() : nullptr;
54}
55
56CCodec_IccModule* CPDF_ModuleMgr::GetIccModule() {
57  return m_pCodecModule ? m_pCodecModule->GetIccModule() : nullptr;
58}
59
60CCodec_FlateModule* CPDF_ModuleMgr::GetFlateModule() {
61  return m_pCodecModule ? m_pCodecModule->GetFlateModule() : nullptr;
62}
63