Allow compiling PDFium without V8.
[pdfium.git] / fpdfsdk / src / fpdfview.cpp
index 8895dce..b050e03 100644 (file)
@@ -14,6 +14,7 @@
 #include "../include/fsdk_define.h"
 #include "../include/fsdk_mgr.h"
 #include "../include/fsdk_rendercontext.h"
+#include "../include/javascript/IJavaScript.h"
 
 CPDF_CustomAccess::CPDF_CustomAccess(FPDF_FILEACCESS* pFileAccess) {
   if (pFileAccess)
@@ -61,19 +62,16 @@ FPDF_BOOL FSDK_IsSandBoxPolicyEnabled(FPDF_DWORD policy) {
   }
 }
 
-#ifndef _T
-#define _T(x) x
-#endif
-
 CCodec_ModuleMgr* g_pCodecModule = nullptr;
 
 #if _FX_OS_ == _FX_LINUX_EMBEDDED_
 class CFontMapper : public IPDF_FontMapper {
  public:
   CFontMapper();
-  virtual ~CFontMapper();
+  ~CFontMapper() override;
 
-  virtual FT_Face FindSubstFont(
+  // IPDF_FontMapper
+  FT_Face FindSubstFont(
       CPDF_Document* pDoc,              // [IN] The PDF document
       const CFX_ByteString& face_name,  // [IN] Original name
       FX_BOOL bTrueType,                // [IN] TrueType or Type1
@@ -82,7 +80,7 @@ class CFontMapper : public IPDF_FontMapper {
       int CharsetCP,    // [IN] code page for charset (see Win32 GetACP())
       FX_BOOL bVertical,
       CPDF_SubstFont* pSubstFont  // [OUT] Subst font data
-      );
+      ) override;
 
   FT_Face m_SysFace;
 };
@@ -91,9 +89,14 @@ CFontMapper* g_pFontMapper = NULL;
 #endif  // #if _FX_OS_ == _FX_LINUX_EMBEDDED_
 
 DLLEXPORT void STDCALL FPDF_InitLibrary() {
+  FPDF_InitLibraryWithConfig(nullptr);
+}
+
+DLLEXPORT void STDCALL FPDF_InitLibraryWithConfig(
+    const FPDF_LIBRARY_CONFIG* cfg) {
   g_pCodecModule = new CCodec_ModuleMgr();
 
-  CFX_GEModule::Create();
+  CFX_GEModule::Create(cfg ? cfg->m_pUserFontPaths : nullptr);
   CFX_GEModule::Get()->SetCodecModule(g_pCodecModule);
 
   CPDF_ModuleMgr::Create();
@@ -107,6 +110,8 @@ DLLEXPORT void STDCALL FPDF_InitLibrary() {
     pModuleMgr->LoadEmbeddedCNS1CMaps();
     pModuleMgr->LoadEmbeddedKorea1CMaps();
   }
+  if (cfg && cfg->version >= 2)
+    IJS_Runtime::Initialize(cfg->m_v8EmbedderSlot, cfg->m_pIsolate);
 }
 
 DLLEXPORT void STDCALL FPDF_DestroyLibrary() {
@@ -155,7 +160,6 @@ DLLEXPORT void STDCALL FPDF_SetSandBoxPolicy(FPDF_DWORD policy,
   return FSDK_SetSandBoxPolicy(policy, enable);
 }
 
-
 DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadDocument(FPDF_STRING file_path,
                                                   FPDF_BYTESTRING password) {
   // NOTE: the creation of the file needs to be by the embedder on the
@@ -177,8 +181,6 @@ DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_LoadDocument(FPDF_STRING file_path,
   return pParser->GetDocument();
 }
 
-extern void CheckUnSupportError(CPDF_Document* pDoc, FX_DWORD err_code);
-
 class CMemFile final : public IFX_FileRead {
  public:
   CMemFile(uint8_t* pBuf, FX_FILESIZE size) : m_pBuf(pBuf), m_size(size) {}
@@ -200,6 +202,8 @@ class CMemFile final : public IFX_FileRead {
   }
 
  private:
+  ~CMemFile() {}
+
   uint8_t* m_pBuf;
   FX_FILESIZE m_size;
 };