// Copyright 2014 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
+#include "../../public/fpdf_sysfontinfo.h"
#include "../include/fsdk_define.h"
-#include "../include/fpdf_sysfontinfo.h"
+#include "../include/pdfwindow/PWL_FontMap.h"
-class CSysFontInfo_Ext : public IFX_SystemFontInfo
+class CSysFontInfo_Ext final : public IFX_SystemFontInfo
{
public:
FPDF_SYSFONTINFO* m_pInfo;
- virtual void Release()
+ virtual void Release() override
{
if (m_pInfo->Release)
m_pInfo->Release(m_pInfo);
delete this;
}
- virtual FX_BOOL EnumFontList(CFX_FontMapper* pMapper)
+ virtual FX_BOOL EnumFontList(CFX_FontMapper* pMapper) override
{
if (m_pInfo->EnumFonts) {
m_pInfo->EnumFonts(m_pInfo, pMapper);
return FALSE;
}
- virtual void* MapFont(int weight, FX_BOOL bItalic, int charset, int pitch_family, FX_LPCSTR family, FX_BOOL& bExact)
+ virtual void* MapFont(int weight, FX_BOOL bItalic, int charset, int pitch_family, const FX_CHAR* family, FX_BOOL& bExact) override
{
if (m_pInfo->MapFont)
return m_pInfo->MapFont(m_pInfo, weight, bItalic, charset, pitch_family, family, &bExact);
return NULL;
}
- virtual void* GetFont(FX_LPCSTR family)
+ virtual void* GetFont(const FX_CHAR* family) override
{
if (m_pInfo->GetFont)
return m_pInfo->GetFont(m_pInfo, family);
return NULL;
}
- virtual FX_DWORD GetFontData(void* hFont, FX_DWORD table, FX_LPBYTE buffer, FX_DWORD size)
+ virtual FX_DWORD GetFontData(void* hFont, FX_DWORD table, uint8_t* buffer, FX_DWORD size) override
{
if (m_pInfo->GetFontData)
return m_pInfo->GetFontData(m_pInfo, hFont, table, buffer, size);
return 0;
}
- virtual FX_BOOL GetFaceName(void* hFont, CFX_ByteString& name)
+ virtual FX_BOOL GetFaceName(void* hFont, CFX_ByteString& name) override
{
if (m_pInfo->GetFaceName == NULL) return FALSE;
FX_DWORD size = m_pInfo->GetFaceName(m_pInfo, hFont, NULL, 0);
return TRUE;
}
- virtual FX_BOOL GetFontCharset(void* hFont, int& charset)
+ virtual FX_BOOL GetFontCharset(void* hFont, int& charset) override
{
if (m_pInfo->GetFontCharset) {
charset = m_pInfo->GetFontCharset(m_pInfo, hFont);
return FALSE;
}
- virtual void DeleteFont(void* hFont)
+ virtual void DeleteFont(void* hFont) override
{
if (m_pInfo->DeleteFont)
m_pInfo->DeleteFont(m_pInfo, hFont);
}
+
+private:
+ ~CSysFontInfo_Ext() { }
};
DLLEXPORT void STDCALL FPDF_AddInstalledFont(void* mapper, const char* name, int charset)
{
if (pFontInfoExt->version != 1) return;
- CSysFontInfo_Ext* pFontInfo = FX_NEW CSysFontInfo_Ext;
+ CSysFontInfo_Ext* pFontInfo = new CSysFontInfo_Ext;
pFontInfo->m_pInfo = pFontInfoExt;
CFX_GEModule::Get()->GetFontMgr()->SetSystemFontInfo(pFontInfo);
}
+DLLEXPORT const FPDF_CharsetFontMap* STDCALL FPDF_GetDefaultTTFMap()
+{
+ return CPWL_FontMap::defaultTTFMap;
+}
+
struct FPDF_SYSFONTINFO_DEFAULT : public FPDF_SYSFONTINFO
{
IFX_SystemFontInfo* m_pFontInfo;