blob: 6cda6766bb94f365f9e0bad49f96f3b5e2161ee4 [file] [log] [blame]
kumarashishg826308d2023-06-23 13:21:22 +00001// Copyright 2016 The PDFium Authors
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -07002// 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
Haibo Huang49cc9302020-04-27 16:14:24 -07009#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"
kumarashishg826308d2023-06-23 13:21:22 +000013#include "third_party/base/check.h"
Haibo Huang49cc9302020-04-27 16:14:24 -070014
15namespace {
16
17CPDF_PageModule* g_PageModule = nullptr;
18
19} // namespace
20
21// static
22void CPDF_PageModule::Create() {
kumarashishg826308d2023-06-23 13:21:22 +000023 DCHECK(!g_PageModule);
Haibo Huang49cc9302020-04-27 16:14:24 -070024 g_PageModule = new CPDF_PageModule();
25}
26
27// static
28void CPDF_PageModule::Destroy() {
kumarashishg826308d2023-06-23 13:21:22 +000029 DCHECK(g_PageModule);
Haibo Huang49cc9302020-04-27 16:14:24 -070030 delete g_PageModule;
31 g_PageModule = nullptr;
Haibo Huang49cc9302020-04-27 16:14:24 -070032}
33
34// static
35CPDF_PageModule* CPDF_PageModule::GetInstance() {
kumarashishg826308d2023-06-23 13:21:22 +000036 DCHECK(g_PageModule);
Haibo Huang49cc9302020-04-27 16:14:24 -070037 return g_PageModule;
38}
39
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070040CPDF_PageModule::CPDF_PageModule()
kumarashishg826308d2023-06-23 13:21:22 +000041 : 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>()) {
Haibo Huang49cc9302020-04-27 16:14:24 -070048 m_StockPatternCS->InitializeStockPattern();
49 CPDF_FontGlobals::Create();
50 CPDF_FontGlobals::GetInstance()->LoadEmbeddedMaps();
Philip P. Moltmannd904c1e2018-03-19 09:26:45 -070051}
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070052
Haibo Huang49cc9302020-04-27 16:14:24 -070053CPDF_PageModule::~CPDF_PageModule() {
54 CPDF_FontGlobals::Destroy();
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070055}
56
kumarashishg826308d2023-06-23 13:21:22 +000057RetainPtr<CPDF_ColorSpace> CPDF_PageModule::GetStockCS(
58 CPDF_ColorSpace::Family family) {
59 if (family == CPDF_ColorSpace::Family::kDeviceGray)
Haibo Huang49cc9302020-04-27 16:14:24 -070060 return m_StockGrayCS;
kumarashishg826308d2023-06-23 13:21:22 +000061 if (family == CPDF_ColorSpace::Family::kDeviceRGB)
Haibo Huang49cc9302020-04-27 16:14:24 -070062 return m_StockRGBCS;
kumarashishg826308d2023-06-23 13:21:22 +000063 if (family == CPDF_ColorSpace::Family::kDeviceCMYK)
Haibo Huang49cc9302020-04-27 16:14:24 -070064 return m_StockCMYKCS;
kumarashishg826308d2023-06-23 13:21:22 +000065 if (family == CPDF_ColorSpace::Family::kPattern)
Haibo Huang49cc9302020-04-27 16:14:24 -070066 return m_StockPatternCS;
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070067 return nullptr;
68}
69
70void CPDF_PageModule::ClearStockFont(CPDF_Document* pDoc) {
Haibo Huang49cc9302020-04-27 16:14:24 -070071 CPDF_FontGlobals::GetInstance()->Clear(pDoc);
Philip P. Moltmann4d3acf42017-03-20 11:05:52 -070072}