Index: xfa/fgas/font/fgas_gefont.h |
diff --git a/xfa/fgas/font/fgas_gefont.h b/xfa/fgas/font/fgas_gefont.h |
index 8667bf9b0a337765dcf501323356a677a7f29cb5..8ea578a0cd29a2c465af2a23d9b44cfcf23a195d 100644 |
--- a/xfa/fgas/font/fgas_gefont.h |
+++ b/xfa/fgas/font/fgas_gefont.h |
@@ -16,51 +16,82 @@ |
class CXFA_PDFFontMgr; |
-class CFX_GEFont : public IFX_Font { |
+class CFX_GEFont { |
public: |
- CFX_GEFont(const CFX_GEFont& src, uint32_t dwFontStyles); |
- explicit CFX_GEFont(IFX_FontMgr* pFontMgr); |
+ static CFX_GEFont* LoadFont(const FX_WCHAR* pszFontFamily, |
+ uint32_t dwFontStyles, |
+ uint16_t wCodePage, |
+ IFX_FontMgr* pFontMgr); |
+ static CFX_GEFont* LoadFont(CFX_Font* pExtFont, |
+ IFX_FontMgr* pFontMgr, |
+ FX_BOOL bTakeOver); |
+#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ |
+ static CFX_GEFont* LoadFont(const uint8_t* pBuffer, |
+ int32_t iLength, |
+ IFX_FontMgr* pFontMgr); |
+ static CFX_GEFont* LoadFont(const FX_WCHAR* pszFileName); |
+ static CFX_GEFont* LoadFont(IFX_Stream* pFontStream, |
+ IFX_FontMgr* pFontMgr, |
+ FX_BOOL bSaveStream); |
+#endif |
+ |
~CFX_GEFont(); |
- // IFX_Font: |
- virtual void Release(); |
- virtual IFX_Font* Retain(); |
+ void Release(); |
+ CFX_GEFont* Retain(); |
+ CFX_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(); |
+ CFX_GEFont* GetSubstFont(int32_t iGlyphIndex) const; |
+ void* GetDevFont() const { return (void*)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 CFX_GEFont(IFX_FontMgr* pFontMgr); |
+ CFX_GEFont(const CFX_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 IFX_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 IFX_Font* GetSubstFont(int32_t iGlyphIndex) const; |
- virtual void* GetDevFont() const { return (void*)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, |
+ CFX_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 CFX_GEFont : public IFX_Font { |
CFX_MapPtrToPtr* m_pBBoxMap; |
CXFA_PDFFontMgr* m_pProvider; |
uint16_t m_wCharSet; |
- CFX_ArrayTemplate<IFX_Font*> m_SubstFonts; |
- std::map<FX_WCHAR, IFX_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, |
- IFX_Font** ppFont, |
- FX_BOOL bCharCode = FALSE); |
+ CFX_ArrayTemplate<CFX_GEFont*> m_SubstFonts; |
+ std::map<FX_WCHAR, CFX_GEFont*> m_FontMapper; |
}; |
#endif // XFA_FGAS_FONT_FGAS_GEFONT_H_ |