public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Marek Kasik <mkasik@redhat.com>
To: git-commits@fedoraproject.org
Subject: [rpms/inkscape] rawhide: Rebuild for poppler 26.08.0
Date: Mon, 10 Aug 2026 14:42:51 GMT	[thread overview]
Message-ID: <178637297114.1.3779269087620444701.rpms-inkscape-c8f428f77e72@fedoraproject.org> (raw)

A new commit has been pushed.

Repo   : rpms/inkscape
Branch : rawhide
Commit : c8f428f77e725469aa54fe4280e3a3e84a45b07d
Author : Marek Kasik <mkasik@redhat.com>
Date   : 2026-08-10T16:16:56+02:00
Stats  : +759/-0 in 2 file(s)
URL    : https://src.fedoraproject.org/rpms/inkscape/c/c8f428f77e725469aa54fe4280e3a3e84a45b07d?branch=rawhide

Log:
Rebuild for poppler 26.08.0

---
diff --git a/inkscape-1.4.4-poppler-26.08.0.patch b/inkscape-1.4.4-poppler-26.08.0.patch
new file mode 100644
index 0000000..52666ac
--- /dev/null
+++ b/inkscape-1.4.4-poppler-26.08.0.patch
@@ -0,0 +1,757 @@
+--- inkscape-1.4.4_2026-05-05_dcaf3e7d9e/src/extension/internal/pdfinput/pdf-input.cpp
++++ inkscape-1.4.4_2026-05-05_dcaf3e7d9e/src/extension/internal/pdfinput/pdf-input.cpp
+@@ -808,7 +808,11 @@ PdfInput::add_builder_page(std::shared_p
+     }
+ 
+     // Apply crop settings
++#if POPPLER_CHECK_VERSION(26, 6, 0)
++    std::optional<PDFRectangle> clipToBox;
++#else
+     _POPPLER_CONST PDFRectangle *clipToBox = nullptr;
++#endif
+ 
+     if (crop_to == "media-box") {
+         clipToBox = page->getMediaBox();
+@@ -822,8 +826,16 @@ PdfInput::add_builder_page(std::shared_p
+         clipToBox = page->getArtBox();
+     }
+ 
++    std::optional<PDFRectangle> cropBox;
++#if POPPLER_CHECK_VERSION(26, 6, 0)
++    cropBox = clipToBox;
++#else
++    if (clipToBox) {
++        cropBox = *clipToBox;
++    }
++#endif
+     // Create parser  (extension/internal/pdfinput/pdf-parser.h)
+-    auto pdf_parser = PdfParser(pdf_doc, builder, page, clipToBox);
++    auto pdf_parser = PdfParser(pdf_doc, builder, page, cropBox);
+ 
+     // Set up approximation precision for parser. Used for converting Mesh Gradients into tiles.
+     if ( color_delta <= 0.0 ) {
+@@ -843,9 +855,10 @@ PdfInput::add_builder_page(std::shared_p
+ 
+     // Parse the annotations
+     if (auto annots = page->getAnnotsObject(); annots.isArray()) {
+-        auto const size = annots.arrayGetLength();
++        auto* annotsArray = annots.getArray();
++        auto const size = annotsArray->getLength();
+         for (int i = 0; i < size; i++) {
+-            pdf_parser.build_annots(annots.arrayGet(i), page_num);
++            pdf_parser.build_annots(annotsArray->get(i), page_num);
+         }
+     }
+ }
+--- inkscape-1.4.4_2026-05-05_dcaf3e7d9e/src/extension/internal/pdfinput/pdf-parser.cpp
++++ inkscape-1.4.4_2026-05-05_dcaf3e7d9e/src/extension/internal/pdfinput/pdf-parser.cpp
+@@ -43,6 +43,7 @@
+ #include <poppler/GlobalParams.h>
+ #include <poppler/Lexer.h>
+ #include <poppler/Object.h>
++#include <poppler/OptionalContent.h>
+ #include <poppler/OutputDev.h>
+ #include <poppler/PDFDoc.h>
+ #include <poppler/Page.h>
+@@ -266,7 +267,7 @@ GfxPatch blankPatch()
+ //------------------------------------------------------------------------
+ 
+ PdfParser::PdfParser(std::shared_ptr<PDFDoc> pdf_doc, Inkscape::Extension::Internal::SvgBuilder *builderA, Page *page,
+-                     _POPPLER_CONST PDFRectangle *cropBox)
++                     const std::optional<PDFRectangle> &cropBox)
+     : _pdf_doc(pdf_doc)
+     , xref(pdf_doc->getXRef())
+     , builder(builderA)
+@@ -292,8 +293,8 @@ PdfParser::PdfParser(std::shared_ptr<PDF
+     if (page) {
+         // Increment the page building here and set page label
+         Catalog *catalog = pdf_doc->getCatalog();
+-        GooString *label = new GooString("");
+-        catalog->indexToLabel(page->getNum() - 1, label);
++        _POPPLER_STRING_26_7 label;
++        catalog->indexToLabel(page->getNum() - 1, &label);
+         builder->pushPage(getString(label), state);
+     }
+ 
+@@ -307,8 +308,8 @@ PdfParser::PdfParser(std::shared_ptr<PDF
+     builder->setMargins(getRect(page->getTrimBox()) * scale,
+                         getRect(page->getArtBox()) * scale,
+                         getRect(page->getBleedBox()) * scale);
+-    if (cropBox && getRect(cropBox) != page_box) {
+-        builder->cropPage(getRect(cropBox) * scale);
++    if (cropBox && getRect(*cropBox) != page_box) {
++        builder->cropPage(getRect(*cropBox) * scale);
+     }
+ 
+     saveState();
+@@ -325,7 +326,7 @@ PdfParser::PdfParser(XRef *xrefA, Inksca
+     , printCommands(false)
+     , res(new GfxResources(xref, resDict, nullptr))
+     , // start the resource stack
+-    state(new GfxState(72, 72, box, 0, false))
++    state(new _POPPLER_GFX_STATE(72, 72, *box, 0, false))
+     , fontChanged(gFalse)
+     , clip(clipNone)
+     , ignoreUndef(0)
+@@ -369,8 +370,8 @@ void PdfParser::parse(Object *obj, GBool
+   Object obj2;
+ 
+   if (obj->isArray()) {
+-    for (int i = 0; i < obj->arrayGetLength(); ++i) {
+-      _POPPLER_CALL_ARGS(obj2, obj->arrayGet, i);
++    for (int i = 0; i < obj->getArray()->getLength(); ++i) {
++      _POPPLER_CALL_ARGS(obj2, obj->getArray()->get, i);
+       if (!obj2.isStream()) {
+ 	error(errInternal, -1, "Weird page contents");
+ 	_POPPLER_FREE(obj2);
+@@ -807,8 +808,8 @@ void PdfParser::opSetExtGState(Object ar
+                 for (int &i : backdropColor.c) {
+                     i = 0;
+                 }
+-                for (int i = 0; i < obj3.arrayGetLength() && i < gfxColorMaxComps; ++i) {
+-                    _POPPLER_CALL_ARGS(obj4, obj3.arrayGet, i);
++                for (int i = 0; i < obj3.getArray()->getLength() && i < gfxColorMaxComps; ++i) {
++                    _POPPLER_CALL_ARGS(obj4, obj3.getArray()->get, i);
+                     if (obj4.isNum()) {
+                         backdropColor.c[i] = dblToCol(obj4.getNum());
+                     }
+@@ -817,7 +818,7 @@ void PdfParser::opSetExtGState(Object ar
+             }
+             _POPPLER_FREE(obj3);
+             if (_POPPLER_CALL_ARGS_DEREF(obj3, obj2.dictLookup, "G").isStream()) {
+-                if (_POPPLER_CALL_ARGS_DEREF(obj4, obj3.streamGetDict()->lookup, "Group").isDict()) {
++                if (_POPPLER_CALL_ARGS_DEREF(obj4, obj3.getStream()->getDict()->lookup, "Group").isDict()) {
+                     std::unique_ptr<GfxColorSpace> blendingColorSpace;
+                     GBool isolated = gFalse;
+                     GBool knockout = gFalse;
+@@ -880,7 +881,7 @@ void PdfParser::doSoftMask(Object *str,
+   }
+ 
+   // get stream dict
+-  dict = str->streamGetDict();
++  dict = str->getStream()->getDict();
+ 
+   // check form type
+   _POPPLER_CALL_ARGS(obj1, dict->lookup, "FormType");
+@@ -897,7 +898,7 @@ void PdfParser::doSoftMask(Object *str,
+     return;
+   }
+   for (i = 0; i < 4; ++i) {
+-    _POPPLER_CALL_ARGS(obj2, obj1.arrayGet, i);
++    _POPPLER_CALL_ARGS(obj2, obj1.getArray()->get, i);
+     bbox[i] = obj2.getNum();
+     _POPPLER_FREE(obj2);
+   }
+@@ -907,7 +908,7 @@ void PdfParser::doSoftMask(Object *str,
+   _POPPLER_CALL_ARGS(obj1, dict->lookup, "Matrix");
+   if (obj1.isArray()) {
+     for (i = 0; i < 6; ++i) {
+-      _POPPLER_CALL_ARGS(obj2, obj1.arrayGet, i);
++      _POPPLER_CALL_ARGS(obj2, obj1.getArray()->get, i);
+       m[i] = obj2.getNum();
+       _POPPLER_FREE(obj2);
+     }
+@@ -992,7 +993,7 @@ void PdfParser::opSetFillGray(Object arg
+   state->setFillPattern(nullptr);
+   state->setFillColorSpace(_POPPLER_CONSUME_UNIQPTR_ARG(std::make_unique<GfxDeviceGrayColorSpace>()));
+   color.c[0] = dblToCol(args[0].getNum());
+-  state->setFillColor(&color);
++  state->_POPPLER_SET_FILL_COLOR(color);
+   builder->updateStyle(state);
+ }
+ 
+@@ -1004,7 +1005,7 @@ void PdfParser::opSetStrokeGray(Object a
+   state->setStrokePattern(nullptr);
+   state->setStrokeColorSpace(_POPPLER_CONSUME_UNIQPTR_ARG(std::make_unique<GfxDeviceGrayColorSpace>()));
+   color.c[0] = dblToCol(args[0].getNum());
+-  state->setStrokeColor(&color);
++  state->_POPPLER_SET_STROKE_COLOR(color);
+   builder->updateStyle(state);
+ }
+ 
+@@ -1019,7 +1020,7 @@ void PdfParser::opSetFillCMYKColor(Objec
+   for (i = 0; i < 4; ++i) {
+     color.c[i] = dblToCol(args[i].getNum());
+   }
+-  state->setFillColor(&color);
++  state->_POPPLER_SET_FILL_COLOR(color);
+   builder->updateStyle(state);
+ }
+ 
+@@ -1033,7 +1034,7 @@ void PdfParser::opSetStrokeCMYKColor(Obj
+   for (int i = 0; i < 4; ++i) {
+     color.c[i] = dblToCol(args[i].getNum());
+   }
+-  state->setStrokeColor(&color);
++  state->_POPPLER_SET_STROKE_COLOR(color);
+   builder->updateStyle(state);
+ }
+ 
+@@ -1047,7 +1048,7 @@ void PdfParser::opSetFillRGBColor(Object
+   for (int i = 0; i < 3; ++i) {
+     color.c[i] = dblToCol(args[i].getNum());
+   }
+-  state->setFillColor(&color);
++  state->_POPPLER_SET_FILL_COLOR(color);
+   builder->updateStyle(state);
+ }
+ 
+@@ -1060,7 +1061,7 @@ void PdfParser::opSetStrokeRGBColor(Obje
+   for (int i = 0; i < 3; ++i) {
+     color.c[i] = dblToCol(args[i].getNum());
+   }
+-  state->setStrokeColor(&color);
++  state->_POPPLER_SET_STROKE_COLOR(color);
+   builder->updateStyle(state);
+ }
+ 
+@@ -1076,7 +1077,7 @@ void PdfParser::opSetFillColorSpace(Obje
+     GfxColor color;
+     colorSpace->getDefaultColor(&color);
+     state->setFillColorSpace(_POPPLER_CONSUME_UNIQPTR_ARG(colorSpace));
+-    state->setFillColor(&color);
++    state->_POPPLER_SET_FILL_COLOR(color);
+     builder->updateStyle(state);
+   } else {
+     error(errSyntaxError, getPos(), "Bad color space (fill)");
+@@ -1097,7 +1098,7 @@ void PdfParser::opSetStrokeColorSpace(Ob
+     GfxColor color;
+     colorSpace->getDefaultColor(&color);
+     state->setStrokeColorSpace(_POPPLER_CONSUME_UNIQPTR_ARG(colorSpace));
+-    state->setStrokeColor(&color);
++    state->_POPPLER_SET_STROKE_COLOR(color);
+     builder->updateStyle(state);
+   } else {
+     error(errSyntaxError, getPos(), "Bad color space (stroke)");
+@@ -1117,7 +1118,7 @@ void PdfParser::opSetFillColor(Object ar
+   for (i = 0; i < numArgs; ++i) {
+     color.c[i] = dblToCol(args[i].getNum());
+   }
+-  state->setFillColor(&color);
++  state->_POPPLER_SET_FILL_COLOR(color);
+   builder->updateStyle(state);
+ }
+ 
+@@ -1134,7 +1135,7 @@ void PdfParser::opSetStrokeColor(Object
+   for (i = 0; i < numArgs; ++i) {
+     color.c[i] = dblToCol(args[i].getNum());
+   }
+-  state->setStrokeColor(&color);
++  state->_POPPLER_SET_STROKE_COLOR(color);
+   builder->updateStyle(state);
+ }
+ 
+@@ -1155,7 +1156,7 @@ void PdfParser::opSetFillColorN(Object a
+ 	  color.c[i] = dblToCol(args[i].getNum());
+ 	}
+       }
+-      state->setFillColor(&color);
++      state->_POPPLER_SET_FILL_COLOR(color);
+       builder->updateStyle(state);
+     }
+     if (auto pattern = lookupPattern(&(args[numArgs - 1]), state)) {
+@@ -1174,7 +1175,7 @@ void PdfParser::opSetFillColorN(Object a
+ 	color.c[i] = dblToCol(args[i].getNum());
+       }
+     }
+-    state->setFillColor(&color);
++    state->_POPPLER_SET_FILL_COLOR(color);
+     builder->updateStyle(state);
+   }
+ }
+@@ -1198,7 +1199,7 @@ void PdfParser::opSetStrokeColorN(Object
+ 	  color.c[i] = dblToCol(args[i].getNum());
+ 	}
+       }
+-      state->setStrokeColor(&color);
++      state->_POPPLER_SET_STROKE_COLOR(color);
+       builder->updateStyle(state);
+     }
+     if (auto pattern = lookupPattern(&(args[numArgs - 1]), state)) {
+@@ -1217,7 +1218,7 @@ void PdfParser::opSetStrokeColorN(Object
+ 	color.c[i] = dblToCol(args[i].getNum());
+       }
+     }
+-    state->setStrokeColor(&color);
++    state->_POPPLER_SET_STROKE_COLOR(color);
+     builder->updateStyle(state);
+   }
+ }
+@@ -1700,7 +1701,7 @@ void PdfParser::doFunctionShFill1(GfxFun
+ 
+     // use the center color
+     shading->getColor(xM, yM, &fillColor);
+-    state->setFillColor(&fillColor);
++    state->_POPPLER_SET_FILL_COLOR(fillColor);
+ 
+     // fill the rectangle
+     state->moveTo(x0 * matrix[0] + y0 * matrix[2] + matrix[4],
+@@ -1799,7 +1800,7 @@ void PdfParser::gouraudFillTriangle(doub
+     }
+   }
+   if (i == nComps || depth == maxDepths[pdfGouraudTriangleShading-1]) {
+-    state->setFillColor(color0);
++    state->_POPPLER_SET_FILL_COLOR(*color0);
+     state->moveTo(x0, y0);
+     state->lineTo(x1, y1);
+     state->lineTo(x2, y2);
+@@ -1877,7 +1878,7 @@ void PdfParser::fillPatch(_POPPLER_CONST
+     color.c[i] = GfxColorComp(patch->color[0][0].c[i]);
+   }
+   if (i == nComps || depth == maxDepths[pdfPatchMeshShading-1]) {
+-    state->setFillColor(&color);
++    state->_POPPLER_SET_FILL_COLOR(color);
+     state->moveTo(patch->x[0][0], patch->y[0][0]);
+     state->curveTo(patch->x[0][1], patch->y[0][1],
+ 		   patch->x[0][2], patch->y[0][2],
+@@ -2377,7 +2378,7 @@ void PdfParser::opXObject(Object args[],
+     }
+ 
+ //add layer at root if xObject has type OCG
+-    _POPPLER_CALL_ARGS(obj2, obj1.streamGetDict()->lookup, "OC");
++    _POPPLER_CALL_ARGS(obj2, obj1.getStream()->getDict()->lookup, "OC");
+     if(obj2.isDict()){
+         auto type_dict = obj2.getDict();
+         if (type_dict->lookup("Type").isName("OCG")) {
+@@ -2395,7 +2396,7 @@ void PdfParser::opXObject(Object args[],
+         }
+     }
+ 
+-    _POPPLER_CALL_ARGS(obj2, obj1.streamGetDict()->lookup, "Subtype");
++    _POPPLER_CALL_ARGS(obj2, obj1.getStream()->getDict()->lookup, "Subtype");
+     if (obj2.isName(const_cast<char*>("Image"))) {
+         _POPPLER_CALL_ARGS(refObj, res->lookupXObjectNF, name);
+         doImage(&refObj, obj1.getStream(), gFalse);
+@@ -2403,7 +2404,7 @@ void PdfParser::opXObject(Object args[],
+     } else if (obj2.isName(const_cast<char*>("Form"))) {
+         doForm(&obj1);
+     } else if (obj2.isName(const_cast<char*>("PS"))) {
+-        _POPPLER_CALL_ARGS(obj3, obj1.streamGetDict()->lookup, "Level1");
++        _POPPLER_CALL_ARGS(obj3, obj1.getStream()->getDict()->lookup, "Level1");
+     } else if (obj2.isName()) {
+         error(errSyntaxError, getPos(), "Unknown XObject subtype '{0:s}'", obj2.getName());
+     } else {
+@@ -2534,7 +2535,7 @@ void PdfParser::doImage(Object * /*ref*/
+             _POPPLER_CALL_ARGS(obj1, dict->lookup, "D");
+         }
+         if (obj1.isArray()) {
+-            _POPPLER_CALL_ARGS(obj2, obj1.arrayGet, 0);
++            _POPPLER_CALL_ARGS(obj2, obj1.getArray()->get, 0);
+             if (obj2.isInt() && obj2.getInt() == 1) {
+                 invert = gTrue;
+             }
+@@ -2596,7 +2597,7 @@ void PdfParser::doImage(Object * /*ref*/
+ 	            goto err1;
+             }
+             maskStr = smaskObj.getStream();
+-            maskDict = smaskObj.streamGetDict();
++            maskDict = smaskObj.getStream()->getDict();
+             _POPPLER_CALL_ARGS(obj1, maskDict->lookup, "Width");
+             if (obj1.isNull()) {
+                     _POPPLER_FREE(obj1);
+@@ -2662,8 +2663,8 @@ void PdfParser::doImage(Object * /*ref*/
+         } else if (maskObj.isArray()) {
+             // color key mask
+             int i;
+-            for (i = 0; i < maskObj.arrayGetLength() && i < 2*gfxColorMaxComps; ++i) {
+-                _POPPLER_CALL_ARGS(obj1, maskObj.arrayGet, i);
++            for (i = 0; i < maskObj.getArray()->getLength() && i < 2*gfxColorMaxComps; ++i) {
++                _POPPLER_CALL_ARGS(obj1, maskObj.getArray()->get, i);
+                 maskColors[i] = obj1.getInt();
+                 _POPPLER_FREE(obj1);
+             }
+@@ -2674,7 +2675,7 @@ void PdfParser::doImage(Object * /*ref*/
+                 goto err1;
+             }
+             maskStr = maskObj.getStream();
+-            maskDict = maskObj.streamGetDict();
++            maskDict = maskObj.getStream()->getDict();
+             _POPPLER_CALL_ARGS(obj1, maskDict->lookup, "Width");
+             if (obj1.isNull()) {
+                 _POPPLER_FREE(obj1);
+@@ -2721,7 +2722,7 @@ void PdfParser::doImage(Object * /*ref*/
+                 _POPPLER_CALL_ARGS(obj1, maskDict->lookup, "D");
+             }
+             if (obj1.isArray()) {
+-                _POPPLER_CALL_ARGS(obj2, obj1.arrayGet, 0);
++                _POPPLER_CALL_ARGS(obj2, obj1.getArray()->get, 0);
+                 if (obj2.isInt() && obj2.getInt() == 1) {
+                     maskInvert = gTrue;
+                 }
+@@ -2774,7 +2775,7 @@ void PdfParser::doForm(Object *str, doub
+     }
+ 
+     // get stream dict
+-    dict = str->streamGetDict();
++    dict = str->getStream()->getDict();
+ 
+     // check form type
+     _POPPLER_CALL_ARGS(obj1, dict->lookup, "FormType");
+@@ -2791,7 +2792,7 @@ void PdfParser::doForm(Object *str, doub
+         return;
+     }
+     for (i = 0; i < 4; ++i) {
+-        _POPPLER_CALL_ARGS(obj1, bboxObj.arrayGet, i);
++        _POPPLER_CALL_ARGS(obj1, bboxObj.getArray()->get, i);
+         bbox[i] = obj1.getNum();
+         _POPPLER_FREE(obj1);
+     }
+@@ -2801,7 +2802,7 @@ void PdfParser::doForm(Object *str, doub
+     _POPPLER_CALL_ARGS(matrixObj, dict->lookup, "Matrix");
+     if (matrixObj.isArray()) {
+         for (i = 0; i < 6; ++i) {
+-        _POPPLER_CALL_ARGS(obj1, matrixObj.arrayGet, i);
++        _POPPLER_CALL_ARGS(obj1, matrixObj.getArray()->get, i);
+         m[i] = obj1.getNum();
+         _POPPLER_FREE(obj1);
+         }
+@@ -3193,10 +3194,10 @@ void PdfParser::loadColorProfile()
+         return;
+ 
+     Object outputIntents = catDict.dictLookup("OutputIntents");
+-    if (!outputIntents.isArray() || outputIntents.arrayGetLength() != 1)
++    if (!outputIntents.isArray() || outputIntents.getArray()->getLength() != 1)
+         return;
+ 
+-    Object firstElement = outputIntents.arrayGet(0);
++    Object firstElement = outputIntents.getArray()->get(0);
+     if (!firstElement.isDict())
+         return;
+ 
+@@ -3244,7 +3245,7 @@ void PdfParser::build_annots(const Objec
+             _POPPLER_CALL_ARGS(Rect_obj, annot_dict->lookup, "Rect");
+             if (Rect_obj.isArray()) {
+                 for (int i = 0; i < 2; i++) {
+-                    _POPPLER_CALL_ARGS(xy_obj, Rect_obj.arrayGet, i);
++                    _POPPLER_CALL_ARGS(xy_obj, Rect_obj.getArray()->get, i);
+                     offset[i] = xy_obj.getNum();
+                 }
+                 doForm(&first_state_obj, offset);
+--- inkscape-1.4.4_2026-05-05_dcaf3e7d9e/src/extension/internal/pdfinput/pdf-parser.h
++++ inkscape-1.4.4_2026-05-05_dcaf3e7d9e/src/extension/internal/pdfinput/pdf-parser.h
+@@ -112,8 +112,8 @@ struct OpHistoryEntry {
+ class PdfParser {
+ public:
+ 
+-  // Constructor for regular output.
+-    PdfParser(std::shared_ptr<PDFDoc> pdf_doc, SvgBuilder *builderA, Page *page, _POPPLER_CONST PDFRectangle *cropBox);
++    // Constructor for regular output.
++    PdfParser(std::shared_ptr<PDFDoc> pdf_doc, SvgBuilder *builderA, Page *page, const std::optional<PDFRectangle> &cropBox);
+     // Constructor for a sub-page object.
+     PdfParser(XRef *xrefA, SvgBuilder *builderA, Dict *resDict, _POPPLER_CONST PDFRectangle *box);
+ 
+--- inkscape-1.4.4_2026-05-05_dcaf3e7d9e/src/extension/internal/pdfinput/pdf-utils.cpp
++++ inkscape-1.4.4_2026-05-05_dcaf3e7d9e/src/extension/internal/pdfinput/pdf-utils.cpp
+@@ -133,6 +133,11 @@ Geom::Rect getRect(_POPPLER_CONST PDFRec
+     return Geom::Rect(box->x1, box->y1, box->x2, box->y2);
+ }
+ 
++Geom::Rect getRect(_POPPLER_CONST PDFRectangle &box)
++{
++    return Geom::Rect(box.x1, box.y1, box.x2, box.y2);
++}
++
+ Geom::PathVector getPathV(GfxPath *path) 
+ {
+     if (!path) {
+--- inkscape-1.4.4_2026-05-05_dcaf3e7d9e/src/extension/internal/pdfinput/pdf-utils.h
++++ inkscape-1.4.4_2026-05-05_dcaf3e7d9e/src/extension/internal/pdfinput/pdf-utils.h
+@@ -59,6 +59,7 @@ private:
+ };
+ 
+ Geom::Rect getRect(_POPPLER_CONST PDFRectangle *box);
++Geom::Rect getRect(_POPPLER_CONST PDFRectangle &box);
+ Geom::PathVector getPathV(GfxPath *gPath);
+ 
+ #endif /* PDF_UTILS_H */
+--- inkscape-1.4.4_2026-05-05_dcaf3e7d9e/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp
++++ inkscape-1.4.4_2026-05-05_dcaf3e7d9e/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp
+@@ -313,7 +313,11 @@ CairoFreeTypeFont *CairoFreeTypeFont::cr
+ #else
+     GfxFontLoc *fontLoc;
+ #endif
++#if POPPLER_CHECK_VERSION(26, 5, 0)
++    const char * const *enc;
++#else
+     char **enc;
++#endif
+     const char *name;
+ #if POPPLER_CHECK_VERSION(25, 7, 0)
+     std::unique_ptr<FoFiType1C> ff1c;
+@@ -385,7 +389,11 @@ CairoFreeTypeFont *CairoFreeTypeFont::cr
+                 goto err2;
+             }
+ 
++#if POPPLER_CHECK_VERSION(26, 5, 0)
++            enc = gfx8bit->getEncoding().data();
++#else
+             enc = gfx8bit->getEncoding();
++#endif
+ 
+             codeToGID.resize(256);
+             for (i = 0; i < 256; ++i) {
+@@ -677,7 +685,7 @@ CairoType3Font *CairoType3Font::create(G
+ #endif
+ 
+     std::vector<int> codeToGID;
+-    char *name;
++    const char *name;
+ 
+     Dict *charProcs = gfx8bit->getCharProcs();
+     Ref ref = *gfxFont->getID();
+@@ -694,13 +702,17 @@ CairoType3Font *CairoType3Font::create(G
+ 
+     cairo_font_face_set_user_data(font_face, &type3_font_key, (void *)info, _free_type3_font_info);
+ 
++#if POPPLER_CHECK_VERSION(26, 5, 0)
++    const char * const *enc = gfx8bit->getEncoding().data();
++#else
+     char **enc = gfx8bit->getEncoding();
++#endif
+     codeToGID.resize(256);
+     for (int i = 0; i < 256; ++i) {
+         codeToGID[i] = 0;
+         if (charProcs && (name = enc[i])) {
+             for (int j = 0; j < charProcs->getLength(); j++) {
+-                if (strcmp(name, charProcs->getKey(j)) == 0) {
++                if (std::string(charProcs->getKey(j)).compare(name) == 0) {
+                     codeToGID[i] = j;
+                 }
+             }
+--- inkscape-1.4.4_2026-05-05_dcaf3e7d9e/src/extension/internal/pdfinput/poppler-transition-api.h
++++ inkscape-1.4.4_2026-05-05_dcaf3e7d9e/src/extension/internal/pdfinput/poppler-transition-api.h
+@@ -15,6 +15,28 @@
+ #include <glib/poppler-features.h>
+ #include <poppler/UTF.h>
+ 
++#if POPPLER_CHECK_VERSION(26, 7, 0)
++#define _POPPLER_STRING_26_7 std::string
++#else
++#define _POPPLER_STRING_26_7 GooString
++#endif
++
++#if POPPLER_CHECK_VERSION(26, 6, 0)
++#define _POPPLER_GET_GRAY(color, gray) getGray(color, gray)
++#define _POPPLER_GET_RGB(color, rgb) getRGB(color, rgb)
++#define _POPPLER_GET_CMYK(color, cmyk) getCMYK(color, cmyk)
++#define _POPPLER_SET_FILL_COLOR(color) setFillColor(color)
++#define _POPPLER_SET_STROKE_COLOR(color) setStrokeColor(color)
++#define _POPPLER_GFX_STATE(h, v, Rect, rotateA, upsideDown) GfxState(h, v, Rect, rotateA, upsideDown)
++#else
++#define _POPPLER_GET_GRAY(color, gray) getGray(&color, gray)
++#define _POPPLER_GET_RGB(color, rgb) getRGB(&color, rgb)
++#define _POPPLER_GET_CMYK(color, cmyk) getCMYK(&color, cmyk)
++#define _POPPLER_SET_FILL_COLOR(color) setFillColor(&color)
++#define _POPPLER_SET_STROKE_COLOR(color) setStrokeColor(&color)
++#define _POPPLER_GFX_STATE(h, v, Rect, rotateA, upsideDown) GfxState(h, v, &Rect, rotateA, upsideDown)
++#endif
++
+ #if POPPLER_CHECK_VERSION(26, 2, 0)
+ #define _POPPLER_WMODE GfxFont::WritingMode
+ #define _POPPLER_WMODE_HORIZONTAL GfxFont::WritingMode::Horizontal
+--- inkscape-1.4.4_2026-05-05_dcaf3e7d9e/src/extension/internal/pdfinput/poppler-utils.cpp
++++ inkscape-1.4.4_2026-05-05_dcaf3e7d9e/src/extension/internal/pdfinput/poppler-utils.cpp
+@@ -186,24 +186,27 @@ void InkFontDict::hashFontObject1(const
+         case objNull:
+             h->hash('z');
+             break;
+-        case objArray:
+-            h->hash('a');
+-            n = obj->arrayGetLength();
+-            h->hash((char *)&n, sizeof(int));
+-            for (i = 0; i < n; ++i) {
+-                const Object &obj2 = obj->arrayGetNF(i);
+-                hashFontObject1(&obj2, h);
+-            }
+-            break;
+-        case objDict:
+-            h->hash('d');
+-            n = obj->dictGetLength();
+-            h->hash((char *)&n, sizeof(int));
+-            for (i = 0; i < n; ++i) {
+-                p = obj->dictGetKey(i);
+-                h->hash(p, (int)strlen(p));
+-                const Object &obj2 = obj->dictGetValNF(i);
+-                hashFontObject1(&obj2, h);
++        case objArray: {
++                h->hash('a');
++                Array * objArray = obj->getArray();
++                n = objArray->getLength();
++                h->hash((char *)&n, sizeof(int));
++                for (i = 0; i < n; ++i) {
++                    const Object &obj2 = objArray->getNF(i);
++                    hashFontObject1(&obj2, h);
++                }
++            } break;
++        case objDict: {
++                h->hash('d');
++                auto objdict = obj->getDict();
++                n = objdict->getLength();
++                h->hash((char *)&n, sizeof(int));
++                for (i = 0; i < n; ++i) {
++                    auto p = std::string(objdict->getKey(i));
++                    h->hash(p.c_str(), p.length());
++                    const Object &obj2 = objdict->getValNF(i);
++                    hashFontObject1(&obj2, h);
++                }
+             }
+             break;
+         case objStream:
+@@ -543,7 +546,7 @@ void _getFontsRecursive(std::shared_ptr<
+                 continue;
+ 
+             Ref resourcesRef;
+-            const Object resObj = obj2.streamGetDict()->lookup("Resources", &resourcesRef);
++            const Object resObj = obj2.getStream()->getDict()->lookup("Resources", &resourcesRef);
+             if (resourcesRef != Ref::INVALID() && !visitedObjects.insert(resourcesRef.num).second)
+                 continue;
+ 
+@@ -608,6 +611,11 @@ std::string getString(const GooString *v
+     return "";
+ }
+ 
++std::string getString(const GooString &value)
++{
++    return getString(value.toStr());
++}
++
+ /**
+  * Convert PDF strings, which can be formatted as UTF8, UTF16BE or UTF16LE into
+  * a predictable UTF8 string consistant with svg requirements.
+--- inkscape-1.4.4_2026-05-05_dcaf3e7d9e/src/extension/internal/pdfinput/poppler-utils.h
++++ inkscape-1.4.4_2026-05-05_dcaf3e7d9e/src/extension/internal/pdfinput/poppler-utils.h
+@@ -86,6 +86,7 @@ std::string getDictString(Dict *dict, co
+ std::string getString(const std::string &value);
+ std::string getString(const std::unique_ptr<GooString> &value);
+ std::string getString(const GooString *value);
++std::string getString(const GooString &value);
+ std::string validateString(std::string const &in);
+ 
+ // Replacate poppler FontDict
+--- inkscape-1.4.4_2026-05-05_dcaf3e7d9e/src/extension/internal/pdfinput/svg-builder.cpp
++++ inkscape-1.4.4_2026-05-05_dcaf3e7d9e/src/extension/internal/pdfinput/svg-builder.cpp
+@@ -68,7 +68,6 @@ namespace Internal {
+ 
+ #define TRACE(_args) IFTRACE(g_print _args)
+ 
+-
+ /**
+  * \class SvgBuilder
+  *
+@@ -392,7 +391,15 @@ static std::string svgConvertGfxRGB(GfxR
+     return svgConvertRGBToText(r, g, b);
+ }
+ 
+-std::string SvgBuilder::convertGfxColor(const GfxColor *color, GfxColorSpace *space)
++// for poppler < 26.06.0
++std::string SvgBuilder::convertGfxColor(const GfxColor *color, GfxColorSpace *space) {
++    if (!color) {
++        return "";
++    }
++    return convertGfxColor(*color, space);
++}
++
++std::string SvgBuilder::convertGfxColor(const GfxColor &color, GfxColorSpace *space)
+ {
+     std::string icc = "";
+     switch (space->getMode()) {
+@@ -412,14 +419,14 @@ std::string SvgBuilder::convertGfxColor(
+     }
+ 
+     GfxRGB rgb;
+-    space->getRGB(color, &rgb);
++    space->_POPPLER_GET_RGB(color, &rgb);
+     auto rgb_color = svgConvertGfxRGB(&rgb);
+ 
+     if (!icc.empty()) {
+         Inkscape::CSSOStringStream icc_color;
+         icc_color << rgb_color << " icc-color(" << icc;
+         for (int i = 0; i < space->getNComps(); ++i) {
+-            icc_color << ", " << colToDbl((*color).c[i]);
++            icc_color << ", " << colToDbl((color).c[i]);
+         }
+         icc_color << ");";
+         return icc_color.str();
+@@ -1204,7 +1211,7 @@ gchar *SvgBuilder::_createGradient(GfxSh
+ /**
+  * \brief Adds a stop with the given properties to the gradient's representation
+  */
+-void SvgBuilder::_addStopToGradient(Inkscape::XML::Node *gradient, double offset, GfxColor *color, GfxColorSpace *space,
++void SvgBuilder::_addStopToGradient(Inkscape::XML::Node *gradient, double offset, GfxColor &color, GfxColorSpace *space,
+                                     double opacity)
+ {
+     Inkscape::XML::Node *stop = _xml_doc->createElement("svg:stop");
+@@ -1214,7 +1221,7 @@ void SvgBuilder::_addStopToGradient(Inks
+     if (space->getMode() == csDeviceGray) {
+         // This is a transparency mask.
+         GfxRGB rgb;
+-        space->getRGB(color, &rgb);
++        space->_POPPLER_GET_RGB(color, &rgb);
+         double gray = (double)rgb.r / 65535.0;
+         gray = CLAMP(gray, 0.0, 1.0);
+         os_opacity << gray;
+@@ -1255,8 +1262,8 @@ bool SvgBuilder::_addGradientStops(Inksc
+         if (!svgGetShadingColor(shading, 0.0, &stop1) || !svgGetShadingColor(shading, 1.0, &stop2)) {
+             return false;
+         } else {
+-            _addStopToGradient(gradient, 0.0, &stop1, space, 1.0);
+-            _addStopToGradient(gradient, 1.0, &stop2, space, 1.0);
++            _addStopToGradient(gradient, 0.0, stop1, space, 1.0);
++            _addStopToGradient(gradient, 1.0, stop2, space, 1.0);
+         }
+     } else if (type == _POPPLER_FUNCTION_TYPE_STITCHING) {
+         auto stitchingFunc = static_cast<_POPPLER_CONST StitchingFunction*>(func);
+@@ -1269,7 +1276,7 @@ bool SvgBuilder::_addGradientStops(Inksc
+         // Add stops from all the stitched functions
+         GfxColor prev_color, color;
+         svgGetShadingColor(shading, bounds[0], &prev_color);
+-        _addStopToGradient(gradient, bounds[0], &prev_color, space, 1.0);
++        _addStopToGradient(gradient, bounds[0], prev_color, space, 1.0);
+         for ( int i = 0 ; i < num_funcs ; i++ ) {
+             svgGetShadingColor(shading, bounds[i + 1], &color);
+             // Add stops
+@@ -1279,14 +1286,14 @@ bool SvgBuilder::_addGradientStops(Inksc
+                     expE = (bounds[i + 1] - bounds[i])/expE;    // approximate exponential as a single straight line at x=1
+                     if (encode[2*i] == 0) {    // normal sequence
+                         auto offset = (bounds[i + 1] - expE) / max_bound;
+-                        _addStopToGradient(gradient, offset, &prev_color, space, 1.0);
++                        _addStopToGradient(gradient, offset, prev_color, space, 1.0);
+                     } else {                   // reflected sequence
+                         auto offset = (bounds[i] + expE) / max_bound;
+-                        _addStopToGradient(gradient, offset, &color, space, 1.0);
++                        _addStopToGradient(gradient, offset, color, space, 1.0);
+                     }
+                 }
+             }
+-            _addStopToGradient(gradient, bounds[i + 1] / max_bound, &color, space, 1.0);
++            _addStopToGradient(gradient, bounds[i + 1] / max_bound, color, space, 1.0);
+             prev_color = color;
+         }
+     } else { // Unsupported function type
+--- inkscape-1.4.4_2026-05-05_dcaf3e7d9e/src/extension/internal/pdfinput/svg-builder.h
++++ inkscape-1.4.4_2026-05-05_dcaf3e7d9e/src/extension/internal/pdfinput/svg-builder.h
+@@ -36,6 +36,7 @@ namespace Inkscape {
+ #include <glibmm/ustring.h>
+ #include <lcms2.h>
+ #include <poppler/CharTypes.h>
++#include "object/color-profile.h"
+ 
+ #include "enums.h"
+ #include "poppler-utils.h"
+@@ -185,7 +186,7 @@ private:
+     // Pattern creation
+     gchar *_createPattern(GfxPattern *pattern, GfxState *state, bool is_stroke=false);
+     gchar *_createGradient(GfxShading *shading, const Geom::Affine pat_matrix, bool for_shading = false);
+-    void _addStopToGradient(Inkscape::XML::Node *gradient, double offset, GfxColor *color, GfxColorSpace *space,
++    void _addStopToGradient(Inkscape::XML::Node *gradient, double offset, GfxColor &color, GfxColorSpace *space,
+                             double opacity);
+     bool _addGradientStops(Inkscape::XML::Node *gradient, GfxShading *shading,
+                            _POPPLER_CONST Function *func);
+@@ -239,6 +240,7 @@ private:
+     static bool _attrEqual(Inkscape::XML::Node *a, Inkscape::XML::Node *b, char const *attr);
+ 
+     // Colors
++    std::string convertGfxColor(const GfxColor &color, GfxColorSpace *space);
+     std::string convertGfxColor(const GfxColor *color, GfxColorSpace *space);
+     std::string _getColorProfile(cmsHPROFILE hp);
+ 

diff --git a/inkscape.spec b/inkscape.spec
index 8904964..a0350d6 100644
--- a/inkscape.spec
+++ b/inkscape.spec
@@ -47,6 +47,8 @@ Source100:      Fedora-Color-Palette.gpl
 #ExcludeArch:    %%{ix86}
 #%%endif
 
+Patch:          inkscape-1.4.4-poppler-26.08.0.patch
+
 Provides: bundled(libcroco) = 0.6.99~gitb9e4b47
 Provides: bundled(autotrace) = 0.40.0~git0de6201
 Provides: bundled(libdepixelize) = 0~git19b7601

                 reply	other threads:[~2026-08-10 14:42 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=178637297114.1.3779269087620444701.rpms-inkscape-c8f428f77e72@fedoraproject.org \
    --to=mkasik@redhat.com \
    --cc=git-commits@fedoraproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox