From b4d1b576bccb5ca6cebe29288af014bd0f512af1 Mon Sep 17 00:00:00 2001 From: weili Date: Wed, 10 Aug 2016 14:50:48 -0700 Subject: Use smart pointers for class owned pointers in xfa/fxfa Use smart pointers instead of raw pointer to make memory management easier for classes mainly under xfa/fxfa. Also change the return type of IFGAS_FontMgr::Create() to smart pointer type. BUG=pdfium:518 Review-Url: https://codereview.chromium.org/2227883002 --- xfa/fgas/font/fgas_font.h | 68 ++++++++++++++++++++++------------------------- 1 file changed, 32 insertions(+), 36 deletions(-) (limited to 'xfa/fgas/font/fgas_font.h') diff --git a/xfa/fgas/font/fgas_font.h b/xfa/fgas/font/fgas_font.h index 7fcfbd715b..f91c015dae 100644 --- a/xfa/fgas/font/fgas_font.h +++ b/xfa/fgas/font/fgas_font.h @@ -80,11 +80,13 @@ typedef FX_FONTDESCRIPTOR const* (*FX_LPMatchFont)( FX_LPFONTMATCHPARAMS pParams, const CFX_FontDescriptors& fonts); FX_LPMatchFont FX_GetDefFontMatchor(); + class IFGAS_FontMgr { public: - static IFGAS_FontMgr* Create(FX_LPEnumAllFonts pEnumerator); virtual ~IFGAS_FontMgr() {} - virtual void Release() = 0; + + static std::unique_ptr Create(FX_LPEnumAllFonts pEnumerator); + virtual CFGAS_GEFont* GetDefFontByCodePage( uint16_t wCodePage, uint32_t dwFontStyles, @@ -121,46 +123,40 @@ class IFGAS_FontMgr { class IFGAS_FontMgr { public: - static IFGAS_FontMgr* Create(CFX_FontSourceEnum_File* pFontEnum); virtual ~IFGAS_FontMgr() {} - virtual void Release() = 0; - virtual CFGAS_GEFont* GetDefFontByCodePage( - uint16_t wCodePage, - uint32_t dwFontStyles, - const FX_WCHAR* pszFontFamily = nullptr) = 0; - virtual CFGAS_GEFont* GetDefFontByCharset( - uint8_t nCharset, - uint32_t dwFontStyles, - const FX_WCHAR* pszFontFamily = nullptr) = 0; - virtual CFGAS_GEFont* GetDefFontByUnicode( - FX_WCHAR wUnicode, - uint32_t dwFontStyles, - const FX_WCHAR* pszFontFamily = nullptr) = 0; - virtual CFGAS_GEFont* GetDefFontByLanguage( - uint16_t wLanguage, - uint32_t dwFontStyles, - const FX_WCHAR* pszFontFamily = nullptr) = 0; - virtual CFGAS_GEFont* GetFontByCodePage( - uint16_t wCodePage, - uint32_t dwFontStyles, - const FX_WCHAR* pszFontFamily = nullptr) = 0; + + static std::unique_ptr Create( + CFX_FontSourceEnum_File* pFontEnum); + + virtual CFGAS_GEFont* GetDefFontByCodePage(uint16_t wCodePage, + uint32_t dwFontStyles, + const FX_WCHAR* pszFontFamily) = 0; + virtual CFGAS_GEFont* GetDefFontByCharset(uint8_t nCharset, + uint32_t dwFontStyles, + const FX_WCHAR* pszFontFamily) = 0; + virtual CFGAS_GEFont* GetDefFontByUnicode(FX_WCHAR wUnicode, + uint32_t dwFontStyles, + const FX_WCHAR* pszFontFamily) = 0; + virtual CFGAS_GEFont* GetDefFontByLanguage(uint16_t wLanguage, + uint32_t dwFontStyles, + const FX_WCHAR* pszFontFamily) = 0; + virtual CFGAS_GEFont* GetFontByCodePage(uint16_t wCodePage, + uint32_t dwFontStyles, + const FX_WCHAR* pszFontFamily) = 0; inline CFGAS_GEFont* LoadFont(const FX_WCHAR* pszFontFamily, uint32_t dwFontStyles, uint16_t wCodePage) { return GetFontByCodePage(wCodePage, dwFontStyles, pszFontFamily); } - virtual CFGAS_GEFont* GetFontByCharset( - uint8_t nCharset, - uint32_t dwFontStyles, - const FX_WCHAR* pszFontFamily = nullptr) = 0; - virtual CFGAS_GEFont* GetFontByUnicode( - FX_WCHAR wUnicode, - uint32_t dwFontStyles, - const FX_WCHAR* pszFontFamily = nullptr) = 0; - virtual CFGAS_GEFont* GetFontByLanguage( - uint16_t wLanguage, - uint32_t dwFontStyles, - const FX_WCHAR* pszFontFamily = nullptr) = 0; + virtual CFGAS_GEFont* GetFontByCharset(uint8_t nCharset, + uint32_t dwFontStyles, + const FX_WCHAR* pszFontFamily) = 0; + virtual CFGAS_GEFont* GetFontByUnicode(FX_WCHAR wUnicode, + uint32_t dwFontStyles, + const FX_WCHAR* pszFontFamily) = 0; + virtual CFGAS_GEFont* GetFontByLanguage(uint16_t wLanguage, + uint32_t dwFontStyles, + const FX_WCHAR* pszFontFamily) = 0; virtual void ClearFontCache() = 0; virtual void RemoveFont(CFGAS_GEFont* pFont) = 0; }; -- cgit v1.2.3