1 // Copyright 2016 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/page/cpdf_pagemodule.h" 8 9 #include "core/fpdfapi/font/cpdf_fontglobals.h" 10 #include "core/fpdfapi/page/cpdf_colorspace.h" 11 #include "core/fpdfapi/page/cpdf_devicecs.h" 12 #include "core/fpdfapi/page/cpdf_patterncs.h" 13 #include "core/fxcodec/fx_codec.h" 14 15 namespace { 16 17 CPDF_PageModule* g_PageModule = nullptr; 18 19 } // namespace 20 21 // static Create()22void CPDF_PageModule::Create() { 23 ASSERT(!g_PageModule); 24 fxcodec::ModuleMgr::Create(); 25 g_PageModule = new CPDF_PageModule(); 26 } 27 28 // static Destroy()29void CPDF_PageModule::Destroy() { 30 ASSERT(g_PageModule); 31 delete g_PageModule; 32 g_PageModule = nullptr; 33 fxcodec::ModuleMgr::Destroy(); 34 } 35 36 // static GetInstance()37CPDF_PageModule* CPDF_PageModule::GetInstance() { 38 ASSERT(g_PageModule); 39 return g_PageModule; 40 } 41 CPDF_PageModule()42CPDF_PageModule::CPDF_PageModule() 43 : m_StockGrayCS(pdfium::MakeRetain<CPDF_DeviceCS>(PDFCS_DEVICEGRAY)), 44 m_StockRGBCS(pdfium::MakeRetain<CPDF_DeviceCS>(PDFCS_DEVICERGB)), 45 m_StockCMYKCS(pdfium::MakeRetain<CPDF_DeviceCS>(PDFCS_DEVICECMYK)), 46 m_StockPatternCS(pdfium::MakeRetain<CPDF_PatternCS>(nullptr)) { 47 m_StockPatternCS->InitializeStockPattern(); 48 CPDF_FontGlobals::Create(); 49 CPDF_FontGlobals::GetInstance()->LoadEmbeddedMaps(); 50 } 51 ~CPDF_PageModule()52CPDF_PageModule::~CPDF_PageModule() { 53 CPDF_FontGlobals::Destroy(); 54 } 55 GetStockCS(int family)56RetainPtr<CPDF_ColorSpace> CPDF_PageModule::GetStockCS(int family) { 57 if (family == PDFCS_DEVICEGRAY) 58 return m_StockGrayCS; 59 if (family == PDFCS_DEVICERGB) 60 return m_StockRGBCS; 61 if (family == PDFCS_DEVICECMYK) 62 return m_StockCMYKCS; 63 if (family == PDFCS_PATTERN) 64 return m_StockPatternCS; 65 return nullptr; 66 } 67 ClearStockFont(CPDF_Document * pDoc)68void CPDF_PageModule::ClearStockFont(CPDF_Document* pDoc) { 69 CPDF_FontGlobals::GetInstance()->Clear(pDoc); 70 } 71