| OLD | NEW |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 | 6 |
| 7 #include "xfa/fxfa/app/xfa_fontmgr.h" | 7 #include "xfa/fxfa/app/xfa_fontmgr.h" |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 | 10 |
| (...skipping 1747 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1758 int32_t iCounts = m_CacheFonts.GetSize(); | 1758 int32_t iCounts = m_CacheFonts.GetSize(); |
| 1759 for (int32_t i = 0; i < iCounts; i++) { | 1759 for (int32_t i = 0; i < iCounts; i++) { |
| 1760 ((IFX_Font*)m_CacheFonts[i])->Release(); | 1760 ((IFX_Font*)m_CacheFonts[i])->Release(); |
| 1761 } | 1761 } |
| 1762 m_CacheFonts.RemoveAll(); | 1762 m_CacheFonts.RemoveAll(); |
| 1763 } | 1763 } |
| 1764 | 1764 |
| 1765 IFX_Font* CXFA_DefFontMgr::GetFont(IXFA_Doc* hDoc, | 1765 IFX_Font* CXFA_DefFontMgr::GetFont(IXFA_Doc* hDoc, |
| 1766 const CFX_WideStringC& wsFontFamily, | 1766 const CFX_WideStringC& wsFontFamily, |
| 1767 FX_DWORD dwFontStyles, | 1767 FX_DWORD dwFontStyles, |
| 1768 FX_WORD wCodePage) { | 1768 uint16_t wCodePage) { |
| 1769 CFX_WideString wsFontName = wsFontFamily; | 1769 CFX_WideString wsFontName = wsFontFamily; |
| 1770 IFX_FontMgr* pFDEFontMgr = | 1770 IFX_FontMgr* pFDEFontMgr = |
| 1771 static_cast<CXFA_FFDoc*>(hDoc)->GetApp()->GetFDEFontMgr(); | 1771 static_cast<CXFA_FFDoc*>(hDoc)->GetApp()->GetFDEFontMgr(); |
| 1772 IFX_Font* pFont = pFDEFontMgr->LoadFont(wsFontName, dwFontStyles, wCodePage); | 1772 IFX_Font* pFont = pFDEFontMgr->LoadFont(wsFontName, dwFontStyles, wCodePage); |
| 1773 if (!pFont) { | 1773 if (!pFont) { |
| 1774 const XFA_FONTINFO* pCurFont = XFA_GetFontINFOByFontName(wsFontName); | 1774 const XFA_FONTINFO* pCurFont = XFA_GetFontINFOByFontName(wsFontName); |
| 1775 if (pCurFont && pCurFont->pReplaceFont) { | 1775 if (pCurFont && pCurFont->pReplaceFont) { |
| 1776 FX_DWORD dwStyle = 0; | 1776 FX_DWORD dwStyle = 0; |
| 1777 if (dwFontStyles & FX_FONTSTYLE_Bold) { | 1777 if (dwFontStyles & FX_FONTSTYLE_Bold) { |
| 1778 dwStyle |= FX_FONTSTYLE_Bold; | 1778 dwStyle |= FX_FONTSTYLE_Bold; |
| (...skipping 23 matching lines...) Expand all Loading... |
| 1802 } | 1802 } |
| 1803 if (pFont) { | 1803 if (pFont) { |
| 1804 m_CacheFonts.Add(pFont); | 1804 m_CacheFonts.Add(pFont); |
| 1805 } | 1805 } |
| 1806 return pFont; | 1806 return pFont; |
| 1807 } | 1807 } |
| 1808 | 1808 |
| 1809 IFX_Font* CXFA_DefFontMgr::GetDefaultFont(IXFA_Doc* hDoc, | 1809 IFX_Font* CXFA_DefFontMgr::GetDefaultFont(IXFA_Doc* hDoc, |
| 1810 const CFX_WideStringC& wsFontFamily, | 1810 const CFX_WideStringC& wsFontFamily, |
| 1811 FX_DWORD dwFontStyles, | 1811 FX_DWORD dwFontStyles, |
| 1812 FX_WORD wCodePage) { | 1812 uint16_t wCodePage) { |
| 1813 IFX_FontMgr* pFDEFontMgr = ((CXFA_FFDoc*)hDoc)->GetApp()->GetFDEFontMgr(); | 1813 IFX_FontMgr* pFDEFontMgr = ((CXFA_FFDoc*)hDoc)->GetApp()->GetFDEFontMgr(); |
| 1814 IFX_Font* pFont = | 1814 IFX_Font* pFont = |
| 1815 pFDEFontMgr->LoadFont(L"Arial Narrow", dwFontStyles, wCodePage); | 1815 pFDEFontMgr->LoadFont(L"Arial Narrow", dwFontStyles, wCodePage); |
| 1816 if (!pFont) | 1816 if (!pFont) |
| 1817 pFont = | 1817 pFont = |
| 1818 pFDEFontMgr->LoadFont((const FX_WCHAR*)NULL, dwFontStyles, wCodePage); | 1818 pFDEFontMgr->LoadFont((const FX_WCHAR*)NULL, dwFontStyles, wCodePage); |
| 1819 FXSYS_assert(pFont); | 1819 FXSYS_assert(pFont); |
| 1820 if (pFont) { | 1820 if (pFont) { |
| 1821 m_CacheFonts.Add(pFont); | 1821 m_CacheFonts.Add(pFont); |
| 1822 } | 1822 } |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2014 iWidth = pPDFFont->GetCharWidthF(wUnicode); | 2014 iWidth = pPDFFont->GetCharWidthF(wUnicode); |
| 2015 return TRUE; | 2015 return TRUE; |
| 2016 } | 2016 } |
| 2017 CXFA_FontMgr::CXFA_FontMgr() : m_pDefFontMgr(NULL) {} | 2017 CXFA_FontMgr::CXFA_FontMgr() : m_pDefFontMgr(NULL) {} |
| 2018 CXFA_FontMgr::~CXFA_FontMgr() { | 2018 CXFA_FontMgr::~CXFA_FontMgr() { |
| 2019 DelAllMgrMap(); | 2019 DelAllMgrMap(); |
| 2020 } | 2020 } |
| 2021 IFX_Font* CXFA_FontMgr::GetFont(IXFA_Doc* hDoc, | 2021 IFX_Font* CXFA_FontMgr::GetFont(IXFA_Doc* hDoc, |
| 2022 const CFX_WideStringC& wsFontFamily, | 2022 const CFX_WideStringC& wsFontFamily, |
| 2023 FX_DWORD dwFontStyles, | 2023 FX_DWORD dwFontStyles, |
| 2024 FX_WORD wCodePage) { | 2024 uint16_t wCodePage) { |
| 2025 FX_DWORD dwHash = FX_HashCode_String_GetW(wsFontFamily.GetPtr(), | 2025 FX_DWORD dwHash = FX_HashCode_String_GetW(wsFontFamily.GetPtr(), |
| 2026 wsFontFamily.GetLength(), FALSE); | 2026 wsFontFamily.GetLength(), FALSE); |
| 2027 CFX_ByteString bsKey; | 2027 CFX_ByteString bsKey; |
| 2028 bsKey.Format("%u%u%u", dwHash, dwFontStyles, wCodePage); | 2028 bsKey.Format("%u%u%u", dwHash, dwFontStyles, wCodePage); |
| 2029 auto it = m_FontMap.find(bsKey); | 2029 auto it = m_FontMap.find(bsKey); |
| 2030 if (it != m_FontMap.end()) | 2030 if (it != m_FontMap.end()) |
| 2031 return it->second; | 2031 return it->second; |
| 2032 CFX_WideString wsEnglishName; | 2032 CFX_WideString wsEnglishName; |
| 2033 XFA_LocalFontNameToEnglishName(wsFontFamily, wsEnglishName); | 2033 XFA_LocalFontNameToEnglishName(wsFontFamily, wsEnglishName); |
| 2034 CXFA_PDFFontMgr* pMgr = (CXFA_PDFFontMgr*)m_PDFFontMgrArray.GetValueAt(hDoc); | 2034 CXFA_PDFFontMgr* pMgr = (CXFA_PDFFontMgr*)m_PDFFontMgrArray.GetValueAt(hDoc); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2080 CXFA_PDFFontMgr* pMgr = NULL; | 2080 CXFA_PDFFontMgr* pMgr = NULL; |
| 2081 m_PDFFontMgrArray.GetNextAssoc(ps, (void*&)hDoc, (void*&)pMgr); | 2081 m_PDFFontMgrArray.GetNextAssoc(ps, (void*&)hDoc, (void*&)pMgr); |
| 2082 delete pMgr; | 2082 delete pMgr; |
| 2083 } | 2083 } |
| 2084 m_PDFFontMgrArray.RemoveAll(); | 2084 m_PDFFontMgrArray.RemoveAll(); |
| 2085 m_FontMap.clear(); | 2085 m_FontMap.clear(); |
| 2086 } | 2086 } |
| 2087 void CXFA_FontMgr::SetDefFontMgr(IXFA_FontMgr* pFontMgr) { | 2087 void CXFA_FontMgr::SetDefFontMgr(IXFA_FontMgr* pFontMgr) { |
| 2088 m_pDefFontMgr = pFontMgr; | 2088 m_pDefFontMgr = pFontMgr; |
| 2089 } | 2089 } |
| OLD | NEW |