From db0312e6acd7cc15fef0f64e05bd463cb74c70e4 Mon Sep 17 00:00:00 2001 From: Dan Sinclair Date: Thu, 21 Sep 2017 09:46:03 -0400 Subject: 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 Reviewed-by: Henrique Nakashima Reviewed-by: Tom Sepez --- xfa/fgas/font/cfgas_pdffontmgr.h | 59 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 xfa/fgas/font/cfgas_pdffontmgr.h (limited to 'xfa/fgas/font/cfgas_pdffontmgr.h') 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 + +#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 { + public: + explicit CFGAS_PDFFontMgr(CPDF_Document* pDoc, CFGAS_FontMgr* pFontMgr); + ~CFGAS_PDFFontMgr(); + + CFX_RetainPtr GetFont(const WideStringView& wsFontFamily, + uint32_t dwFontStyles, + CPDF_Font** pPDFFont, + bool bStrictMatch); + bool GetCharWidth(const CFX_RetainPtr& pFont, + wchar_t wUnicode, + bool bCharCode, + int32_t* pWidth); + void SetFont(const CFX_RetainPtr& pFont, CPDF_Font* pPDFFont); + + private: + CFX_RetainPtr 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 const m_pDoc; + CFX_UnownedPtr const m_pFontMgr; + std::map, CPDF_Font*> m_FDE2PDFFont; + std::map> m_FontMap; +}; + +#endif // XFA_FGAS_FONT_CFGAS_PDFFONTMGR_H_ -- cgit v1.2.3