// Copyright 2016 The PDFium Authors // 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 CORE_FXGE_CFX_GEMODULE_H_ #define CORE_FXGE_CFX_GEMODULE_H_ #include #include #include "build/build_config.h" #if BUILDFLAG(IS_APPLE) #include "third_party/base/span.h" #endif class CFX_FontCache; class CFX_FontMgr; class SystemFontInfoIface; class CFX_GEModule { public: class PlatformIface { public: static std::unique_ptr Create(); virtual ~PlatformIface() = default; virtual void Init() = 0; virtual std::unique_ptr CreateDefaultSystemFontInfo() = 0; #if BUILDFLAG(IS_APPLE) virtual void* CreatePlatformFont(pdfium::span font_span) = 0; #endif }; static void Create(const char** pUserFontPaths); static void Destroy(); static CFX_GEModule* Get(); CFX_FontCache* GetFontCache() const { return m_pFontCache.get(); } CFX_FontMgr* GetFontMgr() const { return m_pFontMgr.get(); } PlatformIface* GetPlatform() const { return m_pPlatform.get(); } const char** GetUserFontPaths() const { return m_pUserFontPaths; } private: explicit CFX_GEModule(const char** pUserFontPaths); ~CFX_GEModule(); std::unique_ptr const m_pPlatform; std::unique_ptr const m_pFontMgr; std::unique_ptr const m_pFontCache; const char** const m_pUserFontPaths; }; #endif // CORE_FXGE_CFX_GEMODULE_H_