summaryrefslogtreecommitdiff
path: root/xfa/fgas/font
diff options
context:
space:
mode:
Diffstat (limited to 'xfa/fgas/font')
-rw-r--r--xfa/fgas/font/fgas_font.h23
-rw-r--r--xfa/fgas/font/fgas_gefont.cpp1
-rw-r--r--xfa/fgas/font/fgas_gefont.h6
-rw-r--r--xfa/fgas/font/fgas_stdfontmgr.cpp20
-rw-r--r--xfa/fgas/font/fgas_stdfontmgr.h16
5 files changed, 28 insertions, 38 deletions
diff --git a/xfa/fgas/font/fgas_font.h b/xfa/fgas/font/fgas_font.h
index db964b06ca..406c6f96a8 100644
--- a/xfa/fgas/font/fgas_font.h
+++ b/xfa/fgas/font/fgas_font.h
@@ -15,6 +15,8 @@
#include "xfa/fgas/crt/fgas_utils.h"
#endif // _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
+class CFX_FontSourceEnum_File;
+class CXFA_PDFFontMgr;
class IFX_Font;
class IFX_FontMgr;
@@ -48,15 +50,6 @@ class IFX_FontMgr;
#define FX_BOUNDINGSHAPE_Triangle 3
#define FX_BOUNDINGSHAPE_Diamond 4
-class IFX_FontProvider {
- public:
- virtual ~IFX_FontProvider() {}
- virtual FX_BOOL GetCharWidth(IFX_Font* pFont,
- FX_WCHAR wUnicode,
- int32_t& iWidth,
- FX_BOOL bCharCode = FALSE) = 0;
-};
-
class IFX_Font {
public:
static IFX_Font* LoadFont(const FX_WCHAR* pszFontFamily,
@@ -96,7 +89,7 @@ class IFX_Font {
virtual void Reset() = 0;
virtual IFX_Font* GetSubstFont(int32_t iGlyphIndex) const = 0;
virtual void* GetDevFont() const = 0;
- virtual void SetFontProvider(IFX_FontProvider* pProvider) = 0;
+ virtual void SetFontProvider(CXFA_PDFFontMgr* pProvider) = 0;
#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_
virtual void SetLogicalFontStyle(uint32_t dwLogFontStyle) = 0;
#endif
@@ -192,17 +185,9 @@ class IFX_FontMgr {
#else // _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
-class IFX_FontSourceEnum {
- public:
- virtual ~IFX_FontSourceEnum() {}
- virtual void Release() = 0;
- virtual FX_POSITION GetStartPosition() = 0;
- virtual IFX_FileAccess* GetNext(FX_POSITION& pos) = 0;
-};
-IFX_FontSourceEnum* FX_CreateDefaultFontSourceEnum();
class IFX_FontMgr {
public:
- static IFX_FontMgr* Create(IFX_FontSourceEnum* pFontEnum);
+ static IFX_FontMgr* Create(CFX_FontSourceEnum_File* pFontEnum);
virtual ~IFX_FontMgr() {}
virtual void Release() = 0;
virtual IFX_Font* GetDefFontByCodePage(
diff --git a/xfa/fgas/font/fgas_gefont.cpp b/xfa/fgas/font/fgas_gefont.cpp
index 7bf877f8c2..495ac7d69d 100644
--- a/xfa/fgas/font/fgas_gefont.cpp
+++ b/xfa/fgas/font/fgas_gefont.cpp
@@ -8,6 +8,7 @@
#include "xfa/fgas/crt/fgas_codepage.h"
#include "xfa/fgas/font/fgas_fontutils.h"
+#include "xfa/fxfa/include/xfa_fontmgr.h"
IFX_Font* IFX_Font::LoadFont(const FX_WCHAR* pszFontFamily,
uint32_t dwFontStyles,
diff --git a/xfa/fgas/font/fgas_gefont.h b/xfa/fgas/font/fgas_gefont.h
index 044acdeb7f..43b5c5876e 100644
--- a/xfa/fgas/font/fgas_gefont.h
+++ b/xfa/fgas/font/fgas_gefont.h
@@ -12,6 +12,8 @@
#define FXFONT_SUBST_ITALIC 0x02
+class CXFA_PDFFontMgr;
+
class CFX_GEFont : public IFX_Font {
public:
CFX_GEFont(const CFX_GEFont& src, uint32_t dwFontStyles);
@@ -45,7 +47,7 @@ class CFX_GEFont : public IFX_Font {
virtual void Reset();
virtual IFX_Font* GetSubstFont(int32_t iGlyphIndex) const;
virtual void* GetDevFont() const { return (void*)m_pFont; }
- virtual void SetFontProvider(IFX_FontProvider* pProvider) {
+ virtual void SetFontProvider(CXFA_PDFFontMgr* pProvider) {
m_pProvider = pProvider;
}
#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_
@@ -70,7 +72,7 @@ class CFX_GEFont : public IFX_Font {
CFX_WordDiscreteArray* m_pCharWidthMap;
CFX_RectMassArray* m_pRectArray;
CFX_MapPtrToPtr* m_pBBoxMap;
- IFX_FontProvider* m_pProvider;
+ CXFA_PDFFontMgr* m_pProvider;
uint16_t m_wCharSet;
CFX_PtrArray m_SubstFonts;
CFX_MapPtrToPtr m_FontMapper;
diff --git a/xfa/fgas/font/fgas_stdfontmgr.cpp b/xfa/fgas/font/fgas_stdfontmgr.cpp
index dedc8b0ad2..a3964d2bb8 100644
--- a/xfa/fgas/font/fgas_stdfontmgr.cpp
+++ b/xfa/fgas/font/fgas_stdfontmgr.cpp
@@ -555,21 +555,19 @@ IFX_FileAccess* CFX_FontSourceEnum_File::GetNext(FX_POSITION& pos) {
pos = 0 != m_wsNext.GetLength() ? pAccess : NULL;
return (IFX_FileAccess*)pAccess;
}
-IFX_FontSourceEnum* FX_CreateDefaultFontSourceEnum() {
- return (IFX_FontSourceEnum*)new CFX_FontSourceEnum_File;
-}
-IFX_FontMgr* IFX_FontMgr::Create(IFX_FontSourceEnum* pFontEnum) {
- if (NULL == pFontEnum) {
- return NULL;
- }
+
+IFX_FontMgr* IFX_FontMgr::Create(CFX_FontSourceEnum_File* pFontEnum) {
+ if (!pFontEnum)
+ return nullptr;
+
CFX_FontMgrImp* pFontMgr = new CFX_FontMgrImp(pFontEnum);
- if (pFontMgr->EnumFonts()) {
+ if (pFontMgr->EnumFonts())
return pFontMgr;
- }
+
delete pFontMgr;
- return NULL;
+ return nullptr;
}
-CFX_FontMgrImp::CFX_FontMgrImp(IFX_FontSourceEnum* pFontEnum)
+CFX_FontMgrImp::CFX_FontMgrImp(CFX_FontSourceEnum_File* pFontEnum)
: m_pFontSource(pFontEnum) {}
FX_BOOL CFX_FontMgrImp::EnumFontsFromFontMapper() {
diff --git a/xfa/fgas/font/fgas_stdfontmgr.h b/xfa/fgas/font/fgas_stdfontmgr.h
index 6b1f9c8a8f..cc11517e34 100644
--- a/xfa/fgas/font/fgas_stdfontmgr.h
+++ b/xfa/fgas/font/fgas_stdfontmgr.h
@@ -126,19 +126,22 @@ struct FX_HandleParentPath {
CFX_ByteString bsParentPath;
};
-class CFX_FontSourceEnum_File : public IFX_FontSourceEnum {
+class CFX_FontSourceEnum_File {
public:
CFX_FontSourceEnum_File();
- virtual void Release() { delete this; }
- virtual FX_POSITION GetStartPosition();
- virtual IFX_FileAccess* GetNext(FX_POSITION& pos);
+
+ void Release() { delete this; }
+ FX_POSITION GetStartPosition();
+ IFX_FileAccess* GetNext(FX_POSITION& pos);
private:
CFX_ByteString GetNextFile();
+
CFX_WideString m_wsNext;
CFX_ObjectArray<FX_HandleParentPath> m_FolderQueue;
CFX_ByteStringArray m_FolderPaths;
};
+
typedef CFX_MapPtrTemplate<uint32_t, IFX_FileAccess*> CFX_HashFileMap;
typedef CFX_MapPtrTemplate<uint32_t, IFX_Font*> CFX_HashFontMap;
typedef CFX_MapPtrTemplate<uint32_t, CFX_FontDescriptorInfos*>
@@ -152,7 +155,8 @@ typedef CFX_MapPtrTemplate<IFX_Font*, IFX_FileRead*> CFX_FonStreamtMap;
class CFX_FontMgrImp : public IFX_FontMgr {
public:
- CFX_FontMgrImp(IFX_FontSourceEnum* pFontEnum);
+ CFX_FontMgrImp(CFX_FontSourceEnum_File* pFontEnum);
+
virtual void Release();
virtual IFX_Font* GetDefFontByCodePage(uint16_t wCodePage,
uint32_t dwFontStyles,
@@ -239,7 +243,7 @@ class CFX_FontMgrImp : public IFX_FontMgr {
CFX_HashFontMap m_FileAccess2IFXFont;
CFX_FonStreamtMap m_IFXFont2FileRead;
CFX_UnicodeFontMap m_FailedUnicodes2NULL;
- IFX_FontSourceEnum* m_pFontSource;
+ CFX_FontSourceEnum_File* m_pFontSource;
};
#endif