aboutsummaryrefslogtreecommitdiffstats
path: root/graphics/xournal
diff options
context:
space:
mode:
authorkwm <kwm@FreeBSD.org>2011-10-31 17:53:19 +0800
committerkwm <kwm@FreeBSD.org>2011-10-31 17:53:19 +0800
commite023fa413a2b5c92e3a25b68a938aafee6c8f0df (patch)
tree815ee3eb76f1fbeac96aba420506706d87f0dc44 /graphics/xournal
parentb76f21ecd341615f5c842d25b0e04db00f826db2 (diff)
downloadfreebsd-ports-gnome-e023fa413a2b5c92e3a25b68a938aafee6c8f0df.tar.gz
freebsd-ports-gnome-e023fa413a2b5c92e3a25b68a938aafee6c8f0df.tar.zst
freebsd-ports-gnome-e023fa413a2b5c92e3a25b68a938aafee6c8f0df.zip
Update poppler to 0.18.0.
The qt3 bindings are removed upstream. The glib library lost the last gdk-pixbuf code. And rename it from -gtk to -glib. Thanks to: pav for a exp-runs bapt for double checking the libreoffice ports
Diffstat (limited to 'graphics/xournal')
-rw-r--r--graphics/xournal/Makefile4
-rw-r--r--graphics/xournal/files/patch-poppler-0.18136
2 files changed, 138 insertions, 2 deletions
diff --git a/graphics/xournal/Makefile b/graphics/xournal/Makefile
index 54808f0d7cd8..c475113cf09b 100644
--- a/graphics/xournal/Makefile
+++ b/graphics/xournal/Makefile
@@ -7,14 +7,14 @@
PORTNAME= xournal
PORTVERSION= 0.4.5
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= graphics
MASTER_SITES= SF
MAINTAINER= me@janh.de
COMMENT= A notetaking application that can annotate PDFs
-LIB_DEPENDS= poppler-glib.6:${PORTSDIR}/graphics/poppler-gtk
+LIB_DEPENDS= poppler-glib.8:${PORTSDIR}/graphics/poppler-glib
LICENSE= GPLv2
diff --git a/graphics/xournal/files/patch-poppler-0.18 b/graphics/xournal/files/patch-poppler-0.18
new file mode 100644
index 000000000000..61c757fc74ad
--- /dev/null
+++ b/graphics/xournal/files/patch-poppler-0.18
@@ -0,0 +1,136 @@
+--- src/xo-misc.c 2010/10/18 18:45:36 1.23
++++ src/xo-misc.c 2011/07/21 22:07:33 1.24
+@@ -2197,3 +2197,93 @@
+ if(GTK_IS_CONTAINER(w))
+ gtk_container_forall(GTK_CONTAINER(w), install_focus_hooks, data);
+ }
++
++// wrapper for missing poppler functions (defunct poppler-gdk api)
++
++static void
++wrapper_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++;
++ }
++ }
++}
++
++void
++wrapper_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)
++{
++ 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);
++
++ 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);
++
++ wrapper_copy_cairo_surface_to_pixbuf (surface, pixbuf);
++ cairo_surface_destroy (surface);
++}
+--- src/xo-misc.h 2009/09/28 06:14:17 1.15
++++ src/xo-misc.h 2011/07/21 22:07:33 1.16
+@@ -107,6 +107,15 @@
+ gboolean intercept_activate_events(GtkWidget *w, GdkEvent *ev, gpointer data);
+ void install_focus_hooks(GtkWidget *w, gpointer data);
+
++// wrapper for a function no longer provided by poppler 0.17+
++void
++wrapper_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);
++
+ // defines for paper rulings
+
+ #define RULING_MARGIN_COLOR 0xff0080ff
+--- src/xo-file.c 2010/10/20 22:22:36 1.23
++++ src/xo-file.c 2011/07/21 22:07:33 1.24
+@@ -1031,7 +1031,7 @@
+ scaled_height = (int) (req->dpi * height/72);
+ pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB,
+ FALSE, 8, scaled_width, scaled_height);
+- poppler_page_render_to_pixbuf(
++ wrapper_poppler_page_render_to_pixbuf(
+ pdfpage, 0, 0, scaled_width, scaled_height,
+ req->dpi/72, 0, pixbuf);
+ g_object_unref(pdfpage);
+--- src/xo-print.c 2009/11/15 05:06:00 1.13
++++ src/xo-print.c 2011/07/21 22:07:33 1.14
+@@ -728,7 +728,7 @@
+ width = (int) (PDFTOPPM_PRINTING_DPI * pgwidth/72.0);
+ height = (int) (PDFTOPPM_PRINTING_DPI * pgheight/72.0);
+ pix = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8, width, height);
+- poppler_page_render_to_pixbuf(
++ wrapper_poppler_page_render_to_pixbuf(
+ pdfpage, 0, 0, width, height, PDFTOPPM_PRINTING_DPI/72.0, 0, pix);
+ g_object_unref(pdfpage);
+ }