From cb88fa33339ca04c89f340b457f4960d0d4185a2 Mon Sep 17 00:00:00 2001 From: Lei Zhang Date: Fri, 14 Sep 2018 22:38:30 +0000 Subject: Use fxcrt::MaybeOwned in CFGAS_GEFont. Change-Id: Ie1f4763e37832475a60c55b26263405e0bbf09b3 Reviewed-on: https://pdfium-review.googlesource.com/42510 Commit-Queue: Lei Zhang Reviewed-by: Tom Sepez --- xfa/fgas/font/cfgas_gefont.cpp | 18 +++++------------- xfa/fgas/font/cfgas_gefont.h | 7 +++---- 2 files changed, 8 insertions(+), 17 deletions(-) diff --git a/xfa/fgas/font/cfgas_gefont.cpp b/xfa/fgas/font/cfgas_gefont.cpp index 1c3d88beab..6f33eb50fe 100644 --- a/xfa/fgas/font/cfgas_gefont.cpp +++ b/xfa/fgas/font/cfgas_gefont.cpp @@ -55,11 +55,7 @@ RetainPtr CFGAS_GEFont::LoadFont( CFGAS_GEFont::CFGAS_GEFont(CFGAS_FontMgr* pFontMgr) : m_pFontMgr(pFontMgr) {} -CFGAS_GEFont::~CFGAS_GEFont() { - m_pFontEncoding.reset(); // Has an UnownedPtr to |m_pFont|. - if (!m_bExternalFont) - delete m_pFont; -} +CFGAS_GEFont::~CFGAS_GEFont() = default; #if _FX_PLATFORM_ == _FX_PLATFORM_WINDOWS_ bool CFGAS_GEFont::LoadFontInternal(const wchar_t* pszFontFamily, @@ -73,7 +69,7 @@ bool CFGAS_GEFont::LoadFontInternal(const wchar_t* pszFontFamily, int32_t iWeight = FontStyleIsBold(dwFontStyles) ? FXFONT_FW_BOLD : FXFONT_FW_NORMAL; - m_pFont = new CFX_Font; + m_pFont = pdfium::MakeUnique(); if (FontStyleIsItalic(dwFontStyles) && FontStyleIsBold(dwFontStyles)) csFontFamily += ",BoldItalic"; else if (FontStyleIsBold(dwFontStyles)) @@ -83,9 +79,7 @@ bool CFGAS_GEFont::LoadFontInternal(const wchar_t* pszFontFamily, m_pFont->LoadSubst(csFontFamily, true, dwFontStyles, iWeight, 0, wCodePage, false); - if (!m_pFont->GetFace()) - return false; - return InitFont(); + return m_pFont->GetFace() && InitFont(); } #endif // _FX_PLATFORM_ == _FX_PLATFORM_WINDOWS_ @@ -94,7 +88,6 @@ bool CFGAS_GEFont::LoadFontInternal(CFX_Font* pExternalFont) { return false; m_pFont = pExternalFont; - m_bExternalFont = true; return InitFont(); } @@ -102,8 +95,7 @@ bool CFGAS_GEFont::LoadFontInternal(std::unique_ptr pInternalFont) { if (m_pFont || !pInternalFont) return false; - m_pFont = pInternalFont.release(); - m_bExternalFont = false; + m_pFont = std::move(pInternalFont); return InitFont(); } @@ -114,7 +106,7 @@ bool CFGAS_GEFont::InitFont() { if (m_pFontEncoding) return true; - m_pFontEncoding = FX_CreateFontEncodingEx(m_pFont, FXFM_ENCODING_NONE); + m_pFontEncoding = FX_CreateFontEncodingEx(m_pFont.Get(), FXFM_ENCODING_NONE); return !!m_pFontEncoding; } diff --git a/xfa/fgas/font/cfgas_gefont.h b/xfa/fgas/font/cfgas_gefont.h index 407a232595..08164f7d5f 100644 --- a/xfa/fgas/font/cfgas_gefont.h +++ b/xfa/fgas/font/cfgas_gefont.h @@ -13,8 +13,8 @@ #include #include "core/fxcrt/fx_memory.h" +#include "core/fxcrt/maybe_owned.h" #include "core/fxcrt/retain_ptr.h" -#include "core/fxcrt/unowned_ptr.h" #include "xfa/fgas/font/cfgas_fontmgr.h" #include "xfa/fgas/font/cfgas_pdffontmgr.h" @@ -45,7 +45,7 @@ class CFGAS_GEFont final : public Retainable { bool GetBBox(FX_RECT* bbox); RetainPtr GetSubstFont(int32_t iGlyphIndex); - CFX_Font* GetDevFont() const { return m_pFont; } + CFX_Font* GetDevFont() const { return m_pFont.Get(); } void SetLogicalFontStyle(uint32_t dwLogFontStyle) { m_bUseLogFontStyle = true; @@ -71,9 +71,8 @@ class CFGAS_GEFont final : public Retainable { WideString GetFamilyName() const; bool m_bUseLogFontStyle = false; - bool m_bExternalFont = false; uint32_t m_dwLogFontStyle = 0; - CFX_Font* m_pFont = nullptr; + MaybeOwned m_pFont; // Must come before |m_pFontEncoding|. CFGAS_FontMgr::ObservedPtr const m_pFontMgr; std::unique_ptr m_pFontEncoding; std::map m_CharWidthMap; -- cgit v1.2.3