From 05ec147758a7488cc7f11a486418dfc2800e8792 Mon Sep 17 00:00:00 2001 From: Rmys Date: Sat, 21 Feb 2026 22:50:52 +0300 Subject: [PATCH] inkscape ver. bump --- .../inkscape/files/poppler26.02.patch | 138 ++++++++++++++++++ multimedia/graphics/inkscape/pspec.xml | 2 +- 2 files changed, 139 insertions(+), 1 deletion(-) create mode 100644 multimedia/graphics/inkscape/files/poppler26.02.patch diff --git a/multimedia/graphics/inkscape/files/poppler26.02.patch b/multimedia/graphics/inkscape/files/poppler26.02.patch new file mode 100644 index 0000000000..ff60546847 --- /dev/null +++ b/multimedia/graphics/inkscape/files/poppler26.02.patch @@ -0,0 +1,138 @@ +diff -up inkscape-1.4.3_2025-12-25_0d15f75042/src/extension/internal/pdfinput/pdf-parser.cpp.omv~ inkscape-1.4.3_2025-12-25_0d15f75042/src/extension/internal/pdfinput/pdf-parser.cpp +--- inkscape-1.4.3_2025-12-25_0d15f75042/src/extension/internal/pdfinput/pdf-parser.cpp.omv~ 2026-02-07 15:27:45.476486393 +0100 ++++ inkscape-1.4.3_2025-12-25_0d15f75042/src/extension/internal/pdfinput/pdf-parser.cpp 2026-02-07 15:53:11.245328003 +0100 +@@ -653,7 +653,7 @@ void PdfParser::opSetFlat(Object args[], + void PdfParser::opSetLineJoin(Object args[], int /*numArgs*/) + { + builder->beforeStateChange(state); +- state->setLineJoin(args[0].getInt()); ++ state->setLineJoin((GfxState::LineJoinStyle)args[0].getInt()); + builder->updateStyle(state); + } + +@@ -661,7 +661,7 @@ void PdfParser::opSetLineJoin(Object arg + void PdfParser::opSetLineCap(Object args[], int /*numArgs*/) + { + builder->beforeStateChange(state); +- state->setLineCap(args[0].getInt()); ++ state->setLineCap((GfxState::LineCapStyle)args[0].getInt()); + builder->updateStyle(state); + } + +@@ -1565,7 +1565,9 @@ void PdfParser::doShadingPatternFillFall + + // restore graphics state + restoreState(); +- state->setPath(savedPath); ++ state->clearPath(); ++ GfxPath *currPath = const_cast(state->getPath()); ++ currPath->append(savedPath); + } + + // TODO not good that numArgs is ignored but args[] is used: +@@ -1626,7 +1628,9 @@ void PdfParser::opShFill(Object args[], + // restore graphics state + if (savedState) { + restoreState(); +- state->setPath(savedPath); ++ state->clearPath(); ++ GfxPath *currPath = const_cast(state->getPath()); ++ currPath->append(savedPath); + } + } + +@@ -2213,7 +2217,7 @@ void PdfParser::opShowSpaceText(Object a + { + Array *a = nullptr; + Object obj; +- int wMode = 0; // Writing mode (horizontal/vertical). ++ GfxFont::WritingMode wMode = GfxFont::WritingMode::Horizontal; // Writing mode (horizontal/vertical). + + if (!state->getFont()) { + error(errSyntaxError, getPos(), "No font in show/space"); +@@ -2227,7 +2231,7 @@ void PdfParser::opShowSpaceText(Object a + if (obj.isNum()) { + // this uses the absolute value of the font size to match + // Acrobat's behavior +- if (wMode) { ++ if (wMode != GfxFont::WritingMode::Horizontal) { + state->textShift(0, -obj.getNum() * 0.001 * + fabs(state->getFontSize())); + } else { +@@ -2254,7 +2258,7 @@ void PdfParser::doShowText(const GooStri + void PdfParser::doShowText(GooString *s) { + #endif + auto font = state->getFont(); +- int wMode = font->getWMode(); // Vertical/Horizontal/Invalid ++ GfxFont::WritingMode wMode = font->getWMode(); // Vertical/Horizontal/Invalid + + builder->beginString(state, get_goostring_length(*s)); + +@@ -2289,7 +2293,7 @@ void PdfParser::doShowText(GooString *s) + auto ax = dx; + auto ay = dy; + +- if (wMode != 0) { ++ if (wMode != GfxFont::WritingMode::Horizontal) { + // Vertical text (or invalid value). + dy += state->getCharSpace(); + if (n == 1 && *p == ' ') { +@@ -2964,7 +2968,7 @@ Stream *PdfParser::buildImageStream() { + // make stream + #if defined(POPPLER_NEW_OBJECT_API) + str = new EmbedStream(parser->getStream(), dict.copy(), gFalse, 0); +- str = str->addFilters(dict.getDict()); ++ str = str->addFilters(std::unique_ptr(str), dict.getDict()).release(); + #else + str = new EmbedStream(parser->getStream(), &dict, gFalse, 0); + str = str->addFilters(&dict); +@@ -3138,7 +3142,7 @@ void PdfParser::loadOptionalContentLayer + // Normally we'd use poppler optContentIsVisible, but these dict + // objects don't retain their references so can't be used directly. + for (auto &[ref, ocg] : ocgs->getOCGs()) { +- if (ocg->getName()->cmp(label) == 0) ++ if (ocg->getName()->toStr() == label) + visible = ocg->getState() == OptionalContentGroup::On; + } + builder->addOptionalGroup(dict->getKey(j), label, visible); +diff -up inkscape-1.4.3_2025-12-25_0d15f75042/src/extension/internal/pdfinput/svg-builder.cpp.omv~ inkscape-1.4.3_2025-12-25_0d15f75042/src/extension/internal/pdfinput/svg-builder.cpp +--- inkscape-1.4.3_2025-12-25_0d15f75042/src/extension/internal/pdfinput/svg-builder.cpp.omv~ 2026-02-07 15:23:57.471761629 +0100 ++++ inkscape-1.4.3_2025-12-25_0d15f75042/src/extension/internal/pdfinput/svg-builder.cpp 2026-02-07 15:26:41.717103687 +0100 +@@ -1386,7 +1386,7 @@ void SvgBuilder::updateFont(GfxState *st + sp_repr_css_set_property(_css_font, "font-variant", "normal"); + + // Writing mode +- if ( font->getWMode() == 0 ) { ++ if ( font->getWMode() == GfxFont::WritingMode::Horizontal ) { + sp_repr_css_set_property(_css_font, "writing-mode", "lr"); + } else { + sp_repr_css_set_property(_css_font, "writing-mode", "tb"); +@@ -1398,7 +1398,7 @@ void SvgBuilder::updateFont(GfxState *st + */ + void SvgBuilder::updateTextShift(GfxState *state, double shift) { + double shift_value = -shift * 0.001 * fabs(state->getFontSize()); +- if (state->getFont()->getWMode()) { ++ if (state->getFont()->getWMode() != GfxFont::WritingMode::Horizontal) { + _text_position[1] += shift_value; + } else { + _text_position[0] += shift_value; +@@ -1452,7 +1452,7 @@ Inkscape::XML::Node* SvgBuilder::_flushT + + // Text direction is a property of the element. + auto font = state->getFont(); +- if (font->getWMode() == 1) { ++ if (font->getWMode() == GfxFont::WritingMode::Vertical) { + // Only set if vertical. + auto css_text = sp_repr_css_attr_new(); + sp_repr_css_set_property(css_text, "writing-mode", "tb"); +@@ -1546,8 +1546,8 @@ Inkscape::XML::Node* SvgBuilder::_flushT + bool output_tspan = + next_it == _glyphs.end() || + next_it->style_changed || +- (writing_mode == 0 && std::abs(glyph.text_position[1] - next_it->text_position[1]) > 0.1) || +- (writing_mode == 1 && std::abs(glyph.text_position[0] - next_it->text_position[0]) > 0.1); ++ (writing_mode == GfxFont::WritingMode::Horizontal && std::abs(glyph.text_position[1] - next_it->text_position[1]) > 0.1) || ++ (writing_mode == GfxFont::WritingMode::Vertical && std::abs(glyph.text_position[0] - next_it->text_position[0]) > 0.1); + + if (output_tspan) { + diff --git a/multimedia/graphics/inkscape/pspec.xml b/multimedia/graphics/inkscape/pspec.xml index 6532749a61..f0a2088b0b 100644 --- a/multimedia/graphics/inkscape/pspec.xml +++ b/multimedia/graphics/inkscape/pspec.xml @@ -81,7 +81,7 @@ python3-pygobject3-devel - + poppler26.02.patch