This unbreaks the build of apvlv after the update to poppler-0.18. Please test if you're using apvlv.
Ciao, Kili Index: patches/patch-src_ApvlvFile_cpp =================================================================== RCS file: /cvs/ports/print/apvlv/patches/patch-src_ApvlvFile_cpp,v retrieving revision 1.1 diff -u -p -r1.1 patch-src_ApvlvFile_cpp --- patches/patch-src_ApvlvFile_cpp 4 Jun 2011 19:04:24 -0000 1.1 +++ patches/patch-src_ApvlvFile_cpp 17 Nov 2011 18:46:44 -0000 @@ -1,7 +1,21 @@ $OpenBSD: patch-src_ApvlvFile_cpp,v 1.1 2011/06/04 19:04:24 kili Exp $ + +Fixes for poppler-0.16 and poppler-0.18. The latter gyped from archlinux. + --- src/ApvlvFile.cpp.orig Tue Apr 20 03:01:33 2010 -+++ src/ApvlvFile.cpp Sat May 14 15:21:07 2011 -@@ -267,9 +267,9 @@ ApvlvPDF::ApvlvPDF (const char *filename, bool check): ++++ src/ApvlvFile.cpp Thu Nov 17 19:36:01 2011 +@@ -29,6 +29,10 @@ + #include "ApvlvUtil.hpp" + #include "ApvlvView.hpp" + ++#ifndef POPPLER_WITH_GDK ++#include "poppler-gdk.h" ++#endif ++ + #include <iostream> + #include <fstream> + +@@ -267,9 +271,9 @@ ApvlvPDF::ApvlvPDF (const char *filename, bool check): bool ApvlvPDF::pagetext (int pn, int x1, int y1, int x2, int y2, char **out) { Index: patches/patch-src_poppler-gdk_h =================================================================== RCS file: patches/patch-src_poppler-gdk_h diff -N patches/patch-src_poppler-gdk_h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-src_poppler-gdk_h 17 Nov 2011 18:46:44 -0000 @@ -0,0 +1,139 @@ +$OpenBSD$ + +Fix for poppler-0.18. Patch gyped from archlinux. + +--- src/poppler-gdk.h.orig Thu Nov 17 19:35:27 2011 ++++ src/poppler-gdk.h Thu Nov 17 19:35:27 2011 +@@ -0,0 +1,132 @@ ++#include <goo/gtypes.h> ++ ++static void ++copy_cairo_surface_to_pixbuf (cairo_surface_t *surface, ++ GdkPixbuf *pixbuf) ++{ ++ int cairo_width, cairo_height, cairo_rowstride; ++ unsigned char *pixbuf_data, *dst, *cairo_data; ++ int pixbuf_rowstride, pixbuf_n_channels; ++ unsigned int *src; ++ int x, y; ++ ++ cairo_width = cairo_image_surface_get_width (surface); ++ cairo_height = cairo_image_surface_get_height (surface); ++ cairo_rowstride = cairo_image_surface_get_stride (surface); ++ cairo_data = cairo_image_surface_get_data (surface); ++ ++ pixbuf_data = gdk_pixbuf_get_pixels (pixbuf); ++ pixbuf_rowstride = gdk_pixbuf_get_rowstride (pixbuf); ++ pixbuf_n_channels = gdk_pixbuf_get_n_channels (pixbuf); ++ ++ if (cairo_width > gdk_pixbuf_get_width (pixbuf)) ++ cairo_width = gdk_pixbuf_get_width (pixbuf); ++ if (cairo_height > gdk_pixbuf_get_height (pixbuf)) ++ cairo_height = gdk_pixbuf_get_height (pixbuf); ++ for (y = 0; y < cairo_height; y++) ++ { ++ src = (unsigned int *) (cairo_data + y * cairo_rowstride); ++ dst = pixbuf_data + y * pixbuf_rowstride; ++ for (x = 0; x < cairo_width; x++) ++ { ++ dst[0] = (*src >> 16) & 0xff; ++ dst[1] = (*src >> 8) & 0xff; ++ dst[2] = (*src >> 0) & 0xff; ++ if (pixbuf_n_channels == 4) ++ dst[3] = (*src >> 24) & 0xff; ++ dst += pixbuf_n_channels; ++ src++; ++ } ++ } ++} ++ ++static void ++_poppler_page_render_to_pixbuf (PopplerPage *page, ++ int src_x, int src_y, ++ int src_width, int src_height, ++ double scale, ++ int rotation, ++ GBool printing, ++ GdkPixbuf *pixbuf) ++{ ++ cairo_t *cr; ++ cairo_surface_t *surface; ++ ++ surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, ++ src_width, src_height); ++ cr = cairo_create (surface); ++ cairo_save (cr); ++ switch (rotation) { ++ case 90: ++ cairo_translate (cr, src_x + src_width, -src_y); ++ break; ++ case 180: ++ cairo_translate (cr, src_x + src_width, src_y + src_height); ++ break; ++ case 270: ++ cairo_translate (cr, -src_x, src_y + src_height); ++ break; ++ default: ++ cairo_translate (cr, -src_x, -src_y); ++ } ++ ++ if (scale != 1.0) ++ cairo_scale (cr, scale, scale); ++ ++ if (rotation != 0) ++ cairo_rotate (cr, rotation * G_PI / 180.0); ++ ++ if (printing) ++ poppler_page_render_for_printing (page, cr); ++ else ++ poppler_page_render (page, cr); ++ cairo_restore (cr); ++ ++ cairo_set_operator (cr, CAIRO_OPERATOR_DEST_OVER); ++ cairo_set_source_rgb (cr, 1., 1., 1.); ++ cairo_paint (cr); ++ ++ cairo_destroy (cr); ++ ++ copy_cairo_surface_to_pixbuf (surface, pixbuf); ++ cairo_surface_destroy (surface); ++} ++ ++/** ++ * poppler_page_render_to_pixbuf: ++ * @page: the page to render from ++ * @src_x: x coordinate of upper left corner ++ * @src_y: y coordinate of upper left corner ++ * @src_width: width of rectangle to render ++ * @src_height: height of rectangle to render ++ * @scale: scale specified as pixels per point ++ * @rotation: rotate the document by the specified degree ++ * @pixbuf: pixbuf to render into ++ * ++ * First scale the document to match the specified pixels per point, ++ * then render the rectangle given by the upper left corner at ++ * (src_x, src_y) and src_width and src_height. ++ * This function is for rendering a page that will be displayed. ++ * If you want to render a page that will be printed use ++ * poppler_page_render_to_pixbuf_for_printing() instead ++ * ++ * Deprecated: 0.16 ++ **/ ++void ++poppler_page_render_to_pixbuf (PopplerPage *page, ++ int src_x, int src_y, ++ int src_width, int src_height, ++ double scale, ++ int rotation, ++ GdkPixbuf *pixbuf) ++{ ++ g_return_if_fail (POPPLER_IS_PAGE (page)); ++ g_return_if_fail (scale > 0.0); ++ g_return_if_fail (pixbuf != NULL); ++ ++ _poppler_page_render_to_pixbuf (page, src_x, src_y, ++ src_width, src_height, ++ scale, rotation, ++ gFalse, ++ pixbuf); ++}