include/vcl/filter/PDFiumLibrary.hxx       |    2 ++
 include/vcl/pdf/PDFErrorType.hxx           |   28 ++++++++++++++++++++++++++++
 vcl/source/graphic/VectorGraphicSearch.cxx |   16 ++++++++--------
 vcl/source/pdf/PDFiumLibrary.cxx           |   17 +++++++++++++++++
 4 files changed, 55 insertions(+), 8 deletions(-)

New commits:
commit 9487e0dff64e234169863f69b677f9616401f459
Author:     Miklos Vajna <vmik...@collabora.com>
AuthorDate: Mon Feb 15 21:06:01 2021 +0100
Commit:     Miklos Vajna <vmik...@collabora.com>
CommitDate: Tue Feb 16 09:04:59 2021 +0100

    pdfium: add a FPDF_GetLastError() wrapper
    
    And also an enum class for its return values.
    
    Change-Id: I9a001386831b2230a397194df3cf3b331d5242ad
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110952
    Tested-by: Jenkins
    Reviewed-by: Miklos Vajna <vmik...@collabora.com>

diff --git a/include/vcl/filter/PDFiumLibrary.hxx 
b/include/vcl/filter/PDFiumLibrary.hxx
index eea1be960291..8a3e05b5b2d2 100644
--- a/include/vcl/filter/PDFiumLibrary.hxx
+++ b/include/vcl/filter/PDFiumLibrary.hxx
@@ -37,6 +37,7 @@
 #include <vcl/pdf/PDFTextRenderMode.hxx>
 #include <vcl/pdf/PDFFillMode.hxx>
 #include <vcl/pdf/PDFFindFlags.hxx>
+#include <vcl/pdf/PDFErrorType.hxx>
 
 #include <fpdf_doc.h>
 
@@ -69,6 +70,7 @@ public:
     const OUString& getLastError() const { return maLastError; }
 
     std::unique_ptr<PDFiumDocument> openDocument(const void* pData, int nSize);
+    static PDFErrorType getLastErrorCode();
     std::unique_ptr<PDFiumBitmap> createBitmap(int nWidth, int nHeight, int 
nAlpha);
 };
 
diff --git a/include/vcl/pdf/PDFErrorType.hxx b/include/vcl/pdf/PDFErrorType.hxx
new file mode 100644
index 000000000000..82cee9e5e744
--- /dev/null
+++ b/include/vcl/pdf/PDFErrorType.hxx
@@ -0,0 +1,28 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ */
+
+#pragma once
+
+namespace vcl::pdf
+{
+enum class PDFErrorType
+{
+    Success = 0,
+    Unknown = 1,
+    File = 2,
+    Format = 3,
+    Password = 4,
+    Security = 5,
+    Page = 6,
+};
+
+} // namespace vcl::pdf
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/source/graphic/VectorGraphicSearch.cxx 
b/vcl/source/graphic/VectorGraphicSearch.cxx
index 09839c3524ef..a32d7d93e5ed 100644
--- a/vcl/source/graphic/VectorGraphicSearch.cxx
+++ b/vcl/source/graphic/VectorGraphicSearch.cxx
@@ -233,21 +233,21 @@ bool 
VectorGraphicSearch::searchPDF(std::shared_ptr<VectorGraphicData> const& rD
     if (!mpImplementation->mpPdfDocument)
     {
         //TODO: Handle failure to load.
-        switch (FPDF_GetLastError())
+        switch (vcl::pdf::PDFium::getLastErrorCode())
         {
-            case FPDF_ERR_SUCCESS:
+            case vcl::pdf::PDFErrorType::Success:
                 break;
-            case FPDF_ERR_UNKNOWN:
+            case vcl::pdf::PDFErrorType::Unknown:
                 break;
-            case FPDF_ERR_FILE:
+            case vcl::pdf::PDFErrorType::File:
                 break;
-            case FPDF_ERR_FORMAT:
+            case vcl::pdf::PDFErrorType::Format:
                 break;
-            case FPDF_ERR_PASSWORD:
+            case vcl::pdf::PDFErrorType::Password:
                 break;
-            case FPDF_ERR_SECURITY:
+            case vcl::pdf::PDFErrorType::Security:
                 break;
-            case FPDF_ERR_PAGE:
+            case vcl::pdf::PDFErrorType::Page:
                 break;
             default:
                 break;
diff --git a/vcl/source/pdf/PDFiumLibrary.cxx b/vcl/source/pdf/PDFiumLibrary.cxx
index 275b5f5e21be..29d5bb8f3ba6 100644
--- a/vcl/source/pdf/PDFiumLibrary.cxx
+++ b/vcl/source/pdf/PDFiumLibrary.cxx
@@ -122,6 +122,21 @@ 
static_assert(static_cast<int>(vcl::pdf::PDFFindFlags::MatchWholeWord) == FPDF_M
 static_assert(static_cast<int>(vcl::pdf::PDFFindFlags::Consecutive) == 
FPDF_CONSECUTIVE,
               "PDFFindFlags::Consecutive value mismatch");
 
+static_assert(static_cast<int>(vcl::pdf::PDFErrorType::Success) == 
FPDF_ERR_SUCCESS,
+              "PDFErrorType::Success value mismatch");
+static_assert(static_cast<int>(vcl::pdf::PDFErrorType::Unknown) == 
FPDF_ERR_UNKNOWN,
+              "PDFErrorType::Unknown value mismatch");
+static_assert(static_cast<int>(vcl::pdf::PDFErrorType::File) == FPDF_ERR_FILE,
+              "PDFErrorType::File value mismatch");
+static_assert(static_cast<int>(vcl::pdf::PDFErrorType::Format) == 
FPDF_ERR_FORMAT,
+              "PDFErrorType::Format value mismatch");
+static_assert(static_cast<int>(vcl::pdf::PDFErrorType::Password) == 
FPDF_ERR_PASSWORD,
+              "PDFErrorType::Password value mismatch");
+static_assert(static_cast<int>(vcl::pdf::PDFErrorType::Security) == 
FPDF_ERR_SECURITY,
+              "PDFErrorType::Security value mismatch");
+static_assert(static_cast<int>(vcl::pdf::PDFErrorType::Page) == FPDF_ERR_PAGE,
+              "PDFErrorType::Page value mismatch");
+
 namespace
 {
 /// Callback class to be used with FPDF_SaveWithVersion().
@@ -406,6 +421,8 @@ std::unique_ptr<PDFiumDocument> PDFium::openDocument(const 
void* pData, int nSiz
     return pPDFiumDocument;
 }
 
+PDFErrorType PDFium::getLastErrorCode() { return 
static_cast<PDFErrorType>(FPDF_GetLastError()); }
+
 std::unique_ptr<PDFiumBitmap> PDFium::createBitmap(int nWidth, int nHeight, 
int nAlpha)
 {
     std::unique_ptr<PDFiumBitmap> pPDFiumBitmap;
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to