Code

Patch from Lubomir Rintel to fix build with Poppler 0.15.1
authorKrzysztof Kosiński <tweenk.pl@gmail.com>
Sun, 21 Nov 2010 12:22:08 +0000 (13:22 +0100)
committerKrzysztof Kosiński <tweenk.pl@gmail.com>
Sun, 21 Nov 2010 12:22:08 +0000 (13:22 +0100)
configure.ac
src/extension/internal/pdfinput/pdf-parser.cpp

index 9cb50b06ee30804be04b4f3f48e6a44e6551442d..5b66ddc2c82a173f88ee72116c56228912733352 100644 (file)
@@ -612,11 +612,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 <GfxState.h>
@@ -628,9 +629,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)
@@ -638,6 +636,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 <GfxState.h>
+
+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 ******************************
index b37cbb7779ecb237c05e3a23576af3179cb77a3e..ef31cd39ff535d4e4714b56ff9fb70e0440d6150 100644 (file)
@@ -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],