diff options
Diffstat (limited to 'core/fpdfapi/cpdf_modulemgr.cpp')
-rw-r--r-- | core/fpdfapi/cpdf_modulemgr.cpp | 96 |
1 files changed, 69 insertions, 27 deletions
diff --git a/core/fpdfapi/cpdf_modulemgr.cpp b/core/fpdfapi/cpdf_modulemgr.cpp index 678997a8c9..34fe04996e 100644 --- a/core/fpdfapi/cpdf_modulemgr.cpp +++ b/core/fpdfapi/cpdf_modulemgr.cpp @@ -6,6 +6,10 @@ #include "core/fpdfapi/cpdf_modulemgr.h" +#include "core/fpdfapi/cmaps/CNS1/cmaps_cns1.h" +#include "core/fpdfapi/cmaps/GB1/cmaps_gb1.h" +#include "core/fpdfapi/cmaps/Japan1/cmaps_japan1.h" +#include "core/fpdfapi/cmaps/Korea1/cmaps_korea1.h" #include "core/fpdfapi/page/cpdf_pagemodule.h" #include "core/fxcodec/fx_codec.h" #include "third_party/base/ptr_util.h" @@ -56,11 +60,36 @@ void CPDF_ModuleMgr::Init() { LoadCodecModules(); } -void CPDF_ModuleMgr::LoadEmbeddedMaps() { - LoadEmbeddedGB1CMaps(); - LoadEmbeddedJapan1CMaps(); - LoadEmbeddedCNS1CMaps(); - LoadEmbeddedKorea1CMaps(); +CCodec_FaxModule* CPDF_ModuleMgr::GetFaxModule() { + return m_pCodecModule->GetFaxModule(); +} + +CCodec_JpegModule* CPDF_ModuleMgr::GetJpegModule() { + return m_pCodecModule->GetJpegModule(); +} + +CCodec_JpxModule* CPDF_ModuleMgr::GetJpxModule() { + return m_pCodecModule->GetJpxModule(); +} + +CCodec_Jbig2Module* CPDF_ModuleMgr::GetJbig2Module() { + return m_pCodecModule->GetJbig2Module(); +} + +CCodec_IccModule* CPDF_ModuleMgr::GetIccModule() { + return m_pCodecModule->GetIccModule(); +} + +CCodec_FlateModule* CPDF_ModuleMgr::GetFlateModule() { + return m_pCodecModule->GetFlateModule(); +} + +void CPDF_ModuleMgr::InitPageModule() { + m_pPageModule = pdfium::MakeUnique<CPDF_PageModule>(); +} + +void CPDF_ModuleMgr::InitCodecModule() { + m_pCodecModule = pdfium::MakeUnique<CCodec_ModuleMgr>(); } void CPDF_ModuleMgr::LoadCodecModules() { @@ -81,34 +110,47 @@ void CPDF_ModuleMgr::LoadCodecModules() { #endif } -void CPDF_ModuleMgr::InitCodecModule() { - m_pCodecModule = pdfium::MakeUnique<CCodec_ModuleMgr>(); -} - -void CPDF_ModuleMgr::InitPageModule() { - m_pPageModule = pdfium::MakeUnique<CPDF_PageModule>(); -} - -CCodec_FaxModule* CPDF_ModuleMgr::GetFaxModule() { - return m_pCodecModule->GetFaxModule(); -} - -CCodec_JpegModule* CPDF_ModuleMgr::GetJpegModule() { - return m_pCodecModule->GetJpegModule(); +void CPDF_ModuleMgr::LoadEmbeddedMaps() { + LoadEmbeddedGB1CMaps(); + LoadEmbeddedCNS1CMaps(); + LoadEmbeddedJapan1CMaps(); + LoadEmbeddedKorea1CMaps(); } -CCodec_JpxModule* CPDF_ModuleMgr::GetJpxModule() { - return m_pCodecModule->GetJpxModule(); +void CPDF_ModuleMgr::LoadEmbeddedGB1CMaps() { + CPDF_FontGlobals* pFontGlobals = + CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals(); + pFontGlobals->SetEmbeddedCharset( + CIDSET_GB1, + pdfium::make_span(g_FXCMAP_GB1_cmaps, g_FXCMAP_GB1_cmaps_size)); + pFontGlobals->SetEmbeddedToUnicode(CIDSET_GB1, g_FXCMAP_GB1CID2Unicode_5); } -CCodec_Jbig2Module* CPDF_ModuleMgr::GetJbig2Module() { - return m_pCodecModule->GetJbig2Module(); +void CPDF_ModuleMgr::LoadEmbeddedCNS1CMaps() { + CPDF_FontGlobals* pFontGlobals = + CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals(); + pFontGlobals->SetEmbeddedCharset( + CIDSET_CNS1, + pdfium::make_span(g_FXCMAP_CNS1_cmaps, g_FXCMAP_CNS1_cmaps_size)); + pFontGlobals->SetEmbeddedToUnicode(CIDSET_CNS1, g_FXCMAP_CNS1CID2Unicode_5); } -CCodec_IccModule* CPDF_ModuleMgr::GetIccModule() { - return m_pCodecModule->GetIccModule(); +void CPDF_ModuleMgr::LoadEmbeddedJapan1CMaps() { + CPDF_FontGlobals* pFontGlobals = + CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals(); + pFontGlobals->SetEmbeddedCharset( + CIDSET_JAPAN1, + pdfium::make_span(g_FXCMAP_Japan1_cmaps, g_FXCMAP_Japan1_cmaps_size)); + pFontGlobals->SetEmbeddedToUnicode(CIDSET_JAPAN1, + g_FXCMAP_Japan1CID2Unicode_4); } -CCodec_FlateModule* CPDF_ModuleMgr::GetFlateModule() { - return m_pCodecModule->GetFlateModule(); +void CPDF_ModuleMgr::LoadEmbeddedKorea1CMaps() { + CPDF_FontGlobals* pFontGlobals = + CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals(); + pFontGlobals->SetEmbeddedCharset( + CIDSET_KOREA1, + pdfium::make_span(g_FXCMAP_Korea1_cmaps, g_FXCMAP_Korea1_cmaps_size)); + pFontGlobals->SetEmbeddedToUnicode(CIDSET_KOREA1, + g_FXCMAP_Korea1CID2Unicode_2); } |