summaryrefslogtreecommitdiff
path: root/core/fxge/ge/cfx_folderfontinfo.cpp
diff options
context:
space:
mode:
authorTom Sepez <tsepez@chromium.org>2017-04-21 15:42:49 -0700
committerChromium commit bot <commit-bot@chromium.org>2017-04-21 23:11:20 +0000
commit25694831670ef6172b1b9b71359a6c192e26da20 (patch)
tree871a77ab2298d89dd7e4f897d8ae5e8f60c8e42a /core/fxge/ge/cfx_folderfontinfo.cpp
parent350d2d904a3e6bd1e96542c5e223d301d9bdbe6a (diff)
downloadpdfium-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.cpp24
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,