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

Side by Side Diff: core/fxge/ge/fx_ge_font.cpp

Issue 1832173003: Remove FX_DWORD from core/ and delete definition (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: 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 | « core/fxge/ge/fx_ge_device.cpp ('k') | core/fxge/ge/fx_ge_fontmap.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "core/fxge/ge/fx_text_int.h" 7 #include "core/fxge/ge/fx_text_int.h"
8 #include "core/include/fxge/fx_freetype.h" 8 #include "core/include/fxge/fx_freetype.h"
9 #include "core/include/fxge/fx_ge.h" 9 #include "core/include/fxge/fx_ge.h"
10 10
11 #define EM_ADJUST(em, a) (em == 0 ? (a) : (a)*1000 / em) 11 #define EM_ADJUST(em, a) (em == 0 ? (a) : (a)*1000 / em)
12 12
13 namespace { 13 namespace {
14 14
15 #ifdef PDF_ENABLE_XFA 15 #ifdef PDF_ENABLE_XFA
16 const FX_DWORD g_EncodingID[] = { 16 const uint32_t g_EncodingID[] = {
17 FXFM_ENCODING_MS_SYMBOL, FXFM_ENCODING_UNICODE, 17 FXFM_ENCODING_MS_SYMBOL, FXFM_ENCODING_UNICODE,
18 FXFM_ENCODING_MS_SJIS, FXFM_ENCODING_MS_GB2312, 18 FXFM_ENCODING_MS_SJIS, FXFM_ENCODING_MS_GB2312,
19 FXFM_ENCODING_MS_BIG5, FXFM_ENCODING_MS_WANSUNG, 19 FXFM_ENCODING_MS_BIG5, FXFM_ENCODING_MS_WANSUNG,
20 FXFM_ENCODING_MS_JOHAB, FXFM_ENCODING_ADOBE_STANDARD, 20 FXFM_ENCODING_MS_JOHAB, FXFM_ENCODING_ADOBE_STANDARD,
21 FXFM_ENCODING_ADOBE_EXPERT, FXFM_ENCODING_ADOBE_CUSTOM, 21 FXFM_ENCODING_ADOBE_EXPERT, FXFM_ENCODING_ADOBE_CUSTOM,
22 FXFM_ENCODING_ADOBE_LATIN_1, FXFM_ENCODING_OLD_LATIN_2, 22 FXFM_ENCODING_ADOBE_LATIN_1, FXFM_ENCODING_OLD_LATIN_2,
23 FXFM_ENCODING_APPLE_ROMAN, 23 FXFM_ENCODING_APPLE_ROMAN,
24 }; 24 };
25 25
26 CFX_UnicodeEncodingEx* _FXFM_CreateFontEncoding(CFX_Font* pFont, 26 CFX_UnicodeEncodingEx* _FXFM_CreateFontEncoding(CFX_Font* pFont,
27 FX_DWORD nEncodingID) { 27 uint32_t nEncodingID) {
28 if (FXFT_Select_Charmap(pFont->GetFace(), nEncodingID)) 28 if (FXFT_Select_Charmap(pFont->GetFace(), nEncodingID))
29 return nullptr; 29 return nullptr;
30 return new CFX_UnicodeEncodingEx(pFont, nEncodingID); 30 return new CFX_UnicodeEncodingEx(pFont, nEncodingID);
31 } 31 }
32 #endif // PDF_ENABLE_XFA 32 #endif // PDF_ENABLE_XFA
33 33
34 FXFT_Face FT_LoadFont(const uint8_t* pData, int size) { 34 FXFT_Face FT_LoadFont(const uint8_t* pData, int size) {
35 return CFX_GEModule::Get()->GetFontMgr()->GetFixedFace(pData, size, 0); 35 return CFX_GEModule::Get()->GetFontMgr()->GetFixedFace(pData, size, 0);
36 } 36 }
37 37
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 #if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ 120 #if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
121 ReleasePlatformResource(); 121 ReleasePlatformResource();
122 #endif 122 #endif
123 } 123 }
124 void CFX_Font::DeleteFace() { 124 void CFX_Font::DeleteFace() {
125 FXFT_Done_Face(m_Face); 125 FXFT_Done_Face(m_Face);
126 m_Face = NULL; 126 m_Face = NULL;
127 } 127 }
128 void CFX_Font::LoadSubst(const CFX_ByteString& face_name, 128 void CFX_Font::LoadSubst(const CFX_ByteString& face_name,
129 FX_BOOL bTrueType, 129 FX_BOOL bTrueType,
130 FX_DWORD flags, 130 uint32_t flags,
131 int weight, 131 int weight,
132 int italic_angle, 132 int italic_angle,
133 int CharsetCP, 133 int CharsetCP,
134 FX_BOOL bVertical) { 134 FX_BOOL bVertical) {
135 m_bEmbedded = FALSE; 135 m_bEmbedded = FALSE;
136 m_bVertical = bVertical; 136 m_bVertical = bVertical;
137 m_pSubstFont = new CFX_SubstFont; 137 m_pSubstFont = new CFX_SubstFont;
138 m_Face = CFX_GEModule::Get()->GetFontMgr()->FindSubstFont( 138 m_Face = CFX_GEModule::Get()->GetFontMgr()->FindSubstFont(
139 face_name, bTrueType, flags, weight, italic_angle, CharsetCP, 139 face_name, bTrueType, flags, weight, italic_angle, CharsetCP,
140 m_pSubstFont); 140 m_pSubstFont);
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 return FALSE; 206 return FALSE;
207 207
208 if (pFaceCount) 208 if (pFaceCount)
209 *pFaceCount = (int)m_Face->num_faces; 209 *pFaceCount = (int)m_Face->num_faces;
210 m_pOwnedStream = stream; 210 m_pOwnedStream = stream;
211 FXFT_Set_Pixel_Sizes(m_Face, 0, 64); 211 FXFT_Set_Pixel_Sizes(m_Face, 0, 64);
212 return TRUE; 212 return TRUE;
213 } 213 }
214 #endif // PDF_ENABLE_XFA 214 #endif // PDF_ENABLE_XFA
215 215
216 int CFX_Font::GetGlyphWidth(FX_DWORD glyph_index) { 216 int CFX_Font::GetGlyphWidth(uint32_t glyph_index) {
217 if (!m_Face) { 217 if (!m_Face) {
218 return 0; 218 return 0;
219 } 219 }
220 if (m_pSubstFont && (m_pSubstFont->m_SubstFlags & FXFONT_SUBST_MM)) { 220 if (m_pSubstFont && (m_pSubstFont->m_SubstFlags & FXFONT_SUBST_MM)) {
221 AdjustMMParams(glyph_index, 0, 0); 221 AdjustMMParams(glyph_index, 0, 0);
222 } 222 }
223 int err = FXFT_Load_Glyph( 223 int err = FXFT_Load_Glyph(
224 m_Face, glyph_index, 224 m_Face, glyph_index,
225 FXFT_LOAD_NO_SCALE | FXFT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH); 225 FXFT_LOAD_NO_SCALE | FXFT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH);
226 if (err) { 226 if (err) {
227 return 0; 227 return 0;
228 } 228 }
229 int width = EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), 229 int width = EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face),
230 FXFT_Get_Glyph_HoriAdvance(m_Face)); 230 FXFT_Get_Glyph_HoriAdvance(m_Face));
231 return width; 231 return width;
232 } 232 }
233 233
234 FX_BOOL CFX_Font::LoadEmbedded(const uint8_t* data, FX_DWORD size) { 234 FX_BOOL CFX_Font::LoadEmbedded(const uint8_t* data, uint32_t size) {
235 m_pFontDataAllocation = FX_Alloc(uint8_t, size); 235 m_pFontDataAllocation = FX_Alloc(uint8_t, size);
236 FXSYS_memcpy(m_pFontDataAllocation, data, size); 236 FXSYS_memcpy(m_pFontDataAllocation, data, size);
237 m_Face = FT_LoadFont(m_pFontDataAllocation, size); 237 m_Face = FT_LoadFont(m_pFontDataAllocation, size);
238 m_pFontData = m_pFontDataAllocation; 238 m_pFontData = m_pFontDataAllocation;
239 m_bEmbedded = TRUE; 239 m_bEmbedded = TRUE;
240 m_dwSize = size; 240 m_dwSize = size;
241 return m_Face != NULL; 241 return m_Face != NULL;
242 } 242 }
243 243
244 FX_BOOL CFX_Font::IsTTFont() const { 244 FX_BOOL CFX_Font::IsTTFont() const {
245 if (!m_Face) 245 if (!m_Face)
246 return FALSE; 246 return FALSE;
247 return FXFT_Is_Face_TT_OT(m_Face) == FXFT_FACE_FLAG_SFNT; 247 return FXFT_Is_Face_TT_OT(m_Face) == FXFT_FACE_FLAG_SFNT;
248 } 248 }
249 249
250 int CFX_Font::GetAscent() const { 250 int CFX_Font::GetAscent() const {
251 if (!m_Face) 251 if (!m_Face)
252 return 0; 252 return 0;
253 return EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), 253 return EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face),
254 FXFT_Get_Face_Ascender(m_Face)); 254 FXFT_Get_Face_Ascender(m_Face));
255 } 255 }
256 256
257 int CFX_Font::GetDescent() const { 257 int CFX_Font::GetDescent() const {
258 if (!m_Face) 258 if (!m_Face)
259 return 0; 259 return 0;
260 return EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), 260 return EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face),
261 FXFT_Get_Face_Descender(m_Face)); 261 FXFT_Get_Face_Descender(m_Face));
262 } 262 }
263 263
264 FX_BOOL CFX_Font::GetGlyphBBox(FX_DWORD glyph_index, FX_RECT& bbox) { 264 FX_BOOL CFX_Font::GetGlyphBBox(uint32_t glyph_index, FX_RECT& bbox) {
265 if (!m_Face) 265 if (!m_Face)
266 return FALSE; 266 return FALSE;
267 267
268 if (FXFT_Is_Face_Tricky(m_Face)) { 268 if (FXFT_Is_Face_Tricky(m_Face)) {
269 int error = FXFT_Set_Char_Size(m_Face, 0, 1000 * 64, 72, 72); 269 int error = FXFT_Set_Char_Size(m_Face, 0, 1000 * 64, 72, 72);
270 if (error) { 270 if (error) {
271 return FALSE; 271 return FALSE;
272 } 272 }
273 error = FXFT_Load_Glyph(m_Face, glyph_index, 273 error = FXFT_Load_Glyph(m_Face, glyph_index,
274 FXFT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH); 274 FXFT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH);
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
441 return 0; 441 return 0;
442 442
443 return EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face), 443 return EM_ADJUST(FXFT_Get_Face_UnitsPerEM(m_Face),
444 FXFT_Get_Face_UnderLineThickness(m_Face)); 444 FXFT_Get_Face_UnderLineThickness(m_Face));
445 } 445 }
446 446
447 CFX_UnicodeEncoding::CFX_UnicodeEncoding(CFX_Font* pFont) : m_pFont(pFont) {} 447 CFX_UnicodeEncoding::CFX_UnicodeEncoding(CFX_Font* pFont) : m_pFont(pFont) {}
448 448
449 CFX_UnicodeEncoding::~CFX_UnicodeEncoding() {} 449 CFX_UnicodeEncoding::~CFX_UnicodeEncoding() {}
450 450
451 FX_DWORD CFX_UnicodeEncoding::GlyphFromCharCode(FX_DWORD charcode) { 451 uint32_t CFX_UnicodeEncoding::GlyphFromCharCode(uint32_t charcode) {
452 FXFT_Face face = m_pFont->GetFace(); 452 FXFT_Face face = m_pFont->GetFace();
453 if (!face) 453 if (!face)
454 return charcode; 454 return charcode;
455 455
456 if (FXFT_Select_Charmap(face, FXFT_ENCODING_UNICODE) == 0) 456 if (FXFT_Select_Charmap(face, FXFT_ENCODING_UNICODE) == 0)
457 return FXFT_Get_Char_Index(face, charcode); 457 return FXFT_Get_Char_Index(face, charcode);
458 458
459 if (m_pFont->GetSubstFont() && m_pFont->GetSubstFont()->m_Charset == 2) { 459 if (m_pFont->GetSubstFont() && m_pFont->GetSubstFont()->m_Charset == 2) {
460 FX_DWORD index = 0; 460 uint32_t index = 0;
461 if (FXFT_Select_Charmap(face, FXFT_ENCODING_MS_SYMBOL) == 0) 461 if (FXFT_Select_Charmap(face, FXFT_ENCODING_MS_SYMBOL) == 0)
462 index = FXFT_Get_Char_Index(face, charcode); 462 index = FXFT_Get_Char_Index(face, charcode);
463 if (!index && !FXFT_Select_Charmap(face, FXFT_ENCODING_APPLE_ROMAN)) 463 if (!index && !FXFT_Select_Charmap(face, FXFT_ENCODING_APPLE_ROMAN))
464 return FXFT_Get_Char_Index(face, charcode); 464 return FXFT_Get_Char_Index(face, charcode);
465 } 465 }
466 return charcode; 466 return charcode;
467 } 467 }
468 468
469 #ifdef PDF_ENABLE_XFA 469 #ifdef PDF_ENABLE_XFA
470 CFX_UnicodeEncodingEx::CFX_UnicodeEncodingEx(CFX_Font* pFont, 470 CFX_UnicodeEncodingEx::CFX_UnicodeEncodingEx(CFX_Font* pFont,
471 FX_DWORD EncodingID) 471 uint32_t EncodingID)
472 : CFX_UnicodeEncoding(pFont), m_nEncodingID(EncodingID) {} 472 : CFX_UnicodeEncoding(pFont), m_nEncodingID(EncodingID) {}
473 473
474 CFX_UnicodeEncodingEx::~CFX_UnicodeEncodingEx() {} 474 CFX_UnicodeEncodingEx::~CFX_UnicodeEncodingEx() {}
475 475
476 FX_DWORD CFX_UnicodeEncodingEx::GlyphFromCharCode(FX_DWORD charcode) { 476 uint32_t CFX_UnicodeEncodingEx::GlyphFromCharCode(uint32_t charcode) {
477 FXFT_Face face = m_pFont->GetFace(); 477 FXFT_Face face = m_pFont->GetFace();
478 FT_UInt nIndex = FXFT_Get_Char_Index(face, charcode); 478 FT_UInt nIndex = FXFT_Get_Char_Index(face, charcode);
479 if (nIndex > 0) { 479 if (nIndex > 0) {
480 return nIndex; 480 return nIndex;
481 } 481 }
482 int nmaps = FXFT_Get_Face_CharmapCount(face); 482 int nmaps = FXFT_Get_Face_CharmapCount(face);
483 int m = 0; 483 int m = 0;
484 while (m < nmaps) { 484 while (m < nmaps) {
485 FX_DWORD nEncodingID = 485 uint32_t nEncodingID =
486 FXFT_Get_Charmap_Encoding(FXFT_Get_Face_Charmaps(face)[m++]); 486 FXFT_Get_Charmap_Encoding(FXFT_Get_Face_Charmaps(face)[m++]);
487 if (m_nEncodingID == nEncodingID) { 487 if (m_nEncodingID == nEncodingID) {
488 continue; 488 continue;
489 } 489 }
490 int error = FXFT_Select_Charmap(face, nEncodingID); 490 int error = FXFT_Select_Charmap(face, nEncodingID);
491 if (error) { 491 if (error) {
492 continue; 492 continue;
493 } 493 }
494 nIndex = FXFT_Get_Char_Index(face, charcode); 494 nIndex = FXFT_Get_Char_Index(face, charcode);
495 if (nIndex > 0) { 495 if (nIndex > 0) {
496 m_nEncodingID = nEncodingID; 496 m_nEncodingID = nEncodingID;
497 return nIndex; 497 return nIndex;
498 } 498 }
499 } 499 }
500 FXFT_Select_Charmap(face, m_nEncodingID); 500 FXFT_Select_Charmap(face, m_nEncodingID);
501 return 0; 501 return 0;
502 } 502 }
503 503
504 FX_DWORD CFX_UnicodeEncodingEx::CharCodeFromUnicode(FX_WCHAR Unicode) const { 504 uint32_t CFX_UnicodeEncodingEx::CharCodeFromUnicode(FX_WCHAR Unicode) const {
505 if (m_nEncodingID == FXFM_ENCODING_UNICODE || 505 if (m_nEncodingID == FXFM_ENCODING_UNICODE ||
506 m_nEncodingID == FXFM_ENCODING_MS_SYMBOL) { 506 m_nEncodingID == FXFM_ENCODING_MS_SYMBOL) {
507 return Unicode; 507 return Unicode;
508 } 508 }
509 FXFT_Face face = m_pFont->GetFace(); 509 FXFT_Face face = m_pFont->GetFace();
510 int nmaps = FXFT_Get_Face_CharmapCount(face); 510 int nmaps = FXFT_Get_Face_CharmapCount(face);
511 for (int i = 0; i < nmaps; i++) { 511 for (int i = 0; i < nmaps; i++) {
512 int nEncodingID = 512 int nEncodingID =
513 FXFT_Get_Charmap_Encoding(FXFT_Get_Face_Charmaps(face)[i]); 513 FXFT_Get_Charmap_Encoding(FXFT_Get_Face_Charmaps(face)[i]);
514 if (nEncodingID == FXFM_ENCODING_UNICODE || 514 if (nEncodingID == FXFM_ENCODING_UNICODE ||
515 nEncodingID == FXFM_ENCODING_MS_SYMBOL) { 515 nEncodingID == FXFM_ENCODING_MS_SYMBOL) {
516 return Unicode; 516 return Unicode;
517 } 517 }
518 } 518 }
519 return static_cast<FX_DWORD>(-1); 519 return static_cast<uint32_t>(-1);
520 } 520 }
521 521
522 CFX_UnicodeEncodingEx* FX_CreateFontEncodingEx(CFX_Font* pFont, 522 CFX_UnicodeEncodingEx* FX_CreateFontEncodingEx(CFX_Font* pFont,
523 FX_DWORD nEncodingID) { 523 uint32_t nEncodingID) {
524 if (!pFont || !pFont->GetFace()) 524 if (!pFont || !pFont->GetFace())
525 return nullptr; 525 return nullptr;
526 526
527 if (nEncodingID != FXFM_ENCODING_NONE) 527 if (nEncodingID != FXFM_ENCODING_NONE)
528 return _FXFM_CreateFontEncoding(pFont, nEncodingID); 528 return _FXFM_CreateFontEncoding(pFont, nEncodingID);
529 529
530 for (size_t i = 0; i < FX_ArraySize(g_EncodingID); ++i) { 530 for (size_t i = 0; i < FX_ArraySize(g_EncodingID); ++i) {
531 CFX_UnicodeEncodingEx* pFontEncoding = 531 CFX_UnicodeEncodingEx* pFontEncoding =
532 _FXFM_CreateFontEncoding(pFont, g_EncodingID[i]); 532 _FXFM_CreateFontEncoding(pFont, g_EncodingID[i]);
533 if (pFontEncoding) { 533 if (pFontEncoding) {
534 return pFontEncoding; 534 return pFontEncoding;
535 } 535 }
536 } 536 }
537 return NULL; 537 return NULL;
538 } 538 }
539 #endif // PDF_ENABLE_XFA 539 #endif // PDF_ENABLE_XFA
OLDNEW
« no previous file with comments | « core/fxge/ge/fx_ge_device.cpp ('k') | core/fxge/ge/fx_ge_fontmap.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698