commit:     c4dffa52a89a3614a5bc0401576d3ee7769e6f78
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Fri Mar  7 13:11:14 2025 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Fri Mar  7 13:16:08 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c4dffa52

app-office/scribus: Fix build w/ >=app-text/poppler-25.02.0

Bug: https://bugs.gentoo.org/949396
Bug: https://bugs.gentoo.org/950281
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 .../files/scribus-1.6.3-poppler-25.02.0.patch      | 186 +++++++++++++++++++++
 app-office/scribus/scribus-1.6.3.ebuild            |   1 +
 2 files changed, 187 insertions(+)

diff --git a/app-office/scribus/files/scribus-1.6.3-poppler-25.02.0.patch 
b/app-office/scribus/files/scribus-1.6.3-poppler-25.02.0.patch
new file mode 100644
index 000000000000..d933e5bbde0a
--- /dev/null
+++ b/app-office/scribus/files/scribus-1.6.3-poppler-25.02.0.patch
@@ -0,0 +1,186 @@
+Index: Scribus/scribus/plugins/import/pdf/importpdf.cpp
+===================================================================
+--- Scribus/scribus/plugins/import/pdf/importpdf.cpp   (revision 26663)
++++ Scribus/scribus/plugins/import/pdf/importpdf.cpp   (revision 26668)
+@@ -462,11 +462,11 @@
+ 
+                       if (dev->isOk())
+                       {
+-                              OCGs* ocg = pdfDoc->getOptContentConfig();
++                              POPPLER_CONST_25_02 OCGs* ocg = 
pdfDoc->getOptContentConfig();
+                               if (ocg && ocg->hasOCGs())
+                               {
+                                       QStringList ocgNames;
+-                                      Array *order = ocg->getOrderArray();
++                                      POPPLER_CONST_25_02 Array *order = 
ocg->getOrderArray();
+                                       if (order)
+                                       {
+                                               for (int i = 0; i < 
order->getLength (); ++i)
+Index: Scribus/scribus/plugins/import/pdf/importpdfconfig.h
+===================================================================
+--- Scribus/scribus/plugins/import/pdf/importpdfconfig.h       (revision 26663)
++++ Scribus/scribus/plugins/import/pdf/importpdfconfig.h       (revision 26668)
+@@ -27,4 +27,10 @@
+ #define POPPLER_CONST_083
+ #endif
+ 
++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(25, 2, 0)
++#define POPPLER_CONST_25_02 const
++#else
++#define POPPLER_CONST_25_02
+ #endif
++
++#endif
+Index: Scribus/scribus/plugins/import/pdf/slaoutput.cpp
+===================================================================
+--- Scribus/scribus/plugins/import/pdf/slaoutput.cpp   (revision 26663)
++++ Scribus/scribus/plugins/import/pdf/slaoutput.cpp   (revision 26668)
+@@ -1685,7 +1685,7 @@
+ 
+       auto& graphicState = m_graphicStack.top();
+       graphicState.strokeColor = getColor(state->getStrokeColorSpace(), 
state->getStrokeColor(), &graphicState.strokeShade);
+-      
++
+       QString output = convertPath(state->getPath());
+       if ((m_Elements->count() != 0) && (output == m_coords))                 
// Path is the same as in last fill
+       {
+@@ -2393,8 +2393,9 @@
+ #endif
+       m_graphicStack.top().clipPath = savedClip;
+       m_inPattern--;
++      m_doc->m_Selection->clear();
++
+       gElements = m_groupStack.pop();
+-      m_doc->m_Selection->clear();
+       if (gElements.Items.count() > 0)
+       {
+               for (int dre = 0; dre < gElements.Items.count(); ++dre)
+@@ -2932,7 +2933,7 @@
+       {
+               if (dictRef->isNull())
+                       return;
+-              OCGs *contentConfig = m_catalog->getOptContentConfig();
++              POPPLER_CONST_25_02 OCGs *contentConfig = 
m_catalog->getOptContentConfig();
+               OptionalContentGroup *oc;
+               if (dictRef->isRef())
+               {
+@@ -3084,7 +3085,11 @@
+ #if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(22, 4, 0)
+       int tmpBufLen = 0;
+ #endif
++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(25, 2, 0)
++      std::vector<int> codeToGID;
++#else
+       int *codeToGID = nullptr;
++#endif
+       const double *textMat = nullptr;
+       double m11, m12, m21, m22, fontSize;
+       SplashCoord mat[4] = { 1.0, 0.0, 0.0, 1.0 };
+@@ -3244,10 +3249,20 @@
+                       }
+                       else
+                       {
++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(25, 2, 0)
++                              codeToGID.clear();
++#else
+                               codeToGID = nullptr;
++#endif
+                               n = 0;
+                       }
+-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(24, 11, 0)
++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(25, 2, 0)
++                      if (!(fontFile = 
m_fontEngine->loadTrueTypeFont(std::move(id), fontsrc, std::move(codeToGID), 
fontLoc->fontNum)))
++                      {
++                              error(errSyntaxError, -1, "Couldn't create a 
font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->c_str() : 
"(unnamed)");
++                              goto err2;
++                      }
++#elif POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(24, 11, 0)
+                       if (!(fontFile = 
m_fontEngine->loadTrueTypeFont(std::move(id), fontsrc, codeToGID, n, 
fontLoc->fontNum)))
+                       {
+                               error(errSyntaxError, -1, "Couldn't create a 
font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->c_str() : 
"(unnamed)");
+@@ -3278,6 +3293,18 @@
+ #endif
+                       break;
+               case fontCIDType0COT:
++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(25, 2, 0)
++                      if (((GfxCIDFont*) gfxFont)->getCIDToGIDLen() > 0)
++                      {
++                              codeToGID = ((GfxCIDFont*) 
gfxFont)->getCIDToGID();
++                              n = codeToGID.size();
++                      }
++                      else
++                      {
++                              codeToGID.clear();
++                              n = 0;
++                      }
++#else
+                       if (((GfxCIDFont *) gfxFont)->getCIDToGID())
+                       {
+                               n = ((GfxCIDFont *) gfxFont)->getCIDToGIDLen();
+@@ -3289,7 +3316,15 @@
+                               codeToGID = nullptr;
+                               n = 0;
+                       }
+-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(24, 11, 0)
++#endif
++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(25, 2, 0)
++                      if (!(fontFile = 
m_fontEngine->loadOpenTypeCFFFont(std::move(id), fontsrc, std::move(codeToGID), 
fontLoc->fontNum)))
++                      {
++                              error(errSyntaxError, -1, "Couldn't create a 
font for '{0:s}'",
++                                      gfxFont->getName() ? 
gfxFont->getName()->c_str() : "(unnamed)");
++                              goto err2;
++                      }
++#elif POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(24, 11, 0)
+                       if (!(fontFile = 
m_fontEngine->loadOpenTypeCFFFont(std::move(id), fontsrc, codeToGID, n, 
fontLoc->fontNum)))
+                       {
+                               error(errSyntaxError, -1, "Couldn't create a 
font for '{0:s}'",
+@@ -3307,6 +3342,15 @@
+                       break;
+               case fontCIDType2:
+               case fontCIDType2OT:
++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(25, 2, 0)
++                      codeToGID.clear();
++                      n = 0;
++                      if (((GfxCIDFont*) gfxFont)->getCIDToGIDLen() > 0)
++                      {
++                              codeToGID = ((GfxCIDFont*) 
gfxFont)->getCIDToGID();
++                              n = codeToGID.size();
++                      }
++#else
+                       codeToGID = nullptr;
+                       n = 0;
+                       if (((GfxCIDFont *) gfxFont)->getCIDToGID())
+@@ -3318,6 +3362,7 @@
+                                       memcpy(codeToGID, ((GfxCIDFont 
*)gfxFont)->getCIDToGID(), n * sizeof(*codeToGID));
+                               }
+                       }
++#endif
+                       else
+                       {
+ #if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(24, 11, 0)
+@@ -3338,7 +3383,9 @@
+ #endif
+                               if (! ff)
+                                       goto err2;
+-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 2, 0)
++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(25, 2, 0)
++                              codeToGID = ((GfxCIDFont*) 
gfxFont)->getCodeToGIDMap(ff.get());
++#elif POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(22, 2, 0)
+                               codeToGID = ((GfxCIDFont*) 
gfxFont)->getCodeToGIDMap(ff.get(), &n);
+                               ff.reset();
+ #else
+@@ -3346,7 +3393,13 @@
+                               delete ff;
+ #endif
+                       }
+-#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(24, 11, 0)
++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(25, 2, 0)
++                      if (!(fontFile = 
m_fontEngine->loadTrueTypeFont(std::move(id), fontsrc, std::move(codeToGID), 
fontLoc->fontNum)))
++                      {
++                              error(errSyntaxError, -1, "Couldn't create a 
font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->c_str() : 
"(unnamed)");
++                              goto err2;
++                      }
++#elif POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(24, 11, 0)
+                       if (!(fontFile = 
m_fontEngine->loadTrueTypeFont(std::move(id), fontsrc, codeToGID, n, 
fontLoc->fontNum)))
+                       {
+                               error(errSyntaxError, -1, "Couldn't create a 
font for '{0:s}'", gfxFont->getName() ? gfxFont->getName()->c_str() : 
"(unnamed)");

diff --git a/app-office/scribus/scribus-1.6.3.ebuild 
b/app-office/scribus/scribus-1.6.3.ebuild
index 641ff2870f37..01029511526a 100644
--- a/app-office/scribus/scribus-1.6.3.ebuild
+++ b/app-office/scribus/scribus-1.6.3.ebuild
@@ -83,6 +83,7 @@ PATCHES=(
        "${FILESDIR}"/${PN}-1.5.3-fpic.patch
        "${FILESDIR}"/${PN}-1.6.1-findhyphen.patch
        "${FILESDIR}"/${PN}-1.7.0-fix-icon-version.patch
+       "${FILESDIR}"/${P}-poppler-25.02.0.patch # Version16x branch
 )
 
 src_prepare() {

Reply via email to