Merge XFA to PDFium master at 4dc95e7 on 10/28/2014
[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, public CFX_Object\r
17 {\r
18 public:\r
19     CXFA_DefFontMgr() {}\r
20     virtual ~CXFA_DefFontMgr();\r
21     virtual     void                    Release()\r
22     {\r
23         delete this;\r
24     }\r
25     virtual IFX_Font*           GetFont(XFA_HDOC hDoc, FX_WSTR wsFontFamily, FX_DWORD dwFontStyles, FX_WORD wCodePage = 0xFFFF);\r
26     virtual IFX_Font*           GetDefaultFont(XFA_HDOC hDoc, FX_WSTR wsFontFamily, FX_DWORD dwFontStyles, FX_WORD wCodePage = 0xFFFF);\r
27 protected:\r
28     CFX_PtrArray                        m_CacheFonts;\r
29 };\r
30 class CXFA_PDFFontMgr : public IFX_FontProvider, public CFX_Object\r
31 {\r
32 public:\r
33     CXFA_PDFFontMgr(CXFA_FFDoc* pDoc);\r
34     ~CXFA_PDFFontMgr();\r
35     IFX_Font*                           GetFont(FX_WSTR wsFontFamily, FX_DWORD dwFontStyles, CPDF_Font** pPDFFont, FX_BOOL bStrictMatch = TRUE);\r
36     FX_BOOL                                     GetCharWidth(IFX_Font* pFont, FX_WCHAR wUnicode, FX_INT32 &iWidth, FX_BOOL bCharCode);\r
37     CFX_MapPtrToPtr                     m_FDE2PDFFont;\r
38 protected:\r
39     IFX_Font*                           FindFont(CFX_ByteString strFamilyName, FX_BOOL bBold, FX_BOOL bItalic, CPDF_Font** pPDFFont, FX_BOOL bStrictMatch = TRUE);\r
40     CFX_ByteString                      PsNameToFontName(const CFX_ByteString& strPsName, FX_BOOL bBold, FX_BOOL bItalic);\r
41     FX_BOOL                                     PsNameMatchDRFontName(FX_BSTR bsPsName, FX_BOOL bBold, FX_BOOL bItalic, const CFX_ByteString& bsDRFontName, FX_BOOL bStrictMatch = TRUE);\r
42     CXFA_FFDoc*                                                         m_pDoc;\r
43     CFX_CMapByteStringToPtr                                     m_FontArray;\r
44 };\r
45 class CXFA_FontMgr : public CFX_Object\r
46 {\r
47 public:\r
48     CXFA_FontMgr();\r
49     ~CXFA_FontMgr();\r
50     IFX_Font*           GetFont(XFA_HDOC hDoc, FX_WSTR wsFontFamily, FX_DWORD dwFontStyles,\r
51                             FX_WORD wCodePage = 0xFFFF);\r
52     void                        LoadDocFonts(XFA_HDOC hDoc);\r
53     void                        ReleaseDocFonts(XFA_HDOC hDoc);\r
54 \r
55     void                        SetDefFontMgr(IXFA_FontMgr* pFontMgr);\r
56 protected:\r
57     void                                        DelAllMgrMap();\r
58     CFX_MapPtrToPtr                     m_PDFFontMgrArray;\r
59     IXFA_FontMgr*                       m_pDefFontMgr;\r
60     CFX_CMapByteStringToPtr     m_FontArray;\r
61 };\r
62 #endif\r