diff options
author | kwm <kwm@FreeBSD.org> | 2011-10-31 17:53:19 +0800 |
---|---|---|
committer | kwm <kwm@FreeBSD.org> | 2011-10-31 17:53:19 +0800 |
commit | e023fa413a2b5c92e3a25b68a938aafee6c8f0df (patch) | |
tree | 815ee3eb76f1fbeac96aba420506706d87f0dc44 /graphics/xournal | |
parent | b76f21ecd341615f5c842d25b0e04db00f826db2 (diff) | |
download | freebsd-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/Makefile | 4 | ||||
-rw-r--r-- | graphics/xournal/files/patch-poppler-0.18 | 136 |
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); + } |