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