Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package inkscape for openSUSE:Factory 
checked in at 2026-06-18 18:37:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/inkscape (Old)
 and      /work/SRC/openSUSE:Factory/.inkscape.new.1981 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "inkscape"

Thu Jun 18 18:37:13 2026 rev:157 rq:1358978 version:1.4.4+git0.dcaf3e7d9e

Changes:
--------
--- /work/SRC/openSUSE:Factory/inkscape/inkscape.changes        2026-05-23 
23:22:20.500377789 +0200
+++ /work/SRC/openSUSE:Factory/.inkscape.new.1981/inkscape.changes      
2026-06-18 18:37:20.628819975 +0200
@@ -1,0 +2,6 @@
+Thu Jun 11 04:08:02 UTC 2026 - Bjørn Lie <[email protected]>
+
+- Add fix_build_with_poppler_26.06.patch: Fix support for poppler
+  >= 26.06 (https://gitlab.com/inkscape/inkscape/-/work_items/6210)
+
+-------------------------------------------------------------------

New:
----
  fix_build_with_poppler_26.06.patch

----------(New B)----------
  New:
- Add fix_build_with_poppler_26.06.patch: Fix support for poppler
  >= 26.06 (https://gitlab.com/inkscape/inkscape/-/work_items/6210)
----------(New E)----------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ inkscape.spec ++++++
--- /var/tmp/diff_new_pack.MrSgwd/_old  2026-06-18 18:37:27.673113852 +0200
+++ /var/tmp/diff_new_pack.MrSgwd/_new  2026-06-18 18:37:27.673113852 +0200
@@ -29,6 +29,8 @@
 Source2:        inkscape-split-extensions-extra.py
 # PATCH-FIX-UPSTREAM 98828255aa0c1212329236b3ff4ac7f41efb4a67.patch -- fix: 
support for poppler >= 26.05 font encoding change
 Patch0:         
https://gitlab.com/inkscape/inkscape/-/commit/98828255aa0c1212329236b3ff4ac7f41efb4a67.patch
+# PATCH-FIX-UPSTREAM fix_build_with_poppler_26.06.patch -- Fix support for 
poppler >= 26.06
+Patch1:         fix_build_with_poppler_26.06.patch
 
 BuildRequires:  cmake
 BuildRequires:  double-conversion-devel
@@ -153,7 +155,12 @@
 %lang_package
 
 %prep
-%autosetup -p1
+%autosetup -N
+%if %{pkg_vcmp libpoppler-glib8 >= 26.06.0}
+%autopatch -p1
+%else
+%patch -P0 -p1
+%endif
 
 %build
 %ifarch %{arm}

++++++ fix_build_with_poppler_26.06.patch ++++++
>From b95f70db09072bb60600d2f6de103608750ef247 Mon Sep 17 00:00:00 2001
From: KrIr17 <[email protected]>
Date: Mon, 8 Jun 2026 20:16:32 +0200
Subject: [PATCH] Fix Building with Poppler 26.06.0

- pdfparser: Some `const PDFRectangle *` to `const PDFRectangle &` [1]
- pdfparser: Some `const GfxColor *` to `const GfxColor &` [2]
- pdf-utils: Add a `getRect(const PDFRectangle &)` alongside `getRect(const
  PDFRectangle *)`
- poppler-cairo-font-engine: `getKey()` now returns std::string and not
  char[], so change `strcmp` to `std::string(...).compare(...)` [3]
- poppler-utils: `obj->dictGetKey()` etc. were removed; use
  `obj->dict()->getKey()` instead (these have also existed in poppler
  since the beginning, so shouldn't break any old poppler) [4,5]
- svg-builder: `convertGfxColor` now takes `const GfxColor &` as input.
  A convenience function taking `const GfxColor *` (for older poppler)
  now calls the new one after confirming `color` is a valid pointer
- svg-builder: `_addStopToGradient` now  takes `const GfxColor &` as
  input. This was used only in `convertGfxColor` and therefore doesn't
  need a helper function for compatibility
- testfiles pdf-utils-test: `<poppler/*.h>` to `<*.h>` (see e3eb1210)
- testfiles pdf-utils-test: Some `const PDFRectangle *`
  to `const PDFRectangle &` [1]

Fixes https://gitlab.com/inkscape/inkscape/-/work_items/6210

Upstream Commits:

[1] https://gitlab.freedesktop.org/poppler/poppler/-/commit/d50a4510
[2] https://gitlab.freedesktop.org/poppler/poppler/-/commit/0f94f530
[3] https://gitlab.freedesktop.org/poppler/poppler/-/commit/a3de7f8a
[4] https://gitlab.freedesktop.org/poppler/poppler/-/commit/bb13b0f5
[5] https://gitlab.freedesktop.org/poppler/poppler/-/commit/8ae0f8e7
---
 src/extension/internal/pdfinput/pdf-input.cpp | 14 +++++-
 .../internal/pdfinput/pdf-parser.cpp          | 43 ++++++++++---------
 src/extension/internal/pdfinput/pdf-parser.h  |  4 +-
 src/extension/internal/pdfinput/pdf-utils.cpp |  5 +++
 src/extension/internal/pdfinput/pdf-utils.h   |  3 ++
 .../pdfinput/poppler-cairo-font-engine.cpp    |  2 +-
 .../pdfinput/poppler-transition-api.h         | 16 +++++++
 .../internal/pdfinput/poppler-utils.cpp       | 20 +++++----
 .../internal/pdfinput/svg-builder.cpp         | 29 ++++++++-----
 src/extension/internal/pdfinput/svg-builder.h |  3 +-
 10 files changed, 94 insertions(+), 45 deletions(-)

diff --git a/src/extension/internal/pdfinput/pdf-input.cpp 
b/src/extension/internal/pdfinput/pdf-input.cpp
index 45df931f00..441871bb10 100644
--- a/src/extension/internal/pdfinput/pdf-input.cpp
+++ b/src/extension/internal/pdfinput/pdf-input.cpp
@@ -808,7 +808,11 @@ PdfInput::add_builder_page(std::shared_ptr<PDFDoc>pdf_doc, 
SvgBuilder *builder,
     }
 
     // Apply crop settings
+#if POPPLER_CHECK_VERSION(26, 2, 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_ptr<PDFDoc>pdf_doc, 
SvgBuilder *builder,
         clipToBox = page->getArtBox();
     }
 
+    std::optional<PDFRectangle> cropBox;
+#if POPPLER_CHECK_VERSION(26, 2, 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 ) {
diff --git a/src/extension/internal/pdfinput/pdf-parser.cpp 
b/src/extension/internal/pdfinput/pdf-parser.cpp
index d24dc05dab..e32fa24b32 100644
--- a/src/extension/internal/pdfinput/pdf-parser.cpp
+++ b/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)
@@ -307,8 +308,8 @@ PdfParser::PdfParser(std::shared_ptr<PDFDoc> pdf_doc, 
Inkscape::Extension::Inter
     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, 
Inkscape::Extension::Internal::SvgBuilder *bui
     , 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)
@@ -992,7 +993,7 @@ void PdfParser::opSetFillGray(Object args[], int 
/*numArgs*/)
   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 args[], int 
/*numArgs*/)
   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(Object args[], int 
/*numArgs*/)
   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(Object args[], int 
/*numArgs*/)
   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 args[], int 
/*numArgs*/)
   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(Object args[], int 
/*numArgs*/) {
   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(Object args[], int 
numArgs)
     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(Object args[], int 
numArgs)
     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 args[], int 
numArgs) {
   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 args[], int 
numArgs) {
   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 args[], int 
numArgs) {
          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 args[], int 
numArgs) {
        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 args[], int 
numArgs) {
          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 args[], int 
numArgs) {
        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(GfxFunctionShading 
*shading,
 
     // 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(double x0, double y0, 
GfxColor *color0,
     }
   }
   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 GfxPatch *patch, 
int nComps, int depth)
     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],
diff --git a/src/extension/internal/pdfinput/pdf-parser.h 
b/src/extension/internal/pdfinput/pdf-parser.h
index c136ebf1ef..58044fb518 100644
--- a/src/extension/internal/pdfinput/pdf-parser.h
+++ b/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);
 
diff --git a/src/extension/internal/pdfinput/pdf-utils.cpp 
b/src/extension/internal/pdfinput/pdf-utils.cpp
index d126426b62..28c1678f2d 100644
--- a/src/extension/internal/pdfinput/pdf-utils.cpp
+++ b/src/extension/internal/pdfinput/pdf-utils.cpp
@@ -133,6 +133,11 @@ Geom::Rect getRect(_POPPLER_CONST PDFRectangle *box)
     return Geom::Rect(box->x1, box->y1, box->x2, box->y2);
 }
 
+Geom::Rect getRect(const PDFRectangle &box)
+{
+    return Geom::Rect(box.x1, box.y1, box.x2, box.y2);
+}
+
 Geom::PathVector getPathV(GfxPath *path) 
 {
     if (!path) {
diff --git a/src/extension/internal/pdfinput/pdf-utils.h 
b/src/extension/internal/pdfinput/pdf-utils.h
index 59efdeae27..d5b3020d61 100644
--- a/src/extension/internal/pdfinput/pdf-utils.h
+++ b/src/extension/internal/pdfinput/pdf-utils.h
@@ -59,6 +59,9 @@ private:
 };
 
 Geom::Rect getRect(_POPPLER_CONST PDFRectangle *box);
+Geom::Rect getRect(_POPPLER_CONST PDFRectangle &box);
 Geom::PathVector getPathV(GfxPath *gPath);
+Geom::PathVector maybeIntersect(Geom::PathVector const &v1, Geom::PathVector 
const &v2,
+                                FillRule fill1 = FillRule::fill_nonZero, 
FillRule fill2 = FillRule::fill_nonZero);
 
 #endif /* PDF_UTILS_H */
diff --git a/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp 
b/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp
index 9d908a33e3..af132ad735 100644
--- a/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp
+++ b/src/extension/internal/pdfinput/poppler-cairo-font-engine.cpp
@@ -712,7 +712,7 @@ CairoType3Font *CairoType3Font::create(GfxFont *gfxFont, 
PDFDoc *doc, CairoFontE
         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;
                 }
             }
diff --git a/src/extension/internal/pdfinput/poppler-transition-api.h 
b/src/extension/internal/pdfinput/poppler-transition-api.h
index 7f299bd05a..bf42f54142 100644
--- a/src/extension/internal/pdfinput/poppler-transition-api.h
+++ b/src/extension/internal/pdfinput/poppler-transition-api.h
@@ -15,6 +15,22 @@
 #include <glib/poppler-features.h>
 #include <poppler/UTF.h>
 
+#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
diff --git a/src/extension/internal/pdfinput/poppler-utils.cpp 
b/src/extension/internal/pdfinput/poppler-utils.cpp
index a65a5780ee..902736281a 100644
--- a/src/extension/internal/pdfinput/poppler-utils.cpp
+++ b/src/extension/internal/pdfinput/poppler-utils.cpp
@@ -195,15 +195,17 @@ void InkFontDict::hashFontObject1(const Object *obj, 
FNVHash *h)
                 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 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:
diff --git a/src/extension/internal/pdfinput/svg-builder.cpp 
b/src/extension/internal/pdfinput/svg-builder.cpp
index d854ed8a2e..c308561319 100644
--- a/src/extension/internal/pdfinput/svg-builder.cpp
+++ b/src/extension/internal/pdfinput/svg-builder.cpp
@@ -384,6 +384,7 @@ static gchar *svgConvertRGBToText(double r, double g, 
double b) {
     return (gchar *)&tmp;
 }
 
+// for poppler < 26.06.0
 static std::string svgConvertGfxRGB(GfxRGB *color)
 {
     double r = (double)color->r / 65535.0;
@@ -393,6 +394,14 @@ static std::string svgConvertGfxRGB(GfxRGB *color)
 }
 
 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 +421,14 @@ std::string SvgBuilder::convertGfxColor(const GfxColor 
*color, GfxColorSpace *sp
     }
 
     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 +1213,7 @@ gchar *SvgBuilder::_createGradient(GfxShading *shading, 
const Geom::Affine pat_m
 /**
  * \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 +1223,7 @@ void SvgBuilder::_addStopToGradient(Inkscape::XML::Node 
*gradient, double offset
     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 +1264,8 @@ bool SvgBuilder::_addGradientStops(Inkscape::XML::Node 
*gradient, GfxShading *sh
         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 +1278,7 @@ bool SvgBuilder::_addGradientStops(Inkscape::XML::Node 
*gradient, GfxShading *sh
         // 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 +1288,14 @@ bool SvgBuilder::_addGradientStops(Inkscape::XML::Node 
*gradient, GfxShading *sh
                     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
diff --git a/src/extension/internal/pdfinput/svg-builder.h 
b/src/extension/internal/pdfinput/svg-builder.h
index b814a67807..4041c95a9f 100644
--- a/src/extension/internal/pdfinput/svg-builder.h
+++ b/src/extension/internal/pdfinput/svg-builder.h
@@ -186,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 +239,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);
 
-- 
2.54.0

Reply via email to