14d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Copyright 2014 PDFium Authors. All rights reserved.
24d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be
34d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// found in the LICENSE file.
44d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
54d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
64d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
74d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fpdfapi/cpdf_modulemgr.h"
84d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
94d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fpdfapi/page/cpdf_pagemodule.h"
104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fxcodec/fx_codec.h"
114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "third_party/base/ptr_util.h"
124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannnamespace {
144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCPDF_ModuleMgr* g_pDefaultMgr = nullptr;
164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann}  // namespace
184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// static
204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCPDF_ModuleMgr* CPDF_ModuleMgr::Get() {
214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  if (!g_pDefaultMgr)
224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    g_pDefaultMgr = new CPDF_ModuleMgr;
234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  return g_pDefaultMgr;
244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann}
254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// static
274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CPDF_ModuleMgr::Destroy() {
284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  delete g_pDefaultMgr;
294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  g_pDefaultMgr = nullptr;
304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann}
314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCPDF_ModuleMgr::CPDF_ModuleMgr() : m_pCodecModule(nullptr) {}
334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCPDF_ModuleMgr::~CPDF_ModuleMgr() {}
354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannvoid CPDF_ModuleMgr::InitPageModule() {
374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  m_pPageModule = pdfium::MakeUnique<CPDF_PageModule>();
384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann}
394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCCodec_FaxModule* CPDF_ModuleMgr::GetFaxModule() {
414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  return m_pCodecModule ? m_pCodecModule->GetFaxModule() : nullptr;
424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann}
434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCCodec_JpegModule* CPDF_ModuleMgr::GetJpegModule() {
454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  return m_pCodecModule ? m_pCodecModule->GetJpegModule() : nullptr;
464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann}
474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCCodec_JpxModule* CPDF_ModuleMgr::GetJpxModule() {
494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  return m_pCodecModule ? m_pCodecModule->GetJpxModule() : nullptr;
504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann}
514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCCodec_Jbig2Module* CPDF_ModuleMgr::GetJbig2Module() {
534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  return m_pCodecModule ? m_pCodecModule->GetJbig2Module() : nullptr;
544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann}
554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCCodec_IccModule* CPDF_ModuleMgr::GetIccModule() {
574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  return m_pCodecModule ? m_pCodecModule->GetIccModule() : nullptr;
584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann}
594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. MoltmannCCodec_FlateModule* CPDF_ModuleMgr::GetFlateModule() {
614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  return m_pCodecModule ? m_pCodecModule->GetFlateModule() : nullptr;
624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann}
63