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