Cleanup: Remove CFX_MapPtrToPtr from fpdfppo.cpp.
[pdfium.git] / fpdfsdk / src / fpdf_sysfontinfo.cpp
index 4c6b784..249055d 100644 (file)
@@ -1,25 +1,26 @@
 // 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);
@@ -28,28 +29,28 @@ public:
                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);
@@ -61,7 +62,7 @@ public:
                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);
@@ -70,11 +71,14 @@ public:
                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)
@@ -86,11 +90,16 @@ DLLEXPORT void STDCALL FPDF_SetSystemFontInfo(FPDF_SYSFONTINFO* pFontInfoExt)
 {
        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;