Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(70)

Side by Side Diff: fpdfsdk/src/fpdf_sysfontinfo.cpp

Issue 1799773002: Move fpdfsdk/src up to fpdfsdk/. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Rebase to master Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « fpdfsdk/src/fpdf_searchex.cpp ('k') | fpdfsdk/src/fpdf_transformpage.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2014 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 "public/fpdf_sysfontinfo.h"
8
9 #include "fpdfsdk/include/fsdk_define.h"
10 #include "fpdfsdk/include/pdfwindow/PWL_FontMap.h"
11
12 class CFX_ExternalFontInfo final : public IFX_SystemFontInfo {
13 public:
14 explicit CFX_ExternalFontInfo(FPDF_SYSFONTINFO* pInfo) : m_pInfo(pInfo) {}
15
16 void Release() override {
17 if (m_pInfo->Release)
18 m_pInfo->Release(m_pInfo);
19 delete this;
20 }
21
22 FX_BOOL EnumFontList(CFX_FontMapper* pMapper) override {
23 if (m_pInfo->EnumFonts) {
24 m_pInfo->EnumFonts(m_pInfo, pMapper);
25 return TRUE;
26 }
27 return FALSE;
28 }
29
30 void* MapFont(int weight,
31 FX_BOOL bItalic,
32 int charset,
33 int pitch_family,
34 const FX_CHAR* family,
35 int& iExact) override {
36 if (m_pInfo->MapFont)
37 return m_pInfo->MapFont(m_pInfo, weight, bItalic, charset, pitch_family,
38 family, &iExact);
39 return NULL;
40 }
41
42 void* GetFont(const FX_CHAR* family) override {
43 if (m_pInfo->GetFont)
44 return m_pInfo->GetFont(m_pInfo, family);
45 return NULL;
46 }
47
48 FX_DWORD GetFontData(void* hFont,
49 FX_DWORD table,
50 uint8_t* buffer,
51 FX_DWORD size) override {
52 if (m_pInfo->GetFontData)
53 return m_pInfo->GetFontData(m_pInfo, hFont, table, buffer, size);
54 return 0;
55 }
56
57 FX_BOOL GetFaceName(void* hFont, CFX_ByteString& name) override {
58 if (!m_pInfo->GetFaceName)
59 return FALSE;
60 FX_DWORD size = m_pInfo->GetFaceName(m_pInfo, hFont, NULL, 0);
61 if (size == 0)
62 return FALSE;
63 char* buffer = FX_Alloc(char, size);
64 size = m_pInfo->GetFaceName(m_pInfo, hFont, buffer, size);
65 name = CFX_ByteString(buffer, size);
66 FX_Free(buffer);
67 return TRUE;
68 }
69
70 FX_BOOL GetFontCharset(void* hFont, int& charset) override {
71 if (m_pInfo->GetFontCharset) {
72 charset = m_pInfo->GetFontCharset(m_pInfo, hFont);
73 return TRUE;
74 }
75 return FALSE;
76 }
77
78 void DeleteFont(void* hFont) override {
79 if (m_pInfo->DeleteFont)
80 m_pInfo->DeleteFont(m_pInfo, hFont);
81 }
82
83 private:
84 ~CFX_ExternalFontInfo() override {}
85
86 FPDF_SYSFONTINFO* const m_pInfo;
87 };
88
89 DLLEXPORT void STDCALL FPDF_AddInstalledFont(void* mapper,
90 const char* name,
91 int charset) {
92 ((CFX_FontMapper*)mapper)->AddInstalledFont(name, charset);
93 }
94
95 DLLEXPORT void STDCALL FPDF_SetSystemFontInfo(FPDF_SYSFONTINFO* pFontInfoExt) {
96 if (pFontInfoExt->version != 1)
97 return;
98
99 CFX_GEModule::Get()->GetFontMgr()->SetSystemFontInfo(
100 new CFX_ExternalFontInfo(pFontInfoExt));
101 }
102
103 DLLEXPORT const FPDF_CharsetFontMap* STDCALL FPDF_GetDefaultTTFMap() {
104 return CPWL_FontMap::defaultTTFMap;
105 }
106
107 struct FPDF_SYSFONTINFO_DEFAULT : public FPDF_SYSFONTINFO {
108 IFX_SystemFontInfo* m_pFontInfo;
109 };
110
111 static void DefaultRelease(struct _FPDF_SYSFONTINFO* pThis) {
112 ((FPDF_SYSFONTINFO_DEFAULT*)pThis)->m_pFontInfo->Release();
113 }
114
115 static void DefaultEnumFonts(struct _FPDF_SYSFONTINFO* pThis, void* pMapper) {
116 ((FPDF_SYSFONTINFO_DEFAULT*)pThis)
117 ->m_pFontInfo->EnumFontList((CFX_FontMapper*)pMapper);
118 }
119
120 static void* DefaultMapFont(struct _FPDF_SYSFONTINFO* pThis,
121 int weight,
122 int bItalic,
123 int charset,
124 int pitch_family,
125 const char* family,
126 int* bExact) {
127 return ((FPDF_SYSFONTINFO_DEFAULT*)pThis)
128 ->m_pFontInfo->MapFont(weight, bItalic, charset, pitch_family, family,
129 *bExact);
130 }
131
132 void* DefaultGetFont(struct _FPDF_SYSFONTINFO* pThis, const char* family) {
133 return ((FPDF_SYSFONTINFO_DEFAULT*)pThis)->m_pFontInfo->GetFont(family);
134 }
135
136 static unsigned long DefaultGetFontData(struct _FPDF_SYSFONTINFO* pThis,
137 void* hFont,
138 unsigned int table,
139 unsigned char* buffer,
140 unsigned long buf_size) {
141 return ((FPDF_SYSFONTINFO_DEFAULT*)pThis)
142 ->m_pFontInfo->GetFontData(hFont, table, buffer, buf_size);
143 }
144
145 static unsigned long DefaultGetFaceName(struct _FPDF_SYSFONTINFO* pThis,
146 void* hFont,
147 char* buffer,
148 unsigned long buf_size) {
149 CFX_ByteString name;
150 if (!((FPDF_SYSFONTINFO_DEFAULT*)pThis)
151 ->m_pFontInfo->GetFaceName(hFont, name))
152 return 0;
153 if (name.GetLength() >= (long)buf_size)
154 return name.GetLength() + 1;
155 FXSYS_strcpy(buffer, name);
156 return name.GetLength() + 1;
157 }
158
159 static int DefaultGetFontCharset(struct _FPDF_SYSFONTINFO* pThis, void* hFont) {
160 int charset;
161 if (!((FPDF_SYSFONTINFO_DEFAULT*)pThis)
162 ->m_pFontInfo->GetFontCharset(hFont, charset))
163 return 0;
164 return charset;
165 }
166
167 static void DefaultDeleteFont(struct _FPDF_SYSFONTINFO* pThis, void* hFont) {
168 ((FPDF_SYSFONTINFO_DEFAULT*)pThis)->m_pFontInfo->DeleteFont(hFont);
169 }
170
171 DLLEXPORT FPDF_SYSFONTINFO* STDCALL FPDF_GetDefaultSystemFontInfo() {
172 IFX_SystemFontInfo* pFontInfo = IFX_SystemFontInfo::CreateDefault(nullptr);
173 if (!pFontInfo)
174 return NULL;
175
176 FPDF_SYSFONTINFO_DEFAULT* pFontInfoExt =
177 FX_Alloc(FPDF_SYSFONTINFO_DEFAULT, 1);
178 pFontInfoExt->DeleteFont = DefaultDeleteFont;
179 pFontInfoExt->EnumFonts = DefaultEnumFonts;
180 pFontInfoExt->GetFaceName = DefaultGetFaceName;
181 pFontInfoExt->GetFont = DefaultGetFont;
182 pFontInfoExt->GetFontCharset = DefaultGetFontCharset;
183 pFontInfoExt->GetFontData = DefaultGetFontData;
184 pFontInfoExt->MapFont = DefaultMapFont;
185 pFontInfoExt->Release = DefaultRelease;
186 pFontInfoExt->version = 1;
187 pFontInfoExt->m_pFontInfo = pFontInfo;
188 return pFontInfoExt;
189 }
OLDNEW
« no previous file with comments | « fpdfsdk/src/fpdf_searchex.cpp ('k') | fpdfsdk/src/fpdf_transformpage.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698