diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/include/fxge/fx_font.h | 2 | ||||
-rw-r--r-- | core/include/fxge/fx_ge.h | 5 | ||||
-rw-r--r-- | core/src/fxge/apple/fx_mac_imp.cpp | 4 | ||||
-rw-r--r-- | core/src/fxge/ge/fx_ge.cpp | 7 | ||||
-rw-r--r-- | core/src/fxge/ge/fx_ge_fontmap.cpp | 2 | ||||
-rw-r--r-- | core/src/fxge/ge/fx_ge_linux.cpp | 19 | ||||
-rw-r--r-- | core/src/fxge/win32/fx_win32_device.cpp | 4 |
7 files changed, 26 insertions, 17 deletions
diff --git a/core/include/fxge/fx_font.h b/core/include/fxge/fx_font.h index aa9286ff3e..5cd16207e6 100644 --- a/core/include/fxge/fx_font.h +++ b/core/include/fxge/fx_font.h @@ -285,7 +285,7 @@ class CFX_FontMapper { }; class IFX_SystemFontInfo { public: - static IFX_SystemFontInfo* CreateDefault(); + static IFX_SystemFontInfo* CreateDefault(const char** pUserPaths); virtual void Release() = 0; virtual FX_BOOL EnumFontList(CFX_FontMapper* pMapper) = 0; diff --git a/core/include/fxge/fx_ge.h b/core/include/fxge/fx_ge.h index 0aa3f17d4d..ef3c8f665e 100644 --- a/core/include/fxge/fx_ge.h +++ b/core/include/fxge/fx_ge.h @@ -24,7 +24,7 @@ class IFXG_PaintModuleMgr; class CFX_GEModule { public: - static void Create(); + static void Create(const char** pUserFontPaths); static void Use(CFX_GEModule* pMgr); @@ -46,7 +46,7 @@ class CFX_GEModule { void* GetPlatformData() { return m_pPlatformData; } protected: - CFX_GEModule(); + explicit CFX_GEModule(const char** pUserFontPaths); ~CFX_GEModule(); void InitPlatform(); @@ -58,6 +58,7 @@ class CFX_GEModule { CFX_FontMgr* m_pFontMgr; CCodec_ModuleMgr* m_pCodecModule; void* m_pPlatformData; + const char** m_pUserFontPaths; }; typedef struct { FX_FLOAT m_PointX; diff --git a/core/src/fxge/apple/fx_mac_imp.cpp b/core/src/fxge/apple/fx_mac_imp.cpp index 9918ba97e8..5a4e6603df 100644 --- a/core/src/fxge/apple/fx_mac_imp.cpp +++ b/core/src/fxge/apple/fx_mac_imp.cpp @@ -93,7 +93,7 @@ void* CFX_MacFontInfo::MapFont(int weight, } return NULL; } -IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault() { +IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault(const char** pUnused) { CFX_MacFontInfo* pInfo = new CFX_MacFontInfo; pInfo->AddPath("~/Library/Fonts"); pInfo->AddPath("/Library/Fonts"); @@ -102,7 +102,7 @@ IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault() { } void CFX_GEModule::InitPlatform() { m_pPlatformData = new CApplePlatform; - m_pFontMgr->SetSystemFontInfo(IFX_SystemFontInfo::CreateDefault()); + m_pFontMgr->SetSystemFontInfo(IFX_SystemFontInfo::CreateDefault(nullptr)); } void CFX_GEModule::DestroyPlatform() { delete (CApplePlatform*)m_pPlatformData; diff --git a/core/src/fxge/ge/fx_ge.cpp b/core/src/fxge/ge/fx_ge.cpp index d37ed5c714..6dfed8837c 100644 --- a/core/src/fxge/ge/fx_ge.cpp +++ b/core/src/fxge/ge/fx_ge.cpp @@ -7,12 +7,13 @@ #include "../../../include/fxge/fx_ge.h" #include "text_int.h" static CFX_GEModule* g_pGEModule = NULL; -CFX_GEModule::CFX_GEModule() { +CFX_GEModule::CFX_GEModule(const char** pUserFontPaths) { m_pFontCache = NULL; m_pFontMgr = NULL; m_FTLibrary = NULL; m_pCodecModule = NULL; m_pPlatformData = NULL; + m_pUserFontPaths = pUserFontPaths; } CFX_GEModule::~CFX_GEModule() { delete m_pFontCache; @@ -24,8 +25,8 @@ CFX_GEModule::~CFX_GEModule() { CFX_GEModule* CFX_GEModule::Get() { return g_pGEModule; } -void CFX_GEModule::Create() { - g_pGEModule = new CFX_GEModule; +void CFX_GEModule::Create(const char** userFontPaths) { + g_pGEModule = new CFX_GEModule(userFontPaths); g_pGEModule->m_pFontMgr = new CFX_FontMgr; g_pGEModule->InitPlatform(); g_pGEModule->SetTextGamma(2.2f); diff --git a/core/src/fxge/ge/fx_ge_fontmap.cpp b/core/src/fxge/ge/fx_ge_fontmap.cpp index 02af775a31..d4416d9487 100644 --- a/core/src/fxge/ge/fx_ge_fontmap.cpp +++ b/core/src/fxge/ge/fx_ge_fontmap.cpp @@ -1270,7 +1270,7 @@ extern FX_BOOL _LoadFile(FXFT_Library library, IFX_FileRead* pFile, FXFT_Stream* stream); #if _FX_OS_ == _FX_ANDROID_ -IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault() { +IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault(const char** pUnused) { return NULL; } #endif diff --git a/core/src/fxge/ge/fx_ge_linux.cpp b/core/src/fxge/ge/fx_ge_linux.cpp index 299806ca07..8ff0a4e5b1 100644 --- a/core/src/fxge/ge/fx_ge_linux.cpp +++ b/core/src/fxge/ge/fx_ge_linux.cpp @@ -34,7 +34,7 @@ class CFX_LinuxFontInfo : public CFX_FolderFontInfo { int pitch_family, const FX_CHAR* family, int& iExact) override; - FX_BOOL ParseFontCfg(); + FX_BOOL ParseFontCfg(const char** pUserPaths); void* FindFont(int weight, FX_BOOL bItalic, int charset, @@ -227,9 +227,9 @@ void* CFX_LinuxFontInfo::FindFont(int weight, } return pFind; } -IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault() { +IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault(const char** pUserPaths) { CFX_LinuxFontInfo* pInfo = new CFX_LinuxFontInfo; - if (!pInfo->ParseFontCfg()) { + if (!pInfo->ParseFontCfg(pUserPaths)) { pInfo->AddPath("/usr/share/fonts"); pInfo->AddPath("/usr/share/X11/fonts/Type1"); pInfo->AddPath("/usr/share/X11/fonts/TTF"); @@ -237,11 +237,18 @@ IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault() { } return pInfo; } -FX_BOOL CFX_LinuxFontInfo::ParseFontCfg() { - return FALSE; +FX_BOOL CFX_LinuxFontInfo::ParseFontCfg(const char** pUserPaths) { + if (!pUserPaths) { + return FALSE; + } + for (const char** pPath = pUserPaths; *pPath; ++pPath) { + AddPath(*pPath); + } + return TRUE; } void CFX_GEModule::InitPlatform() { - m_pFontMgr->SetSystemFontInfo(IFX_SystemFontInfo::CreateDefault()); + m_pFontMgr->SetSystemFontInfo( + IFX_SystemFontInfo::CreateDefault(m_pUserFontPaths)); } void CFX_GEModule::DestroyPlatform() {} #endif // _FXM_PLATFORM_ == _FXM_PLATFORM_LINUX_ diff --git a/core/src/fxge/win32/fx_win32_device.cpp b/core/src/fxge/win32/fx_win32_device.cpp index 4cfc6cbf82..c3325ba738 100644 --- a/core/src/fxge/win32/fx_win32_device.cpp +++ b/core/src/fxge/win32/fx_win32_device.cpp @@ -401,7 +401,7 @@ FX_BOOL CFX_Win32FontInfo::GetFontCharset(void* hFont, int& charset) { charset = tm.tmCharSet; return TRUE; } -IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault() { +IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault(const char** pUnused) { return new CFX_Win32FontInfo; } void CFX_GEModule::InitPlatform() { @@ -412,7 +412,7 @@ void CFX_GEModule::InitPlatform() { pPlatformData->m_bHalfTone = ver.dwMajorVersion >= 5; pPlatformData->m_GdiplusExt.Load(); m_pPlatformData = pPlatformData; - m_pFontMgr->SetSystemFontInfo(IFX_SystemFontInfo::CreateDefault()); + m_pFontMgr->SetSystemFontInfo(IFX_SystemFontInfo::CreateDefault(nullptr)); } void CFX_GEModule::DestroyPlatform() { delete (CWin32Platform*)m_pPlatformData; |