summaryrefslogtreecommitdiff
path: root/xfa/fgas/font/fgas_gefont.h
diff options
context:
space:
mode:
Diffstat (limited to 'xfa/fgas/font/fgas_gefont.h')
-rw-r--r--xfa/fgas/font/fgas_gefont.h116
1 files changed, 67 insertions, 49 deletions
diff --git a/xfa/fgas/font/fgas_gefont.h b/xfa/fgas/font/fgas_gefont.h
index c818b6286d..877d292890 100644
--- a/xfa/fgas/font/fgas_gefont.h
+++ b/xfa/fgas/font/fgas_gefont.h
@@ -16,51 +16,82 @@
class CXFA_PDFFontMgr;
-class CFGAS_GEFont : public IFGAS_Font {
+class CFGAS_GEFont {
public:
- CFGAS_GEFont(const CFGAS_GEFont& src, uint32_t dwFontStyles);
- explicit CFGAS_GEFont(IFGAS_FontMgr* pFontMgr);
+ static CFGAS_GEFont* LoadFont(const FX_WCHAR* pszFontFamily,
+ uint32_t dwFontStyles,
+ uint16_t wCodePage,
+ IFGAS_FontMgr* pFontMgr);
+ static CFGAS_GEFont* LoadFont(CFX_Font* pExtFont,
+ IFGAS_FontMgr* pFontMgr,
+ FX_BOOL bTakeOver);
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
+ static CFGAS_GEFont* LoadFont(const uint8_t* pBuffer,
+ int32_t iLength,
+ IFGAS_FontMgr* pFontMgr);
+ static CFGAS_GEFont* LoadFont(const FX_WCHAR* pszFileName);
+ static CFGAS_GEFont* LoadFont(IFX_Stream* pFontStream,
+ IFGAS_FontMgr* pFontMgr,
+ FX_BOOL bSaveStream);
+#endif
+
~CFGAS_GEFont();
- // IFGAS_Font:
- virtual void Release();
- virtual IFGAS_Font* Retain();
+ void Release();
+ CFGAS_GEFont* Retain();
+ CFGAS_GEFont* Derive(uint32_t dwFontStyles, uint16_t wCodePage = 0);
+ void GetFamilyName(CFX_WideString& wsFamily) const;
+ uint32_t GetFontStyles() const;
+ uint8_t GetCharSet() const;
+ FX_BOOL GetCharWidth(FX_WCHAR wUnicode,
+ int32_t& iWidth,
+ FX_BOOL bCharCode = FALSE);
+ int32_t GetGlyphIndex(FX_WCHAR wUnicode, FX_BOOL bCharCode = FALSE);
+ int32_t GetAscent() const;
+ int32_t GetDescent() const;
+ FX_BOOL GetCharBBox(FX_WCHAR wUnicode,
+ CFX_Rect& bbox,
+ FX_BOOL bCharCode = FALSE);
+ FX_BOOL GetBBox(CFX_Rect& bbox);
+ int32_t GetItalicAngle() const;
+ void Reset();
+ CFGAS_GEFont* GetSubstFont(int32_t iGlyphIndex) const;
+ CFX_Font* GetDevFont() const { return m_pFont; }
+ void SetFontProvider(CXFA_PDFFontMgr* pProvider) { m_pProvider = pProvider; }
+#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_
+ void SetLogicalFontStyle(uint32_t dwLogFontStyle) {
+ m_bUseLogFontStyle = TRUE;
+ m_dwLogFontStyle = dwLogFontStyle;
+ }
+#endif
+
+ protected:
+ explicit CFGAS_GEFont(IFGAS_FontMgr* pFontMgr);
+ CFGAS_GEFont(const CFGAS_GEFont& src, uint32_t dwFontStyles);
+
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
FX_BOOL LoadFont(const FX_WCHAR* pszFontFamily,
uint32_t dwFontStyles,
uint16_t wCodePage);
FX_BOOL LoadFont(const uint8_t* pBuffer, int32_t length);
- FX_BOOL LoadFont(const FX_WCHAR* pszFileName);
+ FX_BOOL LoadFontInternal(const FX_WCHAR* pszFileName);
FX_BOOL LoadFont(IFX_Stream* pFontStream, FX_BOOL bSaveStream);
- FX_BOOL LoadFont(CFX_Font* pExtFont, FX_BOOL bTakeOver = FALSE);
- virtual IFGAS_Font* Derive(uint32_t dwFontStyles, uint16_t wCodePage = 0);
- virtual void GetFamilyName(CFX_WideString& wsFamily) const;
- virtual uint32_t GetFontStyles() const;
- virtual uint8_t GetCharSet() const;
- virtual FX_BOOL GetCharWidth(FX_WCHAR wUnicode,
- int32_t& iWidth,
- FX_BOOL bCharCode = FALSE);
- virtual int32_t GetGlyphIndex(FX_WCHAR wUnicode, FX_BOOL bCharCode = FALSE);
- virtual int32_t GetAscent() const;
- virtual int32_t GetDescent() const;
- virtual FX_BOOL GetCharBBox(FX_WCHAR wUnicode,
+#endif
+ FX_BOOL LoadFont(CFX_Font* pExtFont, FX_BOOL bTakeOver);
+ FX_BOOL InitFont();
+ FX_BOOL GetCharBBoxInternal(FX_WCHAR wUnicode,
CFX_Rect& bbox,
+ FX_BOOL bRecursive,
FX_BOOL bCharCode = FALSE);
- virtual FX_BOOL GetBBox(CFX_Rect& bbox);
- virtual int32_t GetItalicAngle() const;
- virtual void Reset();
- virtual IFGAS_Font* GetSubstFont(int32_t iGlyphIndex) const;
- virtual CFX_Font* GetDevFont() const { return m_pFont; }
- virtual void SetFontProvider(CXFA_PDFFontMgr* pProvider) {
- m_pProvider = pProvider;
- }
-#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_
- virtual void SetLogicalFontStyle(uint32_t dwLogFontStyle) {
- m_bUseLogFontStyle = TRUE;
- m_dwLogFontStyle = dwLogFontStyle;
- }
-#endif
+ FX_BOOL GetCharWidthInternal(FX_WCHAR wUnicode,
+ int32_t& iWidth,
+ FX_BOOL bRecursive,
+ FX_BOOL bCharCode = FALSE);
+ int32_t GetGlyphIndex(FX_WCHAR wUnicode,
+ FX_BOOL bRecursive,
+ CFGAS_GEFont** ppFont,
+ FX_BOOL bCharCode = FALSE);
- protected:
#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_
FX_BOOL m_bUseLogFontStyle;
uint32_t m_dwLogFontStyle;
@@ -77,21 +108,8 @@ class CFGAS_GEFont : public IFGAS_Font {
CFX_MapPtrToPtr* m_pBBoxMap;
CXFA_PDFFontMgr* m_pProvider;
uint16_t m_wCharSet;
- CFX_ArrayTemplate<IFGAS_Font*> m_SubstFonts;
- std::map<FX_WCHAR, IFGAS_Font*> m_FontMapper;
- FX_BOOL InitFont();
- FX_BOOL GetCharBBox(FX_WCHAR wUnicode,
- CFX_Rect& bbox,
- FX_BOOL bRecursive,
- FX_BOOL bCharCode = FALSE);
- FX_BOOL GetCharWidth(FX_WCHAR wUnicode,
- int32_t& iWidth,
- FX_BOOL bRecursive,
- FX_BOOL bCharCode = FALSE);
- int32_t GetGlyphIndex(FX_WCHAR wUnicode,
- FX_BOOL bRecursive,
- IFGAS_Font** ppFont,
- FX_BOOL bCharCode = FALSE);
+ CFX_ArrayTemplate<CFGAS_GEFont*> m_SubstFonts;
+ std::map<FX_WCHAR, CFGAS_GEFont*> m_FontMapper;
};
#endif // XFA_FGAS_FONT_FGAS_GEFONT_H_