diff options
author | Tom Sepez <tsepez@chromium.org> | 2017-04-21 15:42:49 -0700 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-04-21 23:11:20 +0000 |
commit | 25694831670ef6172b1b9b71359a6c192e26da20 (patch) | |
tree | 871a77ab2298d89dd7e4f897d8ae5e8f60c8e42a /core/fxge/ge/cfx_folderfontinfo.cpp | |
parent | 350d2d904a3e6bd1e96542c5e223d301d9bdbe6a (diff) | |
download | pdfium-25694831670ef6172b1b9b71359a6c192e26da20.tar.xz |
Use unique_ptr in CFX_FolderFontInfo::m_FontListchromium/3079
Avoid a string duplication along the way.
Change-Id: I866c34ad1afb20b9578aeb7cabeb8a185674c884
Reviewed-on: https://pdfium-review.googlesource.com/4437
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Diffstat (limited to 'core/fxge/ge/cfx_folderfontinfo.cpp')
-rw-r--r-- | core/fxge/ge/cfx_folderfontinfo.cpp | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/core/fxge/ge/cfx_folderfontinfo.cpp b/core/fxge/ge/cfx_folderfontinfo.cpp index d46c7b5fef..a13af068e8 100644 --- a/core/fxge/ge/cfx_folderfontinfo.cpp +++ b/core/fxge/ge/cfx_folderfontinfo.cpp @@ -7,11 +7,12 @@ #include "core/fxge/ge/cfx_folderfontinfo.h" #include <limits> +#include <utility> #include "core/fxcrt/fx_codepage.h" #include "core/fxge/cfx_fontmapper.h" #include "core/fxge/fx_font.h" - +#include "third_party/base/ptr_util.h" #include "third_party/base/stl_util.h" namespace { @@ -102,13 +103,10 @@ int32_t GetSimilarValue(int weight, CFX_FolderFontInfo::CFX_FolderFontInfo() {} -CFX_FolderFontInfo::~CFX_FolderFontInfo() { - for (const auto& pair : m_FontList) - delete pair.second; -} +CFX_FolderFontInfo::~CFX_FolderFontInfo() {} -void CFX_FolderFontInfo::AddPath(const CFX_ByteStringC& path) { - m_PathList.push_back(CFX_ByteString(path)); +void CFX_FolderFontInfo::AddPath(const CFX_ByteString& path) { + m_PathList.push_back(path); } bool CFX_FolderFontInfo::EnumFontList(CFX_FontMapper* pMapper) { @@ -222,8 +220,8 @@ void CFX_FolderFontInfo::ReportFace(const CFX_ByteString& path, if (pdfium::ContainsKey(m_FontList, facename)) return; - CFX_FontFaceInfo* pInfo = - new CFX_FontFaceInfo(path, facename, tables, offset, filesize); + auto pInfo = pdfium::MakeUnique<CFX_FontFaceInfo>(path, facename, tables, + offset, filesize); CFX_ByteString os2 = FPDF_LoadTableFromTT(pFile, tables.raw_str(), nTables, 0x4f532f32); if (os2.GetLength() >= 86) { @@ -260,7 +258,7 @@ void CFX_FolderFontInfo::ReportFace(const CFX_ByteString& path, if (facename.Find("Serif") > -1) pInfo->m_Styles |= FXFONT_SERIF; - m_FontList[facename] = pInfo; + m_FontList[facename] = std::move(pInfo); } void* CFX_FolderFontInfo::GetSubstFont(const CFX_ByteString& face) { @@ -281,17 +279,19 @@ void* CFX_FolderFontInfo::FindFont(int weight, CFX_FontFaceInfo* pFind = nullptr; if (charset == FX_CHARSET_ANSI && (pitch_family & FXFONT_FF_FIXEDPITCH)) return GetFont("Courier New"); + uint32_t charset_flag = GetCharset(charset); int32_t iBestSimilar = 0; for (const auto& it : m_FontList) { const CFX_ByteString& bsName = it.first; - CFX_FontFaceInfo* pFont = it.second; + CFX_FontFaceInfo* pFont = it.second.get(); if (!(pFont->m_Charsets & charset_flag) && charset != FX_CHARSET_Default) continue; int32_t index = bsName.Find(family); if (bMatchName && index < 0) continue; + int32_t iSimilarValue = GetSimilarValue(weight, bItalic, pitch_family, pFont->m_Styles); if (iSimilarValue > iBestSimilar) { @@ -322,7 +322,7 @@ void* CFX_FolderFontInfo::MapFontByUnicode(uint32_t dwUnicode, void* CFX_FolderFontInfo::GetFont(const char* face) { auto it = m_FontList.find(face); - return it != m_FontList.end() ? it->second : nullptr; + return it != m_FontList.end() ? it->second.get() : nullptr; } uint32_t CFX_FolderFontInfo::GetFontData(void* hFont, |