Index: xfa/fgas/font/fgas_stdfontmgr.cpp |
diff --git a/xfa/fgas/font/fgas_stdfontmgr.cpp b/xfa/fgas/font/fgas_stdfontmgr.cpp |
index 37c9e78c3cf38f669924193c09232a9b13361738..2374d475772960c1edd982e799fe52d5c8d24216 100644 |
--- a/xfa/fgas/font/fgas_stdfontmgr.cpp |
+++ b/xfa/fgas/font/fgas_stdfontmgr.cpp |
@@ -11,16 +11,11 @@ |
#include "xfa/fgas/font/fgas_fontutils.h" |
#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ |
-IFX_FontMgr* IFX_FontMgr::Create(FX_LPEnumAllFonts pEnumerator, |
- FX_LPMatchFont pMatcher, |
- void* pUserData) { |
- return new CFX_StdFontMgrImp(pEnumerator, pMatcher, pUserData); |
-} |
-CFX_StdFontMgrImp::CFX_StdFontMgrImp(FX_LPEnumAllFonts pEnumerator, |
- FX_LPMatchFont pMatcher, |
- void* pUserData) |
- : m_pMatcher(pMatcher), |
- m_pEnumerator(pEnumerator), |
+IFX_FontMgr* IFX_FontMgr::Create(FX_LPEnumAllFonts pEnumerator) { |
+ return new CFX_StdFontMgrImp(pEnumerator); |
+} |
+CFX_StdFontMgrImp::CFX_StdFontMgrImp(FX_LPEnumAllFonts pEnumerator) |
+ : m_pEnumerator(pEnumerator), |
m_FontFaces(), |
m_Fonts(), |
m_CPFonts(8), |
@@ -29,16 +24,12 @@ CFX_StdFontMgrImp::CFX_StdFontMgrImp(FX_LPEnumAllFonts pEnumerator, |
m_BufferFonts(4), |
m_FileFonts(4), |
m_StreamFonts(4), |
- m_DeriveFonts(4), |
- m_pUserData(pUserData) { |
+ m_DeriveFonts(4) { |
if (m_pEnumerator != NULL) { |
- m_pEnumerator(m_FontFaces, m_pUserData, NULL, 0xFEFF); |
- } |
- if (m_pMatcher == NULL) { |
- m_pMatcher = FX_DefFontMatcher; |
+ m_pEnumerator(m_FontFaces, NULL, 0xFEFF); |
} |
- FXSYS_assert(m_pMatcher != NULL); |
} |
+ |
CFX_StdFontMgrImp::~CFX_StdFontMgrImp() { |
m_FontFaces.RemoveAll(); |
m_CPFonts.RemoveAll(); |
@@ -65,7 +56,7 @@ IFX_Font* CFX_StdFontMgrImp::GetDefFontByCodePage( |
if (m_CPFonts.Lookup((void*)(uintptr_t)dwHash, (void*&)pFont)) { |
return pFont ? LoadFont(pFont, dwFontStyles, wCodePage) : NULL; |
} |
- FX_LPCFONTDESCRIPTOR pFD; |
+ FX_FONTDESCRIPTOR const* pFD; |
if ((pFD = FindFont(pszFontFamily, dwFontStyles, TRUE, wCodePage)) == NULL) { |
if ((pFD = FindFont(NULL, dwFontStyles, TRUE, wCodePage)) == NULL) { |
if ((pFD = FindFont(NULL, dwFontStyles, FALSE, wCodePage)) == NULL) |
@@ -105,7 +96,7 @@ IFX_Font* CFX_StdFontMgrImp::GetDefFontByUnicode( |
if (m_UnicodeFonts.Lookup((void*)(uintptr_t)dwHash, (void*&)pFont)) |
return pFont ? LoadFont(pFont, dwFontStyles, pRet->wCodePage) : nullptr; |
- FX_LPCFONTDESCRIPTOR pFD = |
+ FX_FONTDESCRIPTOR const* pFD = |
FindFont(pszFontFamily, dwFontStyles, FALSE, pRet->wCodePage, |
pRet->wBitField, wUnicode); |
if (!pFD && pszFontFamily) { |
@@ -146,7 +137,7 @@ IFX_Font* CFX_StdFontMgrImp::LoadFont(const FX_WCHAR* pszFontFamily, |
if (m_FamilyFonts.Lookup((void*)(uintptr_t)dwHash, (void*&)pFont)) { |
return pFont ? LoadFont(pFont, dwFontStyles, wCodePage) : NULL; |
} |
- FX_LPCFONTDESCRIPTOR pFD = NULL; |
+ FX_FONTDESCRIPTOR const* pFD = NULL; |
if ((pFD = FindFont(pszFontFamily, dwFontStyles, TRUE, wCodePage)) == NULL) { |
if ((pFD = FindFont(pszFontFamily, dwFontStyles, FALSE, wCodePage)) == |
NULL) { |
@@ -296,15 +287,13 @@ void CFX_StdFontMgrImp::RemoveFont(IFX_Font* pFont) { |
m_Fonts.RemoveAt(iFind, 1); |
} |
} |
-FX_LPCFONTDESCRIPTOR CFX_StdFontMgrImp::FindFont(const FX_WCHAR* pszFontFamily, |
- uint32_t dwFontStyles, |
- uint32_t dwMatchFlags, |
- uint16_t wCodePage, |
- uint32_t dwUSB, |
- FX_WCHAR wUnicode) { |
- if (m_pMatcher == NULL) { |
- return NULL; |
- } |
+FX_FONTDESCRIPTOR const* CFX_StdFontMgrImp::FindFont( |
+ const FX_WCHAR* pszFontFamily, |
+ uint32_t dwFontStyles, |
+ uint32_t dwMatchFlags, |
+ uint16_t wCodePage, |
+ uint32_t dwUSB, |
+ FX_WCHAR wUnicode) { |
FX_FONTMATCHPARAMS params; |
FXSYS_memset(¶ms, 0, sizeof(params)); |
params.dwUSB = dwUSB; |
@@ -313,20 +302,20 @@ FX_LPCFONTDESCRIPTOR CFX_StdFontMgrImp::FindFont(const FX_WCHAR* pszFontFamily, |
params.pwsFamily = pszFontFamily; |
params.dwFontStyles = dwFontStyles; |
params.dwMatchFlags = dwMatchFlags; |
- FX_LPCFONTDESCRIPTOR pDesc = m_pMatcher(¶ms, m_FontFaces, m_pUserData); |
+ FX_FONTDESCRIPTOR const* pDesc = FX_DefFontMatcher(¶ms, m_FontFaces); |
if (pDesc) { |
return pDesc; |
} |
if (pszFontFamily && m_pEnumerator) { |
CFX_FontDescriptors namedFonts; |
- m_pEnumerator(namedFonts, m_pUserData, pszFontFamily, wUnicode); |
+ m_pEnumerator(namedFonts, pszFontFamily, wUnicode); |
params.pwsFamily = NULL; |
- pDesc = m_pMatcher(¶ms, namedFonts, m_pUserData); |
+ pDesc = FX_DefFontMatcher(¶ms, namedFonts); |
if (pDesc == NULL) { |
return NULL; |
} |
for (int32_t i = m_FontFaces.GetSize() - 1; i >= 0; i--) { |
- FX_LPCFONTDESCRIPTOR pMatch = m_FontFaces.GetPtrAt(i); |
+ FX_FONTDESCRIPTOR const* pMatch = m_FontFaces.GetPtrAt(i); |
if (*pMatch == *pDesc) { |
return pMatch; |
} |
@@ -336,16 +325,15 @@ FX_LPCFONTDESCRIPTOR CFX_StdFontMgrImp::FindFont(const FX_WCHAR* pszFontFamily, |
} |
return NULL; |
} |
-FX_LPCFONTDESCRIPTOR FX_DefFontMatcher(FX_LPFONTMATCHPARAMS pParams, |
- const CFX_FontDescriptors& fonts, |
- void* pUserData) { |
- FX_LPCFONTDESCRIPTOR pBestFont = NULL; |
+FX_FONTDESCRIPTOR const* FX_DefFontMatcher(FX_LPFONTMATCHPARAMS pParams, |
+ const CFX_FontDescriptors& fonts) { |
+ FX_FONTDESCRIPTOR const* pBestFont = NULL; |
int32_t iBestSimilar = 0; |
FX_BOOL bMatchStyle = |
(pParams->dwMatchFlags & FX_FONTMATCHPARA_MacthStyle) > 0; |
int32_t iCount = fonts.GetSize(); |
for (int32_t i = 0; i < iCount; ++i) { |
- FX_LPCFONTDESCRIPTOR pFont = fonts.GetPtrAt(i); |
+ FX_FONTDESCRIPTOR const* pFont = fonts.GetPtrAt(i); |
if ((pFont->dwFontStyles & FX_FONTSTYLE_BoldItalic) == |
FX_FONTSTYLE_BoldItalic) { |
continue; |
@@ -394,7 +382,8 @@ FX_LPCFONTDESCRIPTOR FX_DefFontMatcher(FX_LPFONTMATCHPARAMS pParams, |
} |
return iBestSimilar < 1 ? NULL : pBestFont; |
} |
-int32_t FX_GetSimilarValue(FX_LPCFONTDESCRIPTOR pFont, uint32_t dwFontStyles) { |
+int32_t FX_GetSimilarValue(FX_FONTDESCRIPTOR const* pFont, |
+ uint32_t dwFontStyles) { |
int32_t iValue = 0; |
if ((dwFontStyles & FX_FONTSTYLE_Symbolic) == |
(pFont->dwFontStyles & FX_FONTSTYLE_Symbolic)) { |
@@ -445,7 +434,7 @@ static int32_t CALLBACK FX_GdiFontEnumProc(ENUMLOGFONTEX* lpelfe, |
if (lf.lfFaceName[0] == L'@') { |
return 1; |
} |
- FX_LPFONTDESCRIPTOR pFont = FX_Alloc(FX_FONTDESCRIPTOR, 1); |
+ FX_FONTDESCRIPTOR* pFont = FX_Alloc(FX_FONTDESCRIPTOR, 1); |
FXSYS_memset(pFont, 0, sizeof(FX_FONTDESCRIPTOR)); |
pFont->uCharSet = lf.lfCharSet; |
pFont->dwFontStyles = FX_GetGdiFontStyles(lf); |
@@ -458,7 +447,6 @@ static int32_t CALLBACK FX_GdiFontEnumProc(ENUMLOGFONTEX* lpelfe, |
return 1; |
} |
static void FX_EnumGdiFonts(CFX_FontDescriptors& fonts, |
- void* pUserData, |
const FX_WCHAR* pwsFaceName, |
FX_WCHAR wUnicode) { |
HDC hDC = ::GetDC(NULL); |
@@ -552,15 +540,15 @@ Restart: |
} |
return bsName; |
} |
-FX_POSITION CFX_FontSourceEnum_File::GetStartPosition(void* pUserData) { |
+FX_POSITION CFX_FontSourceEnum_File::GetStartPosition() { |
m_wsNext = GetNextFile().UTF8Decode(); |
if (0 == m_wsNext.GetLength()) { |
return (FX_POSITION)0; |
} |
return (FX_POSITION)-1; |
} |
-IFX_FileAccess* CFX_FontSourceEnum_File::GetNext(FX_POSITION& pos, |
- void* pUserData) { |
+ |
+IFX_FileAccess* CFX_FontSourceEnum_File::GetNext(FX_POSITION& pos) { |
IFX_FileAccess* pAccess = FX_CreateDefaultFileAccess(m_wsNext.AsStringC()); |
m_wsNext = GetNextFile().UTF8Decode(); |
pos = 0 != m_wsNext.GetLength() ? pAccess : NULL; |
@@ -569,26 +557,19 @@ IFX_FileAccess* CFX_FontSourceEnum_File::GetNext(FX_POSITION& pos, |
IFX_FontSourceEnum* FX_CreateDefaultFontSourceEnum() { |
return (IFX_FontSourceEnum*)new CFX_FontSourceEnum_File; |
} |
-IFX_FontMgr* IFX_FontMgr::Create(IFX_FontSourceEnum* pFontEnum, |
- IFX_FontMgrDelegate* pDelegate, |
- void* pUserData) { |
+IFX_FontMgr* IFX_FontMgr::Create(IFX_FontSourceEnum* pFontEnum) { |
if (NULL == pFontEnum) { |
return NULL; |
} |
- CFX_FontMgrImp* pFontMgr = |
- new CFX_FontMgrImp(pFontEnum, pDelegate, pUserData); |
+ CFX_FontMgrImp* pFontMgr = new CFX_FontMgrImp(pFontEnum); |
if (pFontMgr->EnumFonts()) { |
return pFontMgr; |
} |
delete pFontMgr; |
return NULL; |
} |
-CFX_FontMgrImp::CFX_FontMgrImp(IFX_FontSourceEnum* pFontEnum, |
- IFX_FontMgrDelegate* pDelegate, |
- void* pUserData) |
- : m_pFontSource(pFontEnum), |
- m_pDelegate(pDelegate), |
- m_pUserData(pUserData) {} |
+CFX_FontMgrImp::CFX_FontMgrImp(IFX_FontSourceEnum* pFontEnum) |
+ : m_pFontSource(pFontEnum) {} |
FX_BOOL CFX_FontMgrImp::EnumFontsFromFontMapper() { |
CFX_FontMapper* pFontMapper = |
@@ -691,30 +672,22 @@ void CFX_FontMgrImp::Release() { |
IFX_Font* CFX_FontMgrImp::GetDefFontByCodePage(uint16_t wCodePage, |
uint32_t dwFontStyles, |
const FX_WCHAR* pszFontFamily) { |
- return NULL == m_pDelegate ? NULL : m_pDelegate->GetDefFontByCodePage( |
- this, wCodePage, dwFontStyles, |
- pszFontFamily); |
+ return nullptr; |
} |
IFX_Font* CFX_FontMgrImp::GetDefFontByCharset(uint8_t nCharset, |
uint32_t dwFontStyles, |
const FX_WCHAR* pszFontFamily) { |
- return NULL == m_pDelegate ? NULL |
- : m_pDelegate->GetDefFontByCharset( |
- this, nCharset, dwFontStyles, pszFontFamily); |
+ return nullptr; |
} |
IFX_Font* CFX_FontMgrImp::GetDefFontByUnicode(FX_WCHAR wUnicode, |
uint32_t dwFontStyles, |
const FX_WCHAR* pszFontFamily) { |
- return NULL == m_pDelegate ? NULL |
- : m_pDelegate->GetDefFontByUnicode( |
- this, wUnicode, dwFontStyles, pszFontFamily); |
+ return nullptr; |
} |
IFX_Font* CFX_FontMgrImp::GetDefFontByLanguage(uint16_t wLanguage, |
uint32_t dwFontStyles, |
const FX_WCHAR* pszFontFamily) { |
- return NULL == m_pDelegate ? NULL : m_pDelegate->GetDefFontByLanguage( |
- this, wLanguage, dwFontStyles, |
- pszFontFamily); |
+ return nullptr; |
} |
IFX_Font* CFX_FontMgrImp::GetFontByCodePage(uint16_t wCodePage, |
uint32_t dwFontStyles, |