1 // Copyright 2016 The PDFium Authors 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 "third_party/base/check.h" 14 15 namespace { 16 17 CPDF_PageModule* g_PageModule = nullptr; 18 19 } // namespace 20 21 // static Create()22void CPDF_PageModule::Create() { 23 DCHECK(!g_PageModule); 24 g_PageModule = new CPDF_PageModule(); 25 } 26 27 // static Destroy()28void CPDF_PageModule::Destroy() { 29 DCHECK(g_PageModule); 30 delete g_PageModule; 31 g_PageModule = nullptr; 32 } 33 34 // static GetInstance()35CPDF_PageModule* CPDF_PageModule::GetInstance() { 36 DCHECK(g_PageModule); 37 return g_PageModule; 38 } 39 CPDF_PageModule()40CPDF_PageModule::CPDF_PageModule() 41 : m_StockGrayCS(pdfium::MakeRetain<CPDF_DeviceCS>( 42 CPDF_ColorSpace::Family::kDeviceGray)), 43 m_StockRGBCS(pdfium::MakeRetain<CPDF_DeviceCS>( 44 CPDF_ColorSpace::Family::kDeviceRGB)), 45 m_StockCMYKCS(pdfium::MakeRetain<CPDF_DeviceCS>( 46 CPDF_ColorSpace::Family::kDeviceCMYK)), 47 m_StockPatternCS(pdfium::MakeRetain<CPDF_PatternCS>()) { 48 m_StockPatternCS->InitializeStockPattern(); 49 CPDF_FontGlobals::Create(); 50 CPDF_FontGlobals::GetInstance()->LoadEmbeddedMaps(); 51 } 52 ~CPDF_PageModule()53CPDF_PageModule::~CPDF_PageModule() { 54 CPDF_FontGlobals::Destroy(); 55 } 56 GetStockCS(CPDF_ColorSpace::Family family)57RetainPtr<CPDF_ColorSpace> CPDF_PageModule::GetStockCS( 58 CPDF_ColorSpace::Family family) { 59 if (family == CPDF_ColorSpace::Family::kDeviceGray) 60 return m_StockGrayCS; 61 if (family == CPDF_ColorSpace::Family::kDeviceRGB) 62 return m_StockRGBCS; 63 if (family == CPDF_ColorSpace::Family::kDeviceCMYK) 64 return m_StockCMYKCS; 65 if (family == CPDF_ColorSpace::Family::kPattern) 66 return m_StockPatternCS; 67 return nullptr; 68 } 69 ClearStockFont(CPDF_Document * pDoc)70void CPDF_PageModule::ClearStockFont(CPDF_Document* pDoc) { 71 CPDF_FontGlobals::GetInstance()->Clear(pDoc); 72 } 73