diff options
author | Dan Sinclair <dsinclair@chromium.org> | 2017-09-21 09:46:03 -0400 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-09-21 18:34:29 +0000 |
commit | db0312e6acd7cc15fef0f64e05bd463cb74c70e4 (patch) | |
tree | 6ffb772e0f29f65c414adaeececc0c8e3047805d /xfa/fgas/font/cfgas_pdffontmgr.h | |
parent | 46fc3fa47dc5c863519c5c3d834319b80bf5ff4a (diff) | |
download | pdfium-db0312e6acd7cc15fef0f64e05bd463cb74c70e4.tar.xz |
Move CXFA_PDFFontMgr to CFGAS_PDFFontMgr
XFA bits passed into the PDFFontMgr are just used to get the
CPDF_Document and the CFGAS_FontMgr. This CL changes the code to pass
those two things into the constructor. Then, the fxfa/cxfa_pdffontmgr.*
code has been moved to fgas/cfgas_pdffontmgr.* to show it doesn't depend
on any of the XFA classes.
Change-Id: I21d791869e2a32ffedfd7c87bb3bbd035232d991
Reviewed-on: https://pdfium-review.googlesource.com/14550
Commit-Queue: dsinclair <dsinclair@chromium.org>
Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Diffstat (limited to 'xfa/fgas/font/cfgas_pdffontmgr.h')
-rw-r--r-- | xfa/fgas/font/cfgas_pdffontmgr.h | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/xfa/fgas/font/cfgas_pdffontmgr.h b/xfa/fgas/font/cfgas_pdffontmgr.h new file mode 100644 index 0000000000..8a09a95bd1 --- /dev/null +++ b/xfa/fgas/font/cfgas_pdffontmgr.h @@ -0,0 +1,59 @@ +// Copyright 2017 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef XFA_FGAS_FONT_CFGAS_PDFFONTMGR_H_ +#define XFA_FGAS_FONT_CFGAS_PDFFONTMGR_H_ + +#include <map> + +#include "core/fpdfapi/parser/cpdf_dictionary.h" +#include "core/fpdfapi/parser/cpdf_document.h" +#include "core/fxcrt/cfx_observable.h" +#include "core/fxcrt/cfx_retain_ptr.h" +#include "core/fxcrt/fx_string.h" + +class CFGAS_FontMgr; +class CFGAS_GEFont; +class CPDF_Document; +class CPDF_Font; + +class CFGAS_PDFFontMgr : public CFX_Observable<CFGAS_PDFFontMgr> { + public: + explicit CFGAS_PDFFontMgr(CPDF_Document* pDoc, CFGAS_FontMgr* pFontMgr); + ~CFGAS_PDFFontMgr(); + + CFX_RetainPtr<CFGAS_GEFont> GetFont(const WideStringView& wsFontFamily, + uint32_t dwFontStyles, + CPDF_Font** pPDFFont, + bool bStrictMatch); + bool GetCharWidth(const CFX_RetainPtr<CFGAS_GEFont>& pFont, + wchar_t wUnicode, + bool bCharCode, + int32_t* pWidth); + void SetFont(const CFX_RetainPtr<CFGAS_GEFont>& pFont, CPDF_Font* pPDFFont); + + private: + CFX_RetainPtr<CFGAS_GEFont> FindFont(const ByteString& strFamilyName, + bool bBold, + bool bItalic, + CPDF_Font** pPDFFont, + bool bStrictMatch); + ByteString PsNameToFontName(const ByteString& strPsName, + bool bBold, + bool bItalic); + bool PsNameMatchDRFontName(const ByteStringView& bsPsName, + bool bBold, + bool bItalic, + const ByteString& bsDRFontName, + bool bStrictMatch); + + CFX_UnownedPtr<CPDF_Document> const m_pDoc; + CFX_UnownedPtr<CFGAS_FontMgr> const m_pFontMgr; + std::map<CFX_RetainPtr<CFGAS_GEFont>, CPDF_Font*> m_FDE2PDFFont; + std::map<ByteString, CFX_RetainPtr<CFGAS_GEFont>> m_FontMap; +}; + +#endif // XFA_FGAS_FONT_CFGAS_PDFFONTMGR_H_ |