From: Matthias Kilian Subject: editors/libreoffice: let it build with poppler-2026.02.0 To: robert@openbsd.org Cc: ports@openbsd.org Date: Thu, 12 Feb 2026 20:10:59 +0100 Hi, this fixes libreoffice for the upcoming update to poppler-26.02.0. Patches are from upstream, with proper #if's, so it should still build with poppler-26.01.0. ok? Ciao, Kili Index: patches/patch-sdext_source_pdfimport_xpdfwrapper_pdfioutdev_gpl_cxx =================================================================== RCS file: patches/patch-sdext_source_pdfimport_xpdfwrapper_pdfioutdev_gpl_cxx diff -N patches/patch-sdext_source_pdfimport_xpdfwrapper_pdfioutdev_gpl_cxx --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-sdext_source_pdfimport_xpdfwrapper_pdfioutdev_gpl_cxx 11 Feb 2026 21:37:27 -0000 @@ -0,0 +1,75 @@ +Fix build with poppler-26.02.0. + +From upstream commit 3c29b709cd2b5b18776b3c15638b66bd8a7dcb07. + +Index: sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx +--- sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx.orig ++++ sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx +@@ -711,13 +711,17 @@ void PDFOutDev::restoreState(GfxState*) + printf( "restoreState\n" ); + } + +-#if POPPLER_CHECK_VERSION(0, 71, 0) ++#if POPPLER_CHECK_VERSION(26, 2, 0) ++void PDFOutDev::setDefaultCTM(const std::array &pMat) ++#elif POPPLER_CHECK_VERSION(0, 71, 0) + void PDFOutDev::setDefaultCTM(const double *pMat) + #else + void PDFOutDev::setDefaultCTM(double *pMat) + #endif + { ++#if !POPPLER_CHECK_VERSION(26, 2, 0) + assert(pMat); ++#endif + + OutputDev::setDefaultCTM(pMat); + +@@ -737,8 +741,12 @@ void PDFOutDev::updateCTM(GfxState* state, + { + assert(state); + ++#if POPPLER_CHECK_VERSION(26, 2, 0) ++ const std::array pMat = state->getCTM(); ++#else + const double* const pMat = state->getCTM(); + assert(pMat); ++#endif + + printf( "updateCtm %f %f %f %f %f %f\n", + normalize(pMat[0]), +@@ -1044,7 +1052,11 @@ void PDFOutDev::drawChar(GfxState *state, double x, do + + double csdx = 0.0; + double csdy = 0.0; ++#if POPPLER_CHECK_VERSION(26, 2, 0) ++ if (!state->getFont() || GfxFont::WritingMode::Horizontal == state->getFont()->getWMode()) ++#else + if (!state->getFont() || !state->getFont()->getWMode()) ++#endif + { + csdx = state->getCharSpace(); + if (*u == ' ') +@@ -1067,7 +1079,11 @@ void PDFOutDev::drawChar(GfxState *state, double x, do + const double aPositionX(x-originX); + const double aPositionY(y-originY); + ++#if POPPLER_CHECK_VERSION(26, 2, 0) ++ const std::array pTextMat=state->getTextMat(); ++#else + const double* pTextMat=state->getTextMat(); ++#endif + printf( "drawChar %f %f %f %f %f %f %f %f %f ", + normalize(aPositionX), + normalize(aPositionY), +@@ -1348,7 +1364,11 @@ poppler_bool PDFOutDev::tilingPatternFill(GfxState *st + + const int nDPI = 72; // GfxState seems to have 72.0 as magic for some reason + auto pSplashGfxState = new GfxState(nDPI, nDPI, &aBox, 0, false); ++#if POPPLER_CHECK_VERSION(26, 2, 0) ++ auto pSplashOut = new SplashOutputDev(splashModeRGB8, 1, nullptr); ++#else + auto pSplashOut = new SplashOutputDev(splashModeRGB8, 1, false, nullptr); ++#endif + pSplashOut->setEnableFreeType(false); + pSplashOut->startDoc(m_pDoc); + pSplashOut->startPage(0 /* pageNum */, pSplashGfxState, nullptr /* xref */); Index: patches/patch-sdext_source_pdfimport_xpdfwrapper_pdfioutdev_gpl_hxx =================================================================== RCS file: patches/patch-sdext_source_pdfimport_xpdfwrapper_pdfioutdev_gpl_hxx diff -N patches/patch-sdext_source_pdfimport_xpdfwrapper_pdfioutdev_gpl_hxx --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-sdext_source_pdfimport_xpdfwrapper_pdfioutdev_gpl_hxx 11 Feb 2026 21:37:27 -0000 @@ -0,0 +1,62 @@ +Fix build with poppler-26.02.0. + +From upstream commit 3c29b709cd2b5b18776b3c15638b66bd8a7dcb07. + +Index: sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.hxx +--- sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.hxx.orig ++++ sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.hxx +@@ -84,13 +84,21 @@ namespace pdfi + isUnderline(rSrc.isUnderline), + size(rSrc.size) + { ++#if POPPLER_CHECK_VERSION(26, 2, 0) ++ familyName.append(rSrc.getFamilyName()); ++#else + familyName.append(&rSrc.getFamilyName()); ++#endif + } + + FontAttributes& operator=( const FontAttributes& rSrc ) + { + familyName.clear(); ++#if POPPLER_CHECK_VERSION(26, 2, 0) ++ familyName.append(rSrc.getFamilyName()); ++#else + familyName.append(&rSrc.getFamilyName()); ++#endif + + isEmbedded = rSrc.isEmbedded; + maFontWeight= rSrc.maFontWeight; +@@ -103,12 +111,21 @@ namespace pdfi + + bool operator==(const FontAttributes& rFont) const + { ++#if POPPLER_CHECK_VERSION(26, 2, 0) ++ return getFamilyName().compare(rFont.getFamilyName())==0 && ++ isEmbedded == rFont.isEmbedded && ++ maFontWeight == rFont.maFontWeight && ++ isItalic == rFont.isItalic && ++ isUnderline == rFont.isUnderline && ++ size == rFont.size; ++#else + return getFamilyName().cmp(&rFont.getFamilyName())==0 && + isEmbedded == rFont.isEmbedded && + maFontWeight == rFont.maFontWeight && + isItalic == rFont.isItalic && + isUnderline == rFont.isUnderline && + size == rFont.size; ++#endif + } + + GooString familyName; +@@ -171,7 +188,9 @@ namespace pdfi + //----- initialization and control + + // Set default transform matrix. +-#if POPPLER_CHECK_VERSION(0, 71, 0) ++#if POPPLER_CHECK_VERSION(26, 2, 0) ++void setDefaultCTM(const std::array &pMat) override; ++#elif POPPLER_CHECK_VERSION(0, 71, 0) + virtual void setDefaultCTM(const double *ctm) override; + #else + virtual void setDefaultCTM(double *ctm) override;