xref: /aosp_15_r20/external/pdfium/core/fpdfapi/page/cpdf_pagemodule.cpp (revision 3ac0a46f773bac49fa9476ec2b1cf3f8da5ec3a4)
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()22 void CPDF_PageModule::Create() {
23   DCHECK(!g_PageModule);
24   g_PageModule = new CPDF_PageModule();
25 }
26 
27 // static
Destroy()28 void CPDF_PageModule::Destroy() {
29   DCHECK(g_PageModule);
30   delete g_PageModule;
31   g_PageModule = nullptr;
32 }
33 
34 // static
GetInstance()35 CPDF_PageModule* CPDF_PageModule::GetInstance() {
36   DCHECK(g_PageModule);
37   return g_PageModule;
38 }
39 
CPDF_PageModule()40 CPDF_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()53 CPDF_PageModule::~CPDF_PageModule() {
54   CPDF_FontGlobals::Destroy();
55 }
56 
GetStockCS(CPDF_ColorSpace::Family family)57 RetainPtr<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)70 void CPDF_PageModule::ClearStockFont(CPDF_Document* pDoc) {
71   CPDF_FontGlobals::GetInstance()->Clear(pDoc);
72 }
73