Replace XFA_HDOC with IXFA_Doc*
[pdfium.git] / xfa / src / fxfa / src / app / xfa_fontmgr.h
1 // Copyright 2014 PDFium Authors. All rights reserved.\r
2 // Use of this source code is governed by a BSD-style license that can be\r
3 // found in the LICENSE file.\r
4 \r
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
6 \r
7 #ifndef _FXFA_FORMFILLER_FONTMGR_IMP_H\r
8 #define _FXFA_FORMFILLER_FONTMGR_IMP_H\r
9 struct XFA_FONTINFO {\r
10     FX_DWORD    dwFontNameHash;\r
11     FX_LPCWSTR  pPsName;\r
12     FX_LPCWSTR  pReplaceFont;\r
13     FX_WORD             dwStyles;\r
14     FX_WORD             wCodePage;\r
15 };\r
16 class CXFA_DefFontMgr : public IXFA_FontMgr\r
17 {\r
18 public:\r
19     CXFA_DefFontMgr() {}\r
20     ~CXFA_DefFontMgr() override;\r
21     virtual IFX_Font*           GetFont(IXFA_Doc* hDoc, FX_WSTR wsFontFamily, FX_DWORD dwFontStyles, FX_WORD wCodePage = 0xFFFF);\r
22     virtual IFX_Font*           GetDefaultFont(IXFA_Doc* hDoc, FX_WSTR wsFontFamily, FX_DWORD dwFontStyles, FX_WORD wCodePage = 0xFFFF);\r
23 protected:\r
24     CFX_PtrArray                        m_CacheFonts;\r
25 };\r
26 class CXFA_PDFFontMgr : public IFX_FontProvider\r
27 {\r
28 public:\r
29     CXFA_PDFFontMgr(CXFA_FFDoc* pDoc);\r
30     ~CXFA_PDFFontMgr();\r
31     IFX_Font*                           GetFont(FX_WSTR wsFontFamily, FX_DWORD dwFontStyles, CPDF_Font** pPDFFont, FX_BOOL bStrictMatch = TRUE);\r
32     FX_BOOL                                     GetCharWidth(IFX_Font* pFont, FX_WCHAR wUnicode, FX_INT32 &iWidth, FX_BOOL bCharCode);\r
33     CFX_MapPtrToPtr                     m_FDE2PDFFont;\r
34 protected:\r
35     IFX_Font*                           FindFont(CFX_ByteString strFamilyName, FX_BOOL bBold, FX_BOOL bItalic, CPDF_Font** pPDFFont, FX_BOOL bStrictMatch = TRUE);\r
36     CFX_ByteString                      PsNameToFontName(const CFX_ByteString& strPsName, FX_BOOL bBold, FX_BOOL bItalic);\r
37     FX_BOOL                                     PsNameMatchDRFontName(FX_BSTR bsPsName, FX_BOOL bBold, FX_BOOL bItalic, const CFX_ByteString& bsDRFontName, FX_BOOL bStrictMatch = TRUE);\r
38     CXFA_FFDoc*                                                         m_pDoc;\r
39     CFX_CMapByteStringToPtr                                     m_FontArray;\r
40 };\r
41 class CXFA_FontMgr\r
42 {\r
43 public:\r
44     CXFA_FontMgr();\r
45     ~CXFA_FontMgr();\r
46     IFX_Font*           GetFont(IXFA_Doc* hDoc, FX_WSTR wsFontFamily, FX_DWORD dwFontStyles,\r
47                             FX_WORD wCodePage = 0xFFFF);\r
48     void                        LoadDocFonts(IXFA_Doc* hDoc);\r
49     void                        ReleaseDocFonts(IXFA_Doc* hDoc);\r
50 \r
51     void                        SetDefFontMgr(IXFA_FontMgr* pFontMgr);\r
52 protected:\r
53     void                                        DelAllMgrMap();\r
54     CFX_MapPtrToPtr                     m_PDFFontMgrArray;\r
55     IXFA_FontMgr*                       m_pDefFontMgr;\r
56     CFX_CMapByteStringToPtr     m_FontArray;\r
57 };\r
58 #endif\r