From 646a577c1a10ec62cd4e65e34f7af7e6f8900aee Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Sun, 14 Nov 2010 17:12:58 +0100 Subject: [PATCH] Fix build with Poppler 0.15.1 --- config.h.in | 3 ++ configure.ac | 29 ++++++++++++++++++++--- src/extension/internal/pdfinput/pdf-parser.cpp | 10 ++++++++ 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/config.h.in b/config.h.in index 909c36b..cab6f0d 100644 --- a/config.h.in +++ b/config.h.in @@ -246,6 +246,9 @@ /* Use color space API from Poppler >= 0.12.2 */ #undef POPPLER_NEW_COLOR_SPACE_API +/* GfxPatch no longer uses GfxColor in >= 0.15.1 */ +#undef POPPLER_NEW_GFXPATCH + /* Use GfxFont from Poppler >= 0.8.3 */ #undef POPPLER_NEW_GFXFONT diff --git a/configure.ac b/configure.ac index b3c9fd0..815a402 100644 --- a/configure.ac +++ b/configure.ac @@ -611,11 +611,12 @@ if test "x$popplernew" = "xyes"; then AC_DEFINE(POPPLER_NEW_GFXFONT, 1, [Use GfxFont from Poppler >= 0.8.3]) fi -AC_MSG_CHECKING(for new color space API in Poppler) ink_svd_CPPFLAGS=$CPPFLAGS ink_svd_LIBS=$LIBS CPPFLAGS="$CPPFLAGS $POPPLER_CFLAGS" LIBS="$LIBS $POPPLER_LIBS" + +AC_MSG_CHECKING(for new color space API in Poppler) popplercolor="no" AC_COMPILE_IFELSE([ #include @@ -627,9 +628,6 @@ int main() { return 0; } ], [popplercolor=yes]) -CPPFLAGS=$ink_svd_CPPFLAGS -LIBS=$ink_svd_LIBS - if test "x$popplercolor" = "xyes"; then AC_DEFINE(POPPLER_NEW_COLOR_SPACE_API, 1, [Use color space API from Poppler >= 0.12.2]) AC_MSG_RESULT(yes) @@ -637,6 +635,29 @@ else AC_MSG_RESULT(no) fi +# Poppler's b604a008 commit changes this +AC_MSG_CHECKING(whether Poppler''s GfxPatch no longer uses GfxColor) +popplergfxcolor="no" +AC_COMPILE_IFELSE([ +#include + +int main() { + GfxPatch::ColorValue color = {c: {0}}; + GfxPatch patch; + patch.color[[0]][[0]] = color; + return 0; +} +], [popplergfxcolor=yes]) +if test "x$popplergfxcolor" = "xyes"; then + AC_DEFINE(POPPLER_NEW_GFXPATCH, 1, [GfxPatch no longer uses GfxColor in >= 0.15.1]) + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +CPPFLAGS=$ink_svd_CPPFLAGS +LIBS=$ink_svd_LIBS + dnl ****************************** dnl Inkboard dependency checking dnl ****************************** diff --git a/src/extension/internal/pdfinput/pdf-parser.cpp b/src/extension/internal/pdfinput/pdf-parser.cpp index b37cbb7..ef31cd3 100644 --- a/src/extension/internal/pdfinput/pdf-parser.cpp +++ b/src/extension/internal/pdfinput/pdf-parser.cpp @@ -1874,6 +1874,9 @@ void PdfParser::doPatchMeshShFill(GfxPatchMeshShading *shading) { void PdfParser::fillPatch(GfxPatch *patch, int nComps, int depth) { GfxPatch patch00, patch01, patch10, patch11; +#ifdef POPPLER_NEW_GFXPATCH + GfxColor color; +#endif double xx[4][8], yy[4][8]; double xxm, yym; double patchColorDelta = colorDeltas[pdfPatchMeshShading-1]; @@ -1890,9 +1893,16 @@ void PdfParser::fillPatch(GfxPatch *patch, int nComps, int depth) { > patchColorDelta) { break; } +#ifdef POPPLER_NEW_GFXPATCH + color.c[i] = GfxColorComp(patch->color[0][0].c[i]); +#endif } if (i == nComps || depth == maxDepths[pdfPatchMeshShading-1]) { +#ifdef POPPLER_NEW_GFXPATCH + state->setFillColor(&color); +#else state->setFillColor(&patch->color[0][0]); +#endif 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], -- 1.7.3.2