-From 69e07012533b8393edd8b9ec4da6d239d204858a Mon Sep 17 00:00:00 2001
-From: Even Rouault <even.rouault@spatialys.com>
-Date: Fri, 12 Oct 2018 19:02:40 +0200
-Subject: [PATCH] Add support for Poppler 0.69 (fixes #1004)
-
----
- gdal/GDALmake.opt.in | 1 +
- gdal/configure | 61 ++++++++++++++++++++++++++---------
- gdal/configure.ac | 56 +++++++++++++++++++++++---------
- gdal/frmts/pdf/GNUmakefile | 4 +++
- gdal/frmts/pdf/makefile.vc | 6 +++-
- gdal/frmts/pdf/pdfdataset.cpp | 12 +++++++
- gdal/nmake.opt | 2 ++
- 7 files changed, 111 insertions(+), 31 deletions(-)
-
-diff --git a/gdal/GDALmake.opt.in b/gdal/GDALmake.opt.in
-index c3b5b34f92b..eaf005e5a14 100644
---- a/gdal/GDALmake.opt.in
-+++ b/gdal/GDALmake.opt.in
-@@ -473,6 +473,7 @@ POPPLER_BASE_STREAM_HAS_TWO_ARGS = @POPPLER_BASE_STREAM_HAS_TWO_ARGS@
- POPPLER_0_20_OR_LATER = @POPPLER_0_20_OR_LATER@
- POPPLER_0_23_OR_LATER = @POPPLER_0_23_OR_LATER@
- POPPLER_0_58_OR_LATER = @POPPLER_0_58_OR_LATER@
-+POPPLER_0_69_OR_LATER = @POPPLER_0_69_OR_LATER@
- POPPLER_INC = @POPPLER_INC@
- POPPLER_PLUGIN_LIB = @POPPLER_PLUGIN_LIB@
-
-index 857f7fdb445..b6e59020c5b 100644
---- a/gdal/configure.ac
-+++ b/gdal/configure.ac
-@@ -4446,6 +4446,7 @@ POPPLER_BASE_STREAM_HAS_TWO_ARGS=no
- POPPLER_0_20_OR_LATER=no
- POPPLER_0_23_OR_LATER=no
- POPPLER_0_58_OR_LATER=no
-+POPPLER_0_69_OR_LATER=no
-
- AC_MSG_CHECKING([for poppler])
-
-@@ -4486,21 +4487,45 @@ if test "$with_poppler" != "no" -a "$with_poppler" != ""; then
-
- CHECK_OTHER_POPPLER_VERSION=yes
-
-- # And now we check if we have Poppler >= 0.58.0
-- AC_MSG_CHECKING([if Object does have new API (>= 0.58.0)])
-- rm -f testpoppler.*
-- echo '#include <poppler/Object.h>' > testpoppler.cpp
-- echo 'int main(int argc, char** argv) { Object o(objNull); return 0; }' >> testpoppler.cpp
-- if test -z "`${CXX} testpoppler.cpp -c ${POPPLER_INC} 2>&1`" ; then
-- POPPLER_0_58_OR_LATER=yes
-- POPPLER_0_23_OR_LATER=yes
-- POPPLER_0_20_OR_LATER=yes
-- POPPLER_BASE_STREAM_HAS_TWO_ARGS=yes
-- POPPLER_HAS_OPTCONTENT=yes
-- CHECK_OTHER_POPPLER_VERSION=no
-- AC_MSG_RESULT([yes])
-- else
-- AC_MSG_RESULT([no])
-+ if test "$CHECK_OTHER_POPPLER_VERSION" = "yes"; then
-+ AC_MSG_CHECKING([if OptionalContent has API >= 0.69.0])
-+ rm -f testpoppler.*
-+ echo '#include <poppler/OptionalContent.h>' > testpoppler.cpp
-+ echo 'int main(int argc, char** argv) {' >> testpoppler.cpp
-+ echo 'OCGs ocg(nullptr, nullptr);' >> testpoppler.cpp
-+ echo 'ocg.getOCGs().size();' >> testpoppler.cpp
-+ echo 'return 0; }' >> testpoppler.cpp
-+ if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c ${POPPLER_INC} 2>&1`" ; then
-+ POPPLER_0_69_OR_LATER=yes
-+ POPPLER_0_58_OR_LATER=yes
-+ POPPLER_0_23_OR_LATER=yes
-+ POPPLER_0_20_OR_LATER=yes
-+ POPPLER_BASE_STREAM_HAS_TWO_ARGS=yes
-+ POPPLER_HAS_OPTCONTENT=yes
-+ CHECK_OTHER_POPPLER_VERSION=no
-+ AC_MSG_RESULT([yes])
-+ else
-+ AC_MSG_RESULT([no])
-+ fi
-+ fi
-+
-+ if test "$CHECK_OTHER_POPPLER_VERSION" = "yes"; then
-+ # And now we check if we have Poppler >= 0.58.0
-+ AC_MSG_CHECKING([if Object does have new API (>= 0.58.0)])
-+ rm -f testpoppler.*
-+ echo '#include <poppler/Object.h>' > testpoppler.cpp
-+ echo 'int main(int argc, char** argv) { Object o(objNull); return 0; }' >> testpoppler.cpp
-+ if test -z "`${CXX} ${CXXFLAGS} ${CPPFLAGS} testpoppler.cpp -c ${POPPLER_INC} 2>&1`" ; then
-+ POPPLER_0_58_OR_LATER=yes
-+ POPPLER_0_23_OR_LATER=yes
-+ POPPLER_0_20_OR_LATER=yes
-+ POPPLER_BASE_STREAM_HAS_TWO_ARGS=yes
-+ POPPLER_HAS_OPTCONTENT=yes
-+ CHECK_OTHER_POPPLER_VERSION=no
-+ AC_MSG_RESULT([yes])
-+ else
-+ AC_MSG_RESULT([no])
-+ fi
- fi
-
- if test "$CHECK_OTHER_POPPLER_VERSION" = "yes"; then
-@@ -4585,6 +4610,7 @@ AC_SUBST(POPPLER_BASE_STREAM_HAS_TWO_ARGS, $POPPLER_BASE_STREAM_HAS_TWO_ARGS)
- AC_SUBST(POPPLER_0_20_OR_LATER, $POPPLER_0_20_OR_LATER)
- AC_SUBST(POPPLER_0_23_OR_LATER, $POPPLER_0_23_OR_LATER)
- AC_SUBST(POPPLER_0_58_OR_LATER, $POPPLER_0_58_OR_LATER)
-+AC_SUBST(POPPLER_0_69_OR_LATER, $POPPLER_0_69_OR_LATER)
- AC_SUBST(POPPLER_INC, $POPPLER_INC)
- AC_SUBST(POPPLER_PLUGIN_LIB, $POPPLER_PLUGIN_LIB)
-
-diff --git a/gdal/frmts/pdf/GNUmakefile b/gdal/frmts/pdf/GNUmakefile
-index 2014070eac7..618072f05d3 100644
---- a/gdal/frmts/pdf/GNUmakefile
-+++ b/gdal/frmts/pdf/GNUmakefile
-@@ -35,6 +35,10 @@ ifeq ($(POPPLER_0_58_OR_LATER),yes)
- CPPFLAGS += -DPOPPLER_0_58_OR_LATER
- endif
-
-+ifeq ($(POPPLER_0_69_OR_LATER),yes)
-+CPPFLAGS += -DPOPPLER_0_69_OR_LATER
-+endif
-+
- ifeq ($(HAVE_PODOFO),yes)
- CPPFLAGS += -DHAVE_PODOFO
- endif
-diff --git a/gdal/frmts/pdf/makefile.vc b/gdal/frmts/pdf/makefile.vc
-index b4fa14d0a18..ad76d3de70c 100644
---- a/gdal/frmts/pdf/makefile.vc
-+++ b/gdal/frmts/pdf/makefile.vc
-@@ -14,7 +14,7 @@ OBJ = $(OBJ) ..\..\ogr\ogrsf_frmts\mem\ogrmemdatasource.obj ..\..\ogr\ogrsf_frmt
- EXTRAFLAGS = -I..\vrt -I..\mem -I..\..\ogr\ogrsf_frmts\mem $(POPPLER_EXTRAFLAGS) $(PODOFO_EXTRAFLAGS) $(PDFIUM_EXTRAFLAGS)
-
- !IFDEF POPPLER_ENABLED
--POPPLER_EXTRAFLAGS = $(POPPLER_CFLAGS) $(POPPLER_HAS_OPTCONTENT_FLAGS) $(POPPLER_BASE_STREAM_HAS_TWO_ARGS_FLAGS) $(POPPLER_0_20_OR_LATER_FLAGS) $(POPPLER_0_23_OR_LATER_FLAGS) $(POPPLER_0_58_OR_LATER_FLAGS) -DHAVE_POPPLER
-+POPPLER_EXTRAFLAGS = $(POPPLER_CFLAGS) $(POPPLER_HAS_OPTCONTENT_FLAGS) $(POPPLER_BASE_STREAM_HAS_TWO_ARGS_FLAGS) $(POPPLER_0_20_OR_LATER_FLAGS) $(POPPLER_0_23_OR_LATER_FLAGS) $(POPPLER_0_58_OR_LATER_FLAGS) $(POPPLER_0_69_OR_LATER_FLAGS) -DHAVE_POPPLER
-
- !IFDEF POPPLER_HAS_OPTCONTENT
- POPPLER_HAS_OPTCONTENT_FLAGS = -DPOPPLER_HAS_OPTCONTENT
-@@ -36,6 +36,10 @@ POPPLER_0_23_OR_LATER_FLAGS = -DPOPPLER_0_23_OR_LATER
- POPPLER_0_58_OR_LATER_FLAGS = -DPOPPLER_0_58_OR_LATER
- !ENDIF
-
-+!IFDEF POPPLER_0_69_OR_LATER
-+POPPLER_0_69_OR_LATER_FLAGS = -DPOPPLER_0_69_OR_LATER
-+!ENDIF
-+
- !ENDIF
-
- !IFDEF PODOFO_ENABLED
-diff --git a/gdal/frmts/pdf/pdfdataset.cpp b/gdal/frmts/pdf/pdfdataset.cpp
-index ee89fd07564..1a56f57ee06 100644
---- a/gdal/frmts/pdf/pdfdataset.cpp
-+++ b/gdal/frmts/pdf/pdfdataset.cpp
-@@ -3440,10 +3440,16 @@ void PDFDataset::FindLayersPoppler()
- }