[GB.PDF] * BUG: Try to make 'gb.pdf' compile with poppler 22.06.
authorBenoît Minisini <benoit.minisini@gambas-basic.org>
Thu, 30 Jun 2022 13:29:02 +0000 (15:29 +0200)
committerBastian Germann <bage@debian.org>
Thu, 7 Jul 2022 15:00:00 +0000 (16:00 +0100)
Gbp-Pq: Name fix-build-poppler-22-06.patch

gb.pdf/configure.ac
gb.pdf/src/CPdfDocument.cpp

index d2d0245aa3b9c99ecaa4b3a0ca70201af26594f2..7104d81af701e1e92da6823800fc9fb98d7f1a38 100644 (file)
@@ -10,7 +10,7 @@ PKG_PROG_PKG_CONFIG
 
 GB_COMPONENT_PKG_CONFIG(
   poppler, POPPLER, gb.pdf, [src],
-  'poppler >= 0.20'
+  'poppler >= 0.20' 'poppler < 23.0'
 )
 
 if test "$have_poppler" = "yes"; then
@@ -32,6 +32,8 @@ if test "$have_poppler" = "yes"; then
   AC_DEFINE_UNQUOTED(POPPLER_VERSION_0_86, $((1-$?)), Poppler version >= 0.86)
   $PKG_CONFIG --atleast-version=21.06.0 poppler
   AC_DEFINE_UNQUOTED(POPPLER_VERSION_21_06_0, $((1-$?)), Poppler version >= 21.06.0)
+  $PKG_CONFIG --atleast-version=22.06.0 poppler
+  AC_DEFINE_UNQUOTED(POPPLER_VERSION_22_06_0, $((1-$?)), Poppler version >= 22.06.0)
 fi
 
 AC_OUTPUT( \
index 89d7f8033c75147bcd70ee9bcf8fdb00507b2768..8c5a457d85557b751fd8ef37ac53218c59ae44cc 100644 (file)
@@ -477,12 +477,12 @@ int32_t open_document (void *_object, char *sfile, int32_t lfile)
        if ( GB.LoadFile(sfile,lfile,&buf,&len) ) return -1;
 
        #if POPPLER_VERSION_0_58
-       stream=new MemStream(buf,0,(uint)len,std::move(obj));
+       stream = new MemStream(buf,0,(uint)len,std::move(obj));
        #else
        obj.initNull();
-       stream=new MemStream(buf,0,(uint)len,&obj);
+       stream = new MemStream(buf,0,(uint)len,&obj);
        #endif
-       test=new PDFDoc (stream,0,0);
+       test = new PDFDoc(stream);
 
        if (!test->isOk())
        {
@@ -1036,14 +1036,41 @@ BEGIN_PROPERTY (PDFPAGELINKS_count)
 
        if (!THIS->links) aux_fill_links(_object);
        if (!THIS->links) { GB.ReturnInteger(0); return; }
+
+#if POPPLER_VERSION_22_06_0
+       int numlinks = 0;
+       for (AnnotLink *link : THIS->links->getLinks()) {
+               numlinks++;
+       }
+       GB.ReturnInteger(numlinks);
+#else
        GB.ReturnInteger(THIS->links->getNumLinks());
+#endif
 
 
 END_PROPERTY
 
 BEGIN_METHOD (PDFPAGELINKS_get,GB_INTEGER ind;)
 
-       bool pok=true;
+#if POPPLER_VERSION_22_06_0
+
+       if (!THIS->links) aux_fill_links(_object);
+       if (THIS->links && VARG(ind)>0)
+       {
+               int i = 0;
+               for (AnnotLink *link : THIS->links->getLinks()) {
+                       if (VARG(ind)==i) {
+                               THIS->action=link->getAction();
+                               RETURN_SELF();
+                       }
+               }
+       }
+       GB.Error("Out of bounds");
+    return;
+
+#else
+
+       bool pok = true;
 
        if (!THIS->links) aux_fill_links(_object);
        if (!THIS->links) pok=false;
@@ -1063,6 +1090,8 @@ BEGIN_METHOD (PDFPAGELINKS_get,GB_INTEGER ind;)
 
        RETURN_SELF();
 
+#endif
+
 END_METHOD
 
 BEGIN_PROPERTY (PDFPAGELINKDATA_parameters)
@@ -1131,9 +1160,26 @@ static void aux_get_link_dimensions(void *_object, CPDFRECT *rect)
        pw=THIS->page->getMediaWidth(); 
        ph=THIS->page->getMediaHeight();
 
+#if POPPLER_VERSION_22_06_0
+
+       uint i = 0;
+       l = t = w = h = 0;
+       for (AnnotLink *link : THIS->links->getLinks()) {
+               if (i == THIS->lcurrent) {
+                       link->getRect(&l, &t, &w, &h);
+                       break;
+               }
+               i++;
+       }
+
+#else
+
        THIS->links->getLink(THIS->lcurrent)->getRect(&l, &t, &w, &h);
-       w=w-l;
-       h=h-t;  
+
+#endif
+
+       w -= l;
+       h -= t;
 
        switch (get_rotation(THIS))
        {