mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-17 02:39:08 -07:00
media-gfx/inkscape: Fix build w/ >=app-text/poppler-25.09.0
Closes: https://bugs.gentoo.org/962278 Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
This commit is contained in:
109
media-gfx/inkscape/files/inkscape-1.4-poppler-25.09.0.patch
Normal file
109
media-gfx/inkscape/files/inkscape-1.4-poppler-25.09.0.patch
Normal file
@@ -0,0 +1,109 @@
|
||||
From b60d81745016b5f20d4c6aec6d073b8a6f3e499c Mon Sep 17 00:00:00 2001
|
||||
From: mike kowalski <michal_kowalski@hotmail.com>
|
||||
Date: Tue, 2 Sep 2025 07:17:25 -0700
|
||||
Subject: [PATCH] Fix build with poppler 25.09.0
|
||||
|
||||
API changes: double* -> std::array necessitates fixes in Inkscape.
|
||||
The goal is to make it build with older poppler versions too.
|
||||
---
|
||||
src/extension/internal/pdfinput/pdf-parser.cpp | 3 +--
|
||||
src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp | 2 +-
|
||||
src/extension/internal/pdfinput/poppler-utils.cpp | 4 ++++
|
||||
src/extension/internal/pdfinput/poppler-utils.h | 4 ++++
|
||||
src/extension/internal/pdfinput/svg-builder.cpp | 4 ++--
|
||||
5 files changed, 12 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/src/extension/internal/pdfinput/pdf-parser.cpp b/src/extension/internal/pdfinput/pdf-parser.cpp
|
||||
index 50d5e8ef8e1..1bdd0c6374c 100644
|
||||
--- a/src/extension/internal/pdfinput/pdf-parser.cpp
|
||||
+++ b/src/extension/internal/pdfinput/pdf-parser.cpp
|
||||
@@ -1656,12 +1656,11 @@ void PdfParser::doFunctionShFill1(GfxFunctionShading *shading,
|
||||
GfxColor color0M, color1M, colorM0, colorM1, colorMM;
|
||||
GfxColor colors2[4];
|
||||
double functionColorDelta = colorDeltas[pdfFunctionShading-1];
|
||||
- const double *matrix;
|
||||
double xM, yM;
|
||||
int nComps, i, j;
|
||||
|
||||
nComps = shading->getColorSpace()->getNComps();
|
||||
- matrix = shading->getMatrix();
|
||||
+ const auto& matrix = shading->getMatrix();
|
||||
|
||||
// compare the four corner colors
|
||||
for (i = 0; i < 4; ++i) {
|
||||
diff --git a/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp b/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp
|
||||
index cfc6961f629..986c19e1d81 100644
|
||||
--- a/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp
|
||||
+++ b/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp
|
||||
@@ -633,7 +633,7 @@ static cairo_status_t _init_type3_glyph(cairo_scaled_font_t *scaled_font, cairo_
|
||||
|
||||
info = (type3_font_info_t *)cairo_font_face_get_user_data(cairo_scaled_font_get_font_face(scaled_font),
|
||||
&type3_font_key);
|
||||
- const double *mat = info->font->getFontBBox();
|
||||
+ const auto& mat = info->font->getFontBBox();
|
||||
extents->ascent = mat[3]; /* y2 */
|
||||
extents->descent = -mat[3]; /* -y1 */
|
||||
extents->height = extents->ascent + extents->descent;
|
||||
diff --git a/src/extension/internal/pdfinput/poppler-utils.cpp b/src/extension/internal/pdfinput/poppler-utils.cpp
|
||||
index 6af37ce7f95..a50f59001bb 100644
|
||||
--- a/src/extension/internal/pdfinput/poppler-utils.cpp
|
||||
+++ b/src/extension/internal/pdfinput/poppler-utils.cpp
|
||||
@@ -39,6 +39,10 @@ Geom::Affine ctmToAffine(const double *ctm)
|
||||
return Geom::Affine(ctm[0], ctm[1], ctm[2], ctm[3], ctm[4], ctm[5]);
|
||||
}
|
||||
|
||||
+Geom::Affine ctmToAffine(const std::array<double, 6>& ctm) {
|
||||
+ return ctmToAffine(ctm.data());
|
||||
+}
|
||||
+
|
||||
void ctmout(const char *label, const double *ctm)
|
||||
{
|
||||
std::cout << "C:" << label << ":" << ctm[0] << "," << ctm[1] << "," << ctm[2] << "," << ctm[3] << "," << ctm[4]
|
||||
diff --git a/src/extension/internal/pdfinput/poppler-utils.h b/src/extension/internal/pdfinput/poppler-utils.h
|
||||
index 705665a8cd6..55c7ae4da54 100644
|
||||
--- a/src/extension/internal/pdfinput/poppler-utils.h
|
||||
+++ b/src/extension/internal/pdfinput/poppler-utils.h
|
||||
@@ -13,6 +13,7 @@
|
||||
#ifndef POPPLER_UTILS_H
|
||||
#define POPPLER_UTILS_H
|
||||
|
||||
+#include <array>
|
||||
#include <map>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
@@ -36,7 +37,10 @@ class Ref;
|
||||
class XRef;
|
||||
|
||||
Geom::Affine stateToAffine(GfxState *state);
|
||||
+// this function is for Poppler older than v25.09.0
|
||||
Geom::Affine ctmToAffine(const double *ctm);
|
||||
+// this flavor is for Poppler v25.09.0 and above
|
||||
+Geom::Affine ctmToAffine(const std::array<double, 6>& ctm);
|
||||
|
||||
void ctmout(const char *label, const double *ctm);
|
||||
void affout(const char *label, Geom::Affine affine);
|
||||
diff --git a/src/extension/internal/pdfinput/svg-builder.cpp b/src/extension/internal/pdfinput/svg-builder.cpp
|
||||
index d612602738f..fbc39653c38 100644
|
||||
--- a/src/extension/internal/pdfinput/svg-builder.cpp
|
||||
+++ b/src/extension/internal/pdfinput/svg-builder.cpp
|
||||
@@ -1136,7 +1136,7 @@ gchar *SvgBuilder::_createTilingPattern(GfxTilingPattern *tiling_pattern,
|
||||
pattern_node->setAttribute("patternUnits", "userSpaceOnUse");
|
||||
// Set pattern tiling
|
||||
// FIXME: don't ignore XStep and YStep
|
||||
- const double *bbox = tiling_pattern->getBBox();
|
||||
+ const auto& bbox = tiling_pattern->getBBox();
|
||||
pattern_node->setAttributeSvgDouble("x", 0.0);
|
||||
pattern_node->setAttributeSvgDouble("y", 0.0);
|
||||
pattern_node->setAttributeSvgDouble("width", bbox[2] - bbox[0]);
|
||||
@@ -1367,7 +1367,7 @@ void SvgBuilder::updateFont(GfxState *state, std::shared_ptr<CairoFont> cairo_fo
|
||||
|
||||
auto new_font_size = state->getFontSize();
|
||||
if (font->getType() == fontType3) {
|
||||
- const double *font_matrix = font->getFontMatrix();
|
||||
+ const auto& font_matrix = font->getFontMatrix();
|
||||
if (font_matrix[0] != 0.0) {
|
||||
new_font_size *= font_matrix[3] / font_matrix[0];
|
||||
}
|
||||
--
|
||||
GitLab
|
||||
|
||||
@@ -116,8 +116,7 @@ PATCHES=(
|
||||
"${FILESDIR}"/${PN}-1.4-gcc15.patch
|
||||
"${FILESDIR}"/${PN}-1.4-poppler-24.10-fix-backport.patch
|
||||
"${FILESDIR}"/${P}-poppler-24.{11,12}.0.patch # bugs 943499, 946597
|
||||
"${FILESDIR}"/${P}-poppler-25.{02,06}.0.patch # bugs 949531, 957137
|
||||
"${FILESDIR}"/${P}-poppler-25.07.0.patch # pending for git master
|
||||
"${FILESDIR}"/${P}-poppler-25.{02,06,07,09}.0.patch # bugs 949531, 957137, 962278
|
||||
"${FILESDIR}"/${P}-cmake4.patch
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user