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

Unified Diff: xfa/fgas/font/fgas_gefont.cpp

Issue 2002673002: Use std::map for CFX_GEFont::m_FontMapper (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « xfa/fgas/font/fgas_gefont.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: xfa/fgas/font/fgas_gefont.cpp
diff --git a/xfa/fgas/font/fgas_gefont.cpp b/xfa/fgas/font/fgas_gefont.cpp
index c877080ec1d592c8d76b4d77d16e4a53a5ee6853..6453a591b59aa20d940fac56e962bf4cb76bdbac 100644
--- a/xfa/fgas/font/fgas_gefont.cpp
+++ b/xfa/fgas/font/fgas_gefont.cpp
@@ -105,8 +105,7 @@ CFX_GEFont::CFX_GEFont(IFX_FontMgr* pFontMgr)
m_pRectArray(NULL),
m_pBBoxMap(NULL),
m_pProvider(NULL),
- m_wCharSet(0xFFFF),
- m_FontMapper(16) {
+ m_wCharSet(0xFFFF) {
}
CFX_GEFont::CFX_GEFont(const CFX_GEFont& src, uint32_t dwFontStyles)
@@ -126,11 +125,9 @@ CFX_GEFont::CFX_GEFont(const CFX_GEFont& src, uint32_t dwFontStyles)
m_pRectArray(NULL),
m_pBBoxMap(NULL),
m_pProvider(NULL),
- m_wCharSet(0xFFFF),
- m_FontMapper(16) {
+ m_wCharSet(0xFFFF) {
+ ASSERT(src.m_pFont);
m_pFont = new CFX_Font;
- ASSERT(m_pFont != NULL);
- ASSERT(src.m_pFont != NULL);
m_pFont->LoadClone(src.m_pFont);
CFX_SubstFont* pSubst = m_pFont->GetSubstFont();
if (!pSubst) {
@@ -150,7 +147,7 @@ CFX_GEFont::~CFX_GEFont() {
m_SubstFonts[i]->Release();
m_SubstFonts.RemoveAll();
- m_FontMapper.RemoveAll();
+ m_FontMapper.clear();
if (m_pFileRead)
m_pFileRead->Release();
@@ -480,23 +477,22 @@ int32_t CFX_GEFont::GetGlyphIndex(FX_WCHAR wUnicode,
if (wBitField >= 128) {
return 0xFFFF;
}
- IFX_Font* pFont = NULL;
- m_FontMapper.Lookup((void*)(uintptr_t)wUnicode, (void*&)pFont);
- if (pFont != NULL && pFont != (IFX_Font*)this) {
+ auto it = m_FontMapper.find(wUnicode);
+ IFX_Font* pFont = it != m_FontMapper.end() ? it->second : nullptr;
+ if (pFont && pFont != this) {
iGlyphIndex =
((CFX_GEFont*)pFont)->GetGlyphIndex(wUnicode, FALSE, NULL, bCharCode);
if (iGlyphIndex != 0xFFFF) {
int32_t i = m_SubstFonts.Find(pFont);
if (i > -1) {
iGlyphIndex |= ((i + 1) << 24);
- if (ppFont != NULL) {
+ if (ppFont)
*ppFont = pFont;
- }
return iGlyphIndex;
}
}
}
- if (m_pFontMgr != NULL && bRecursive) {
+ if (m_pFontMgr && bRecursive) {
CFX_WideString wsFamily;
GetFamilyName(wsFamily);
#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
@@ -505,25 +501,23 @@ int32_t CFX_GEFont::GetGlyphIndex(FX_WCHAR wUnicode,
#else
IFX_Font* pFont = m_pFontMgr->GetFontByUnicode(wUnicode, GetFontStyles(),
wsFamily.c_str());
- if (NULL == pFont) {
+ if (!pFont)
pFont = m_pFontMgr->GetFontByUnicode(wUnicode, GetFontStyles(), NULL);
- }
#endif
- if (pFont != NULL) {
- if (pFont == (IFX_Font*)this) {
+ if (pFont) {
+ if (pFont == this) {
pFont->Release();
return 0xFFFF;
}
- m_FontMapper.SetAt((void*)(uintptr_t)wUnicode, (void*)pFont);
+ m_FontMapper[wUnicode] = pFont;
int32_t i = m_SubstFonts.GetSize();
m_SubstFonts.Add(pFont);
iGlyphIndex =
((CFX_GEFont*)pFont)->GetGlyphIndex(wUnicode, FALSE, NULL, bCharCode);
if (iGlyphIndex != 0xFFFF) {
iGlyphIndex |= ((i + 1) << 24);
- if (ppFont != NULL) {
+ if (ppFont)
*ppFont = pFont;
- }
return iGlyphIndex;
}
}
« no previous file with comments | « xfa/fgas/font/fgas_gefont.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698