mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
media-gfx/inkscape: fix build with poppler-25.02.0
Closes: https://bugs.gentoo.org/949531 Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
This commit is contained in:
179
media-gfx/inkscape/files/inkscape-1.4-poppler-25.02.0.patch
Normal file
179
media-gfx/inkscape/files/inkscape-1.4-poppler-25.02.0.patch
Normal file
@@ -0,0 +1,179 @@
|
||||
From 5c4c6d116dae5250d75d34a45f0d9220824d2e20 Mon Sep 17 00:00:00 2001
|
||||
From: KrIr17 <elendil.krir17@gmail.com>
|
||||
Date: Sun, 9 Feb 2025 22:52:53 +0530
|
||||
Subject: [PATCH] Fix building with poppler 25.02.0
|
||||
|
||||
1. `getCodeToGIDMap`, `getCIDToGID`, `getCIDToGIDMap` are now `std::vector`
|
||||
|
||||
2. `pdfDocEncodingToUTF16` returns an `std::string`
|
||||
---
|
||||
.../pdfinput/poppler-cairo-font-engine.cpp | 50 +++++++++++++++----
|
||||
.../pdfinput/poppler-transition-api.h | 20 +++++---
|
||||
3 files changed, 63 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp b/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp
|
||||
index 728b1d1aac4..bd1d4e49367 100644
|
||||
--- a/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp
|
||||
+++ b/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp
|
||||
@@ -405,14 +405,22 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, FT_Li
|
||||
break;
|
||||
case fontCIDType2:
|
||||
case fontCIDType2OT:
|
||||
+#if POPPLER_CHECK_VERSION(25,2,0)
|
||||
+ if (!gfxcid->getCIDToGID().empty()) {
|
||||
+ const auto src = gfxcid->getCIDToGID();
|
||||
+ codeToGID = std::move(src);
|
||||
+ }
|
||||
+#else
|
||||
if (gfxcid->getCIDToGID()) {
|
||||
n = gfxcid->getCIDToGIDLen();
|
||||
if (n) {
|
||||
- const int *src = gfxcid->getCIDToGID();
|
||||
+ const auto src = gfxcid->getCIDToGID();
|
||||
codeToGID.reserve(n);
|
||||
codeToGID.insert(codeToGID.begin(), src, src + n);
|
||||
}
|
||||
- } else {
|
||||
+ }
|
||||
+#endif
|
||||
+ else {
|
||||
#if POPPLER_CHECK_VERSION(22, 1, 0)
|
||||
std::unique_ptr<FoFiTrueType> ff;
|
||||
#else
|
||||
@@ -427,13 +435,18 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, FT_Li
|
||||
goto err2;
|
||||
}
|
||||
#if POPPLER_CHECK_VERSION(22, 1, 0)
|
||||
- int *src = gfxcid->getCodeToGIDMap(ff.get(), &n);
|
||||
+ auto src = gfxcid->_POPPLER_GET_CODE_TO_GID_MAP(ff.get(), &n);
|
||||
#else
|
||||
- int *src = gfxcid->getCodeToGIDMap(ff, &n);
|
||||
+ auto src = gfxcid->_POPPLER_GET_CODE_TO_GID_MAP(ff, &n);
|
||||
#endif
|
||||
+
|
||||
+#if POPPLER_CHECK_VERSION(25,2,0)
|
||||
+ codeToGID = std::move(src);
|
||||
+#else
|
||||
codeToGID.reserve(n);
|
||||
codeToGID.insert(codeToGID.begin(), src, src + n);
|
||||
gfree(src);
|
||||
+#endif
|
||||
}
|
||||
/* Fall through */
|
||||
case fontTrueType:
|
||||
@@ -455,13 +468,17 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, FT_Li
|
||||
/* This might be set already for the CIDType2 case */
|
||||
if (fontType == fontTrueType || fontType == fontTrueTypeOT) {
|
||||
#if POPPLER_CHECK_VERSION(22, 1, 0)
|
||||
- int *src = gfx8bit->getCodeToGIDMap(ff.get());
|
||||
+ auto src = gfx8bit->getCodeToGIDMap(ff.get());
|
||||
#else
|
||||
- int *src = gfx8bit->getCodeToGIDMap(ff);
|
||||
+ auto src = gfx8bit->getCodeToGIDMap(ff);
|
||||
#endif
|
||||
+#if POPPLER_CHECK_VERSION(25,2,0)
|
||||
+ codeToGID = std::move(src);
|
||||
+#else
|
||||
codeToGID.reserve(256);
|
||||
codeToGID.insert(codeToGID.begin(), src, src + 256);
|
||||
gfree(src);
|
||||
+#endif
|
||||
}
|
||||
font_face = getFreeTypeFontFace(fontEngine, lib, fileName, std::move(font_data));
|
||||
if (!font_face) {
|
||||
@@ -479,10 +496,14 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, FT_Li
|
||||
ff1c = FoFiType1C::load(fileName.c_str());
|
||||
}
|
||||
if (ff1c) {
|
||||
- int *src = ff1c->getCIDToGIDMap(&n);
|
||||
+ auto src = ff1c->_POPPLER_GET_CID_TO_GID_MAP(&n);
|
||||
+#if POPPLER_CHECK_VERSION(25,2,0)
|
||||
+ codeToGID = std::move(src);
|
||||
+#else
|
||||
codeToGID.reserve(n);
|
||||
codeToGID.insert(codeToGID.begin(), src, src + n);
|
||||
gfree(src);
|
||||
+#endif
|
||||
delete ff1c;
|
||||
}
|
||||
}
|
||||
@@ -495,14 +516,21 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, FT_Li
|
||||
break;
|
||||
|
||||
case fontCIDType0COT:
|
||||
+#if POPPLER_CHECK_VERSION(25,2,0)
|
||||
+ if (!gfxcid->getCIDToGID().empty()) {
|
||||
+ const auto src = gfxcid->getCIDToGID();
|
||||
+ codeToGID = std::move(src);
|
||||
+ }
|
||||
+#else
|
||||
if (gfxcid->getCIDToGID()) {
|
||||
n = gfxcid->getCIDToGIDLen();
|
||||
if (n) {
|
||||
- const int *src = gfxcid->getCIDToGID();
|
||||
+ const auto src = gfxcid->getCIDToGID();
|
||||
codeToGID.reserve(n);
|
||||
codeToGID.insert(codeToGID.begin(), src, src + n);
|
||||
}
|
||||
}
|
||||
+#endif
|
||||
|
||||
if (codeToGID.empty()) {
|
||||
if (!useCIDs) {
|
||||
@@ -518,10 +546,14 @@ CairoFreeTypeFont *CairoFreeTypeFont::create(GfxFont *gfxFont, XRef *xref, FT_Li
|
||||
}
|
||||
if (ff) {
|
||||
if (ff->isOpenTypeCFF()) {
|
||||
- int *src = ff->getCIDToGIDMap(&n);
|
||||
+ auto src = ff1c->_POPPLER_GET_CID_TO_GID_MAP(&n);
|
||||
+#if POPPLER_CHECK_VERSION(25,2,0)
|
||||
+ codeToGID = std::move(src);
|
||||
+#else
|
||||
codeToGID.reserve(n);
|
||||
codeToGID.insert(codeToGID.begin(), src, src + n);
|
||||
gfree(src);
|
||||
+#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
diff --git a/src/extension/internal/pdfinput/poppler-transition-api.h b/src/extension/internal/pdfinput/poppler-transition-api.h
|
||||
index b7a54828e74..a67132ba6bd 100644
|
||||
--- a/src/extension/internal/pdfinput/poppler-transition-api.h
|
||||
+++ b/src/extension/internal/pdfinput/poppler-transition-api.h
|
||||
@@ -15,6 +15,20 @@
|
||||
#include <glib/poppler-features.h>
|
||||
#include <poppler/UTF.h>
|
||||
|
||||
+#if POPPLER_CHECK_VERSION(25,2,0)
|
||||
+#define _POPPLER_GET_CODE_TO_GID_MAP(ff, len) getCodeToGIDMap(ff)
|
||||
+#define _POPPLER_GET_CID_TO_GID_MAP(len) getCIDToGIDMap()
|
||||
+#else
|
||||
+#define _POPPLER_GET_CODE_TO_GID_MAP(ff, len) getCodeToGIDMap(ff, len)
|
||||
+#define _POPPLER_GET_CID_TO_GID_MAP(len) getCIDToGIDMap(len)
|
||||
+#endif
|
||||
+
|
||||
+#if POPPLER_CHECK_VERSION(24,12,0)
|
||||
+#define _POPPLER_GET_IMAGE_PARAMS(bits, csMode, hasAlpha) getImageParams(bits, csMode, hasAlpha)
|
||||
+#else
|
||||
+#define _POPPLER_GET_IMAGE_PARAMS(bits, csMode, hasAlpha) getImageParams(bits, csMode)
|
||||
+#endif
|
||||
+
|
||||
#if POPPLER_CHECK_VERSION(24, 10, 0)
|
||||
#define _POPPLER_CONSUME_UNIQPTR_ARG(value) std::move(value)
|
||||
#else
|
||||
@@ -39,12 +53,6 @@
|
||||
#define _POPPLER_FUNCTION_TYPE_STITCHING 3
|
||||
#endif
|
||||
|
||||
-#if POPPLER_CHECK_VERSION(24,12,0)
|
||||
-#define _POPPLER_GET_IMAGE_PARAMS(bits, csMode, hasAlpha) getImageParams(bits, csMode, hasAlpha)
|
||||
-#else
|
||||
-#define _POPPLER_GET_IMAGE_PARAMS(bits, csMode, hasAlpha) getImageParams(bits, csMode)
|
||||
-#endif
|
||||
-
|
||||
#if POPPLER_CHECK_VERSION(22, 4, 0)
|
||||
#define _POPPLER_FONTPTR_TO_GFX8(font_ptr) ((Gfx8BitFont *)font_ptr.get())
|
||||
#else
|
||||
--
|
||||
GitLab
|
||||
|
||||
@@ -117,6 +117,7 @@ PATCHES=(
|
||||
"${FILESDIR}"/${PN}-1.4-poppler-24.10-fix-backport.patch
|
||||
"${FILESDIR}"/${P}-poppler-24.11.0.patch # bug 943499
|
||||
"${FILESDIR}"/${P}-poppler-24.12.0.patch # bug 946597
|
||||
"${FILESDIR}"/${P}-poppler-25.02.0.patch # bug 949531
|
||||
)
|
||||
|
||||
pkg_pretend() {
|
||||
|
||||
Reference in New Issue
Block a user