File Compile-with-newer-poppler.patch of Package kitinerary

From 6a0a4f455d58b96b8965667a7eb057abd244d87e Mon Sep 17 00:00:00 2001
From: Albert Astals Cid <aacid@kde.org>
Date: Sun, 21 Apr 2024 11:14:42 +0200
Subject: [PATCH] Compile with newer poppler

And remove ancient poppler ifdefs
---
 src/lib/pdf/pdfdocument.cpp              | 35 ++------------
 src/lib/pdf/pdfextractoroutputdevice.cpp |  2 -
 src/lib/pdf/pdfimage.cpp                 | 58 ------------------------
 src/lib/pdf/popplerglobalparams.cpp      |  9 ----
 src/lib/pdf/popplertypes_p.h             |  4 --
 src/lib/pdf/popplerutils.cpp             |  4 --
 6 files changed, 5 insertions(+), 107 deletions(-)

diff --git a/src/lib/pdf/pdfdocument.cpp b/src/lib/pdf/pdfdocument.cpp
index 417a0b85..f829e645 100644
--- a/src/lib/pdf/pdfdocument.cpp
+++ b/src/lib/pdf/pdfdocument.cpp
@@ -22,6 +22,7 @@
 #include <PDFDoc.h>
 #include <PDFDocEncoding.h>
 #include <Stream.h>
+#include <UTF.h>
 
 #include <cmath>
 
@@ -41,11 +42,7 @@ void PdfPagePrivate::load()
     const auto pageRect = m_doc->m_popplerDoc->getPage(m_pageNum + 1)->getCropBox();
     std::unique_ptr<GooString> s(device.getText(pageRect->x1, pageRect->y1, pageRect->x2, pageRect->y2));
 
-#if KPOPPLER_VERSION >= QT_VERSION_CHECK(0, 72, 0)
     m_text = QString::fromUtf8(s->c_str());
-#else
-    m_text = QString::fromUtf8(s->getCString());
-#endif
     m_images = std::move(device.m_images);
     for (auto it = m_images.begin(); it != m_images.end(); ++it) {
         (*it).d->m_page = this;
@@ -111,11 +108,7 @@ QString PdfPage::textInRect(double left, double top, double right, double bottom
     TextOutputDev device(nullptr, false, 0, false, false);
     d->m_doc->m_popplerDoc->displayPageSlice(&device, d->m_pageNum + 1, 72, 72, 0, false, true, false, -1, -1, -1, -1);
     std::unique_ptr<GooString> s(device.getText(l, t, r, b));
-#if KPOPPLER_VERSION >= QT_VERSION_CHECK(0, 72, 0)
     return QString::fromUtf8(s->c_str());
-#else
-    return QString::fromUtf8(s->getCString());
-#endif
 }
 
 int PdfPage::imageCount() const
@@ -258,11 +251,7 @@ int PdfDocument::fileSize() const
     return d->m_pdfData.size();
 }
 
-#if KPOPPLER_VERSION >= QT_VERSION_CHECK(21, 8, 0)
 static QDateTime parsePdfDateTime(const GooString *str)
-#else
-static QDateTime parsePdfDateTime(const char *str)
-#endif
 {
     int year;
     int month;
@@ -299,13 +288,7 @@ QDateTime PdfDocument::creationTime() const
     if (!dt) {
         return {};
     }
-#if KPOPPLER_VERSION >= QT_VERSION_CHECK(21, 8, 0)
     return parsePdfDateTime(dt.get());
-#elif KPOPPLER_VERSION >= QT_VERSION_CHECK(0, 72, 0)
-    return parsePdfDateTime(dt->c_str());
-#else
-    return parsePdfDateTime(dt->getCString());
-#endif
 }
 
 QDateTime PdfDocument::modificationTime() const
@@ -314,13 +297,7 @@ QDateTime PdfDocument::modificationTime() const
     if (!dt) {
         return {};
     }
-#if KPOPPLER_VERSION >= QT_VERSION_CHECK(21, 8, 0)
     return parsePdfDateTime(dt.get());
-#elif KPOPPLER_VERSION >= QT_VERSION_CHECK(0, 72, 0)
-    return parsePdfDateTime(dt->c_str());
-#else
-    return parsePdfDateTime(dt->getCString());
-#endif
 }
 
 
@@ -330,7 +307,11 @@ QString gooStringToUnicode(const std::unique_ptr<GooString> &s)
         return {};
     }
 
+#if KPOPPLER_VERSION >= QT_VERSION_CHECK(24, 5, 0)
+    if (hasUnicodeByteOrderMark(s->toStr()) || hasUnicodeByteOrderMarkLE(s->toStr())) {
+#else
     if (s->hasUnicodeMarker() || s->hasUnicodeMarkerLE()) {
+#endif
         return QString::fromUtf16(reinterpret_cast<const char16_t*>(s->toStr().c_str()), s->toStr().size() / 2);
     } else {
         int len = 0;
@@ -376,13 +357,7 @@ PdfDocument* PdfDocument::fromData(const QByteArray &data, QObject *parent)
     std::unique_ptr<PdfDocument> doc(new PdfDocument(parent));
     doc->d->m_pdfData = data;
     // PDFDoc takes ownership of stream
-#if KPOPPLER_VERSION >= QT_VERSION_CHECK(0, 58, 0)
     auto stream = new MemStream(const_cast<char*>(doc->d->m_pdfData.constData()), 0, doc->d->m_pdfData.size(), Object());
-#else
-    Object obj;
-    obj.initNull();
-    auto stream = new MemStream(const_cast<char*>(doc->d->m_pdfData.constData()), 0, doc->d->m_pdfData.size(), &obj);
-#endif
     std::unique_ptr<PDFDoc> popplerDoc(new PDFDoc(stream));
     if (!popplerDoc->isOk()) {
         qCWarning(Log) << "Got invalid PDF document!" << popplerDoc->getErrorCode();
diff --git a/src/lib/pdf/pdfextractoroutputdevice.cpp b/src/lib/pdf/pdfextractoroutputdevice.cpp
index a75cb654..4976b5d3 100644
--- a/src/lib/pdf/pdfextractoroutputdevice.cpp
+++ b/src/lib/pdf/pdfextractoroutputdevice.cpp
@@ -45,11 +45,9 @@ void PdfExtractorOutputDevice::addRasterImage(GfxState *state, Object *ref, Stre
     PdfImage pdfImg;
     pdfImg.d->m_ref = PdfImageRef(ref->getRef().num, ref->getRef().gen, type);
 
-#if KPOPPLER_VERSION >= QT_VERSION_CHECK(0, 69, 0)
     if (colorMap) {
         pdfImg.d->m_colorMap.reset(colorMap->copy());
     }
-#endif
     pdfImg.d->m_sourceHeight = height;
     pdfImg.d->m_sourceWidth = width;
     pdfImg.d->m_width = width;
diff --git a/src/lib/pdf/pdfimage.cpp b/src/lib/pdf/pdfimage.cpp
index b8f6b03d..688ea8f4 100644
--- a/src/lib/pdf/pdfimage.cpp
+++ b/src/lib/pdf/pdfimage.cpp
@@ -21,54 +21,6 @@
 
 using namespace KItinerary;
 
-// legacy image loading
-#if KPOPPLER_VERSION < QT_VERSION_CHECK(0, 69, 0)
-namespace KItinerary {
-class ImageLoaderOutputDevice : public OutputDev
-{
-public:
-    ImageLoaderOutputDevice(PdfImagePrivate *dd);
-
-    bool interpretType3Chars() override { return false; }
-    bool needNonText() override { return true; }
-    bool upsideDown() override { return false; }
-    bool useDrawChar() override { return false; }
-
-    void drawImage(GfxState *state, Object *ref, Stream *str, int width, int height, GfxImageColorMap *colorMap, bool interpolate, int *maskColors, bool inlineImg) override;
-    QImage image() const { return m_image; }
-
-private:
-    PdfImagePrivate *d;
-    QImage m_image;
-};
-
-ImageLoaderOutputDevice::ImageLoaderOutputDevice(PdfImagePrivate* dd)
-    : d(dd)
-{
-}
-
-void ImageLoaderOutputDevice::drawImage(GfxState *state, Object *ref, Stream *str, int width, int height, GfxImageColorMap *colorMap, bool interpolate, int *maskColors, bool inlineImg)
-{
-    Q_UNUSED(state)
-    Q_UNUSED(height)
-    Q_UNUSED(width)
-    Q_UNUSED(interpolate)
-    Q_UNUSED(maskColors)
-    Q_UNUSED(inlineImg)
-
-    if (!colorMap || !colorMap->isOk() || !ref) {
-        return;
-    }
-
-    if (ref->isRef() && d->refNum() != ref->getRef().num) {
-        return;
-    }
-
-    m_image = d->load(str, colorMap);
-}
-}
-#endif
-
 static inline bool isColor(GfxRGB rgb)
 {
     enum { Threshold = 72 * 256 }; // GfxComp is stored as color value * 255
@@ -159,7 +111,6 @@ QImage PdfImagePrivate::load()
 
     PopplerGlobalParams gp;
 
-#if KPOPPLER_VERSION >= QT_VERSION_CHECK(0, 69, 0)
     const auto xref = m_page->m_doc->m_popplerDoc->getXRef();
     const auto obj = xref->fetch(refNum(), refGen());
 
@@ -181,15 +132,6 @@ QImage PdfImagePrivate::load()
     }
 
     return {};
-#else
-    if (m_ref.m_type != PdfImageType::Image) {
-        return {};
-    }
-
-    std::unique_ptr<ImageLoaderOutputDevice> device(new ImageLoaderOutputDevice(this));
-    m_page->m_doc->m_popplerDoc->displayPageSlice(device.get(), m_page->m_pageNum + 1, 72, 72, 0, false, true, false, -1, -1, -1, -1);
-    return device->image();
-#endif
 }
 
 
diff --git a/src/lib/pdf/popplerglobalparams.cpp b/src/lib/pdf/popplerglobalparams.cpp
index 81f9a94e..ce2cdcba 100644
--- a/src/lib/pdf/popplerglobalparams.cpp
+++ b/src/lib/pdf/popplerglobalparams.cpp
@@ -23,21 +23,12 @@ PopplerGlobalParams::PopplerGlobalParams()
         s_globalParams = std::make_unique<GlobalParams>();
     }
 
-#if KPOPPLER_VERSION <= QT_VERSION_CHECK(0, 82, 0)
-    m_prev.reset(globalParams);
-    globalParams = s_globalParams.get();
-#else
     std::swap(globalParams, m_prev);
     std::swap(s_globalParams, globalParams);
-#endif
 }
 
 PopplerGlobalParams::~PopplerGlobalParams()
 {
-#if KPOPPLER_VERSION <= QT_VERSION_CHECK(0, 82, 0)
-    globalParams = m_prev.release();
-#else
     std::swap(s_globalParams, globalParams);
     std::swap(globalParams, m_prev);
-#endif
 }
diff --git a/src/lib/pdf/popplertypes_p.h b/src/lib/pdf/popplertypes_p.h
index 7d65ccae..13ea2c25 100644
--- a/src/lib/pdf/popplertypes_p.h
+++ b/src/lib/pdf/popplertypes_p.h
@@ -9,8 +9,4 @@
 #include <config-kitinerary.h>
 #include <qglobal.h>
 
-#if KPOPPLER_VERSION >= QT_VERSION_CHECK(0, 82, 0)
 using PopplerMaskColors = const int;
-#else
-using PopplerMaskColors = int;
-#endif
diff --git a/src/lib/pdf/popplerutils.cpp b/src/lib/pdf/popplerutils.cpp
index 79e5233b..78c05af6 100644
--- a/src/lib/pdf/popplerutils.cpp
+++ b/src/lib/pdf/popplerutils.cpp
@@ -73,11 +73,7 @@ QPainterPath PopplerUtils::convertPath(const GfxPath *path, Qt::FillRule fillRul
     qpp.setFillRule(fillRule);
 
     for (auto i = 0; i < path->getNumSubpaths(); ++i) {
-#if KPOPPLER_VERSION >= QT_VERSION_CHECK(0, 83, 0)
         const auto subpath = path->getSubpath(i);
-#else
-        const auto subpath = const_cast<GfxPath*>(path)->getSubpath(i);
-#endif
         if (subpath->getNumPoints() > 0) {
             qpp.moveTo(subpath->getX(0), subpath->getY(0));
             for (auto j = 1;j < subpath->getNumPoints();) {
-- 
GitLab

openSUSE Build Service is sponsored by