commit:     97d8345d581f542c0b7c4903de1c7b777cb32d49
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Mon Feb 10 20:06:21 2025 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Mon Feb 10 20:11:37 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=97d8345d

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

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

 .../files/scribus-1.7.0-poppler-25.02.0.patch      | 162 +++++++++++++++++++++
 app-office/scribus/scribus-1.7.0.ebuild            |   1 +
 2 files changed, 163 insertions(+)

diff --git a/app-office/scribus/files/scribus-1.7.0-poppler-25.02.0.patch 
b/app-office/scribus/files/scribus-1.7.0-poppler-25.02.0.patch
new file mode 100644
index 000000000000..288f42ae3c53
--- /dev/null
+++ b/app-office/scribus/files/scribus-1.7.0-poppler-25.02.0.patch
@@ -0,0 +1,162 @@
+Index: Scribus/scribus/plugins/import/pdf/importpdf.cpp
+===================================================================
+--- Scribus/scribus/plugins/import/pdf/importpdf.cpp   (revision 26665)
++++ Scribus/scribus/plugins/import/pdf/importpdf.cpp   (revision 26666)
+@@ -416,11 +416,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 26665)
++++ Scribus/scribus/plugins/import/pdf/importpdfconfig.h       (revision 26666)
+@@ -15,4 +15,10 @@
+       + ((micro) *     1))
+ #define POPPLER_ENCODED_VERSION POPPLER_VERSION_ENCODE(POPPLER_VERSION_MAJOR, 
POPPLER_VERSION_MINOR, POPPLER_VERSION_MICRO)
+ 
++#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 26665)
++++ Scribus/scribus/plugins/import/pdf/slaoutput.cpp   (revision 26666)
+@@ -2791,7 +2791,7 @@
+       {
+               if (dictRef->isNull())
+                       return;
+-              OCGs *contentConfig = m_catalog->getOptContentConfig();
++              POPPLER_CONST_25_02 OCGs *contentConfig = 
m_catalog->getOptContentConfig();
+               OptionalContentGroup *oc;
+               if (dictRef->isRef())
+               {
+@@ -2928,7 +2928,11 @@
+       SplashFontFile *fontFile;
+       SplashFontSrc *fontsrc = nullptr;
+       Object refObj, strObj;
++#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 };
+@@ -3055,10 +3059,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)");
+@@ -3089,6 +3103,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();
+@@ -3100,7 +3126,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}'",
+@@ -3118,6 +3152,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())
+@@ -3129,6 +3172,7 @@
+                                       memcpy(codeToGID, ((GfxCIDFont 
*)gfxFont)->getCIDToGID(), n * sizeof(*codeToGID));
+                               }
+                       }
++#endif
+                       else
+                       {
+ #if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(24, 11, 0)
+@@ -3144,10 +3188,20 @@
+ #endif
+                               if (! ff)
+                                       goto err2;
++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(25, 2, 0)
++                              codeToGID = ((GfxCIDFont*) 
gfxFont)->getCodeToGIDMap(ff.get());
++#else
+                               codeToGID = ((GfxCIDFont*) 
gfxFont)->getCodeToGIDMap(ff.get(), &n);
++#endif
+                               ff.reset();
+                       }
+-#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.7.0.ebuild 
b/app-office/scribus/scribus-1.7.0.ebuild
index fe52e9c32325..11ecb660fcc5 100644
--- a/app-office/scribus/scribus-1.7.0.ebuild
+++ b/app-office/scribus/scribus-1.7.0.ebuild
@@ -80,6 +80,7 @@ PATCHES=(
        "${FILESDIR}"/${PN}-1.7.0-findhyphen.patch
        "${FILESDIR}"/${PN}-1.7.0-dont-install-thirdparty-license.patch
        "${FILESDIR}"/${PN}-1.7.0-fix-icon-version.patch
+       "${FILESDIR}"/${P}-poppler-25.02.0.patch # from trunk
 )
 
 src_prepare() {

Reply via email to