summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/include/fxge/fx_font.h2
-rw-r--r--core/include/fxge/fx_ge.h5
-rw-r--r--core/src/fxge/apple/fx_mac_imp.cpp4
-rw-r--r--core/src/fxge/ge/fx_ge.cpp10
-rw-r--r--core/src/fxge/ge/fx_ge_fontmap.cpp2
-rw-r--r--core/src/fxge/ge/fx_ge_linux.cpp22
-rw-r--r--core/src/fxge/win32/fx_win32_device.cpp4
7 files changed, 26 insertions, 23 deletions
diff --git a/core/include/fxge/fx_font.h b/core/include/fxge/fx_font.h
index 2d19db614f..3484196187 100644
--- a/core/include/fxge/fx_font.h
+++ b/core/include/fxge/fx_font.h
@@ -349,7 +349,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 23be3648d1..4cfe622007 100644
--- a/core/include/fxge/fx_ge.h
+++ b/core/include/fxge/fx_ge.h
@@ -19,7 +19,7 @@ class CCodec_ModuleMgr;
class CFX_GEModule {
public:
- static void Create();
+ static void Create(const char** pUserFontPaths);
static void Use(CFX_GEModule* pMgr);
@@ -41,7 +41,7 @@ class CFX_GEModule {
void* GetPlatformData() { return m_pPlatformData; }
protected:
- CFX_GEModule();
+ explicit CFX_GEModule(const char** pUserFontPaths);
~CFX_GEModule();
void InitPlatform();
@@ -53,6 +53,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 88a51bd78c..07e3d02c4c 100644
--- a/core/src/fxge/apple/fx_mac_imp.cpp
+++ b/core/src/fxge/apple/fx_mac_imp.cpp
@@ -94,7 +94,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;
if (!pInfo) {
return NULL;
@@ -106,7 +106,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 607c9ee559..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,11 +25,8 @@ CFX_GEModule::~CFX_GEModule() {
CFX_GEModule* CFX_GEModule::Get() {
return g_pGEModule;
}
-void CFX_GEModule::Create() {
- g_pGEModule = new CFX_GEModule;
- if (!g_pGEModule) {
- return;
- }
+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 63d8181656..e1f25684ad 100644
--- a/core/src/fxge/ge/fx_ge_fontmap.cpp
+++ b/core/src/fxge/ge/fx_ge_fontmap.cpp
@@ -1343,7 +1343,7 @@ CFontFileFaceInfo::~CFontFileFaceInfo() {
m_Face = NULL;
}
#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 4e713dc412..065fd124bb 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,
@@ -226,12 +226,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) {
- return NULL;
- }
- 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");
@@ -239,11 +236,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 d5f29686c9..a0ccb83ae4 100644
--- a/core/src/fxge/win32/fx_win32_device.cpp
+++ b/core/src/fxge/win32/fx_win32_device.cpp
@@ -405,7 +405,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() {
@@ -419,7 +419,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;