[arch-commits] Commit in xournal/repos (10 files)

Gaetan Bisson bisson at archlinux.org
Wed Oct 5 16:16:06 UTC 2011


    Date: Wednesday, October 5, 2011 @ 12:16:06
  Author: bisson
Revision: 139871

archrelease: copy trunk to staging-i686, staging-x86_64

Added:
  xournal/repos/staging-i686/
  xournal/repos/staging-i686/PKGBUILD
    (from rev 139870, xournal/trunk/PKGBUILD)
  xournal/repos/staging-i686/install
    (from rev 139870, xournal/trunk/install)
  xournal/repos/staging-i686/pdf-export-64.patch
    (from rev 139870, xournal/trunk/pdf-export-64.patch)
  xournal/repos/staging-i686/poppler-api.patch
    (from rev 139870, xournal/trunk/poppler-api.patch)
  xournal/repos/staging-x86_64/
  xournal/repos/staging-x86_64/PKGBUILD
    (from rev 139870, xournal/trunk/PKGBUILD)
  xournal/repos/staging-x86_64/install
    (from rev 139870, xournal/trunk/install)
  xournal/repos/staging-x86_64/pdf-export-64.patch
    (from rev 139870, xournal/trunk/pdf-export-64.patch)
  xournal/repos/staging-x86_64/poppler-api.patch
    (from rev 139870, xournal/trunk/poppler-api.patch)

------------------------------------+
 staging-i686/PKGBUILD              |   35 +++++++
 staging-i686/install               |   13 ++
 staging-i686/pdf-export-64.patch   |   89 +++++++++++++++++++
 staging-i686/poppler-api.patch     |  158 +++++++++++++++++++++++++++++++++++
 staging-x86_64/PKGBUILD            |   35 +++++++
 staging-x86_64/install             |   13 ++
 staging-x86_64/pdf-export-64.patch |   89 +++++++++++++++++++
 staging-x86_64/poppler-api.patch   |  158 +++++++++++++++++++++++++++++++++++
 8 files changed, 590 insertions(+)

Copied: xournal/repos/staging-i686/PKGBUILD (from rev 139870, xournal/trunk/PKGBUILD)
===================================================================
--- staging-i686/PKGBUILD	                        (rev 0)
+++ staging-i686/PKGBUILD	2011-10-05 16:16:06 UTC (rev 139871)
@@ -0,0 +1,35 @@
+# $Id$
+# Maintainer: Gaetan Bisson <bisson at archlinux.org>
+
+pkgname=xournal
+pkgver=0.4.5
+pkgrel=5
+pkgdesc='Notetaking and sketching application'
+arch=('i686' 'x86_64')
+url='http://xournal.sourceforge.net/'
+license=('GPL')
+depends=('libgnomecanvas' 'poppler-glib' 'shared-mime-info' 'desktop-file-utils' 'hicolor-icon-theme')
+optdepends=('ghostscript: import PS/PDF files as bitmap backgrounds')
+source=("http://downloads.sourceforge.net/xournal/xournal-${pkgver}.tar.gz"
+        'pdf-export-64.patch'
+        'poppler-api.patch')
+sha1sums=('390cb275774469ed1b04b7268dd625bd456c895e'
+          'f23f53b9f69ba8a5773c53d7bca99abf9d8504f8'
+          '5aedd5610b42df96e964bb889d4bf0831c2080bc')
+
+install=install
+
+build() {
+	cd "${srcdir}/${pkgname}-${pkgver}"
+
+	patch -p1 -i ../pdf-export-64.patch # from xournal CVS, see FS#21693
+	patch -p1 -i ../poppler-api.patch
+
+	./configure --prefix=/usr
+	make
+}
+
+package() {
+	cd "${srcdir}/${pkgname}-${pkgver}"
+	make DESTDIR="${pkgdir}" install desktop-install
+}

Copied: xournal/repos/staging-i686/install (from rev 139870, xournal/trunk/install)
===================================================================
--- staging-i686/install	                        (rev 0)
+++ staging-i686/install	2011-10-05 16:16:06 UTC (rev 139871)
@@ -0,0 +1,13 @@
+post_install() {
+	update-desktop-database -q
+	gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+	update-mime-database usr/share/mime &>/dev/null
+}
+
+post_upgrade() {
+	post_install
+}
+
+post_remove() {
+	post_install
+}

Copied: xournal/repos/staging-i686/pdf-export-64.patch (from rev 139870, xournal/trunk/pdf-export-64.patch)
===================================================================
--- staging-i686/pdf-export-64.patch	                        (rev 0)
+++ staging-i686/pdf-export-64.patch	2011-10-05 16:16:06 UTC (rev 139871)
@@ -0,0 +1,89 @@
+diff -aur old/src/xo-print.c new/src/xo-print.c
+--- old/src/xo-print.c	2009-09-28 23:36:54.000000000 +0200
++++ new/src/xo-print.c	2009-11-15 06:06:00.000000000 +0100
+@@ -761,7 +761,7 @@
+ 
+   make_xref(xref, xref->last+1, pdfbuf->len);
+   g_string_append_printf(pdfbuf, 
+-    "%d 0 obj\n<< /Length %d /Filter /FlateDecode /Type /Xobject "
++    "%d 0 obj\n<< /Length %zu /Filter /FlateDecode /Type /Xobject "
+     "/Subtype /Image /Width %d /Height %d /ColorSpace /DeviceRGB "
+     "/BitsPerComponent 8 >> stream\n",
+     xref->last, zpix->len, width, height);
+@@ -840,8 +840,10 @@
+   gboolean fallback, is_binary;
+   guchar encoding[256];
+   gushort glyphs[256];
+-  int i, j, num, len1, len2;
+-  gsize len;
++  int i, j, num;
++  guint32 len1, len2;
++  guint32 tt_len;
++  gsize t1_len;
+   TrueTypeFont *ttfnt;
+   char *seg1, *seg2;
+   char *fontdata, *p;
+@@ -862,14 +864,14 @@
+       }
+     font->num_glyphs_used = num-1;
+     if (OpenTTFont(font->filename, 0, &ttfnt) == SF_OK) {
+-      if (CreateTTFromTTGlyphs_tomemory(ttfnt, (guint8**)&fontdata, &len, glyphs, encoding, num, 
++      if (CreateTTFromTTGlyphs_tomemory(ttfnt, (guint8**)&fontdata, &tt_len, glyphs, encoding, num, 
+                    0, NULL, TTCF_AutoName | TTCF_IncludeOS2) == SF_OK) {
+         make_xref(xref, xref->last+1, pdfbuf->len);
+         nobj_fontprog = xref->last;
+         g_string_append_printf(pdfbuf, 
+-          "%d 0 obj\n<< /Length %d /Length1 %d >> stream\n",
+-          nobj_fontprog, (int)len, (int)len);
+-        g_string_append_len(pdfbuf, fontdata, len);
++          "%d 0 obj\n<< /Length %u /Length1 %u >> stream\n",
++          nobj_fontprog, tt_len, tt_len);
++        g_string_append_len(pdfbuf, fontdata, tt_len);
+         g_string_append(pdfbuf, "endstream\nendobj\n");
+         g_free(fontdata);
+       }
+@@ -879,7 +881,7 @@
+     else fallback = TRUE;
+   } else {
+   // embed the font file: Type1 case
+-    if (g_file_get_contents(font->filename, &fontdata, &len, NULL) && len>=8) {
++    if (g_file_get_contents(font->filename, &fontdata, &t1_len, NULL) && t1_len>=8) {
+       if (fontdata[0]==(char)0x80 && fontdata[1]==(char)0x01) {
+         is_binary = TRUE;
+         len1 = pfb_get_length((unsigned char *)fontdata+2);
+@@ -898,7 +900,7 @@
+           if (*p=='\n' || *p=='\r') p++;
+           if (*p=='\n' || *p=='\r') p++;
+           len1 = p-fontdata;
+-          p = g_strrstr_len(fontdata, len, T1_SEGMENT_3_END);
++          p = g_strrstr_len(fontdata, t1_len, T1_SEGMENT_3_END);
+           if (p==NULL) fallback = TRUE;
+           else {
+             // rewind 512 zeros
+@@ -936,7 +938,7 @@
+         make_xref(xref, xref->last+1, pdfbuf->len);
+         nobj_fontprog = xref->last;
+         g_string_append_printf(pdfbuf, 
+-          "%d 0 obj\n<< /Length %d /Length1 %d /Length2 %d /Length3 0 >> stream\n",
++          "%d 0 obj\n<< /Length %u /Length1 %u /Length2 %u /Length3 0 >> stream\n",
+           nobj_fontprog, len1+len2, len1, len2);
+         g_string_append_len(pdfbuf, seg1, len1);
+         g_string_append_len(pdfbuf, seg2, len2);
+@@ -1258,7 +1260,7 @@
+       tmpstr = make_pdfprefix(pdfinfo.pages+(pg->bg->file_page_seq-1),
+                               pg->width, pg->height);
+       g_string_append_printf(pdfbuf,
+-        "%d 0 obj\n<< /Length %d >> stream\n%s\nendstream\nendobj\n",
++        "%d 0 obj\n<< /Length %zu >> stream\n%s\nendstream\nendobj\n",
+         n_obj_prefix, tmpstr->len, tmpstr->str);
+       g_string_free(tmpstr, TRUE);
+       g_string_prepend(pgstrm, "Q Q Q ");
+@@ -1276,7 +1278,7 @@
+     
+     make_xref(&xref, xref.last+1, pdfbuf->len);
+     g_string_append_printf(pdfbuf, 
+-      "%d 0 obj\n<< /Length %d /Filter /FlateDecode>> stream\n",
++      "%d 0 obj\n<< /Length %zu /Filter /FlateDecode>> stream\n",
+       xref.last, zpgstrm->len);
+     g_string_append_len(pdfbuf, zpgstrm->str, zpgstrm->len);
+     g_string_free(zpgstrm, TRUE);

Copied: xournal/repos/staging-i686/poppler-api.patch (from rev 139870, xournal/trunk/poppler-api.patch)
===================================================================
--- staging-i686/poppler-api.patch	                        (rev 0)
+++ staging-i686/poppler-api.patch	2011-10-05 16:16:06 UTC (rev 139871)
@@ -0,0 +1,158 @@
+diff -aur old/src/xo-file.c new/src/xo-file.c
+--- old/src/xo-file.c	2009-09-29 09:36:05.000000000 +1000
++++ new/src/xo-file.c	2011-10-06 03:11:17.307822836 +1100
+@@ -975,6 +975,140 @@
+   g_free(req);
+ }
+ 
++/*
++ * Copied from http://cgit.freedesktop.org/poppler/poppler/tree/glib/poppler-page.cc?h=poppler-0.16#n617
++ * as a temporary workaround to poppler removing depreciated functions while we wait for
++ * upstream to rewrite against cairo
++ */
++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,
++				gboolean 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,
++				  FALSE,
++				  pixbuf);
++}
+ /* process a bg PDF request from the queue, and recurse */
+ 
+ gboolean bgpdf_scheduler_callback(gpointer data)
+diff -aur old/src/xo-file.h new/src/xo-file.h
+--- old/src/xo-file.h	2009-09-28 08:45:53.000000000 +1000
++++ new/src/xo-file.h	2011-10-06 03:11:17.311156160 +1100
+@@ -36,3 +36,10 @@
+ void init_config_default(void);
+ void load_config_from_file(void);
+ void save_config_to_file(void);
++
++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);

Copied: xournal/repos/staging-x86_64/PKGBUILD (from rev 139870, xournal/trunk/PKGBUILD)
===================================================================
--- staging-x86_64/PKGBUILD	                        (rev 0)
+++ staging-x86_64/PKGBUILD	2011-10-05 16:16:06 UTC (rev 139871)
@@ -0,0 +1,35 @@
+# $Id$
+# Maintainer: Gaetan Bisson <bisson at archlinux.org>
+
+pkgname=xournal
+pkgver=0.4.5
+pkgrel=5
+pkgdesc='Notetaking and sketching application'
+arch=('i686' 'x86_64')
+url='http://xournal.sourceforge.net/'
+license=('GPL')
+depends=('libgnomecanvas' 'poppler-glib' 'shared-mime-info' 'desktop-file-utils' 'hicolor-icon-theme')
+optdepends=('ghostscript: import PS/PDF files as bitmap backgrounds')
+source=("http://downloads.sourceforge.net/xournal/xournal-${pkgver}.tar.gz"
+        'pdf-export-64.patch'
+        'poppler-api.patch')
+sha1sums=('390cb275774469ed1b04b7268dd625bd456c895e'
+          'f23f53b9f69ba8a5773c53d7bca99abf9d8504f8'
+          '5aedd5610b42df96e964bb889d4bf0831c2080bc')
+
+install=install
+
+build() {
+	cd "${srcdir}/${pkgname}-${pkgver}"
+
+	patch -p1 -i ../pdf-export-64.patch # from xournal CVS, see FS#21693
+	patch -p1 -i ../poppler-api.patch
+
+	./configure --prefix=/usr
+	make
+}
+
+package() {
+	cd "${srcdir}/${pkgname}-${pkgver}"
+	make DESTDIR="${pkgdir}" install desktop-install
+}

Copied: xournal/repos/staging-x86_64/install (from rev 139870, xournal/trunk/install)
===================================================================
--- staging-x86_64/install	                        (rev 0)
+++ staging-x86_64/install	2011-10-05 16:16:06 UTC (rev 139871)
@@ -0,0 +1,13 @@
+post_install() {
+	update-desktop-database -q
+	gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+	update-mime-database usr/share/mime &>/dev/null
+}
+
+post_upgrade() {
+	post_install
+}
+
+post_remove() {
+	post_install
+}

Copied: xournal/repos/staging-x86_64/pdf-export-64.patch (from rev 139870, xournal/trunk/pdf-export-64.patch)
===================================================================
--- staging-x86_64/pdf-export-64.patch	                        (rev 0)
+++ staging-x86_64/pdf-export-64.patch	2011-10-05 16:16:06 UTC (rev 139871)
@@ -0,0 +1,89 @@
+diff -aur old/src/xo-print.c new/src/xo-print.c
+--- old/src/xo-print.c	2009-09-28 23:36:54.000000000 +0200
++++ new/src/xo-print.c	2009-11-15 06:06:00.000000000 +0100
+@@ -761,7 +761,7 @@
+ 
+   make_xref(xref, xref->last+1, pdfbuf->len);
+   g_string_append_printf(pdfbuf, 
+-    "%d 0 obj\n<< /Length %d /Filter /FlateDecode /Type /Xobject "
++    "%d 0 obj\n<< /Length %zu /Filter /FlateDecode /Type /Xobject "
+     "/Subtype /Image /Width %d /Height %d /ColorSpace /DeviceRGB "
+     "/BitsPerComponent 8 >> stream\n",
+     xref->last, zpix->len, width, height);
+@@ -840,8 +840,10 @@
+   gboolean fallback, is_binary;
+   guchar encoding[256];
+   gushort glyphs[256];
+-  int i, j, num, len1, len2;
+-  gsize len;
++  int i, j, num;
++  guint32 len1, len2;
++  guint32 tt_len;
++  gsize t1_len;
+   TrueTypeFont *ttfnt;
+   char *seg1, *seg2;
+   char *fontdata, *p;
+@@ -862,14 +864,14 @@
+       }
+     font->num_glyphs_used = num-1;
+     if (OpenTTFont(font->filename, 0, &ttfnt) == SF_OK) {
+-      if (CreateTTFromTTGlyphs_tomemory(ttfnt, (guint8**)&fontdata, &len, glyphs, encoding, num, 
++      if (CreateTTFromTTGlyphs_tomemory(ttfnt, (guint8**)&fontdata, &tt_len, glyphs, encoding, num, 
+                    0, NULL, TTCF_AutoName | TTCF_IncludeOS2) == SF_OK) {
+         make_xref(xref, xref->last+1, pdfbuf->len);
+         nobj_fontprog = xref->last;
+         g_string_append_printf(pdfbuf, 
+-          "%d 0 obj\n<< /Length %d /Length1 %d >> stream\n",
+-          nobj_fontprog, (int)len, (int)len);
+-        g_string_append_len(pdfbuf, fontdata, len);
++          "%d 0 obj\n<< /Length %u /Length1 %u >> stream\n",
++          nobj_fontprog, tt_len, tt_len);
++        g_string_append_len(pdfbuf, fontdata, tt_len);
+         g_string_append(pdfbuf, "endstream\nendobj\n");
+         g_free(fontdata);
+       }
+@@ -879,7 +881,7 @@
+     else fallback = TRUE;
+   } else {
+   // embed the font file: Type1 case
+-    if (g_file_get_contents(font->filename, &fontdata, &len, NULL) && len>=8) {
++    if (g_file_get_contents(font->filename, &fontdata, &t1_len, NULL) && t1_len>=8) {
+       if (fontdata[0]==(char)0x80 && fontdata[1]==(char)0x01) {
+         is_binary = TRUE;
+         len1 = pfb_get_length((unsigned char *)fontdata+2);
+@@ -898,7 +900,7 @@
+           if (*p=='\n' || *p=='\r') p++;
+           if (*p=='\n' || *p=='\r') p++;
+           len1 = p-fontdata;
+-          p = g_strrstr_len(fontdata, len, T1_SEGMENT_3_END);
++          p = g_strrstr_len(fontdata, t1_len, T1_SEGMENT_3_END);
+           if (p==NULL) fallback = TRUE;
+           else {
+             // rewind 512 zeros
+@@ -936,7 +938,7 @@
+         make_xref(xref, xref->last+1, pdfbuf->len);
+         nobj_fontprog = xref->last;
+         g_string_append_printf(pdfbuf, 
+-          "%d 0 obj\n<< /Length %d /Length1 %d /Length2 %d /Length3 0 >> stream\n",
++          "%d 0 obj\n<< /Length %u /Length1 %u /Length2 %u /Length3 0 >> stream\n",
+           nobj_fontprog, len1+len2, len1, len2);
+         g_string_append_len(pdfbuf, seg1, len1);
+         g_string_append_len(pdfbuf, seg2, len2);
+@@ -1258,7 +1260,7 @@
+       tmpstr = make_pdfprefix(pdfinfo.pages+(pg->bg->file_page_seq-1),
+                               pg->width, pg->height);
+       g_string_append_printf(pdfbuf,
+-        "%d 0 obj\n<< /Length %d >> stream\n%s\nendstream\nendobj\n",
++        "%d 0 obj\n<< /Length %zu >> stream\n%s\nendstream\nendobj\n",
+         n_obj_prefix, tmpstr->len, tmpstr->str);
+       g_string_free(tmpstr, TRUE);
+       g_string_prepend(pgstrm, "Q Q Q ");
+@@ -1276,7 +1278,7 @@
+     
+     make_xref(&xref, xref.last+1, pdfbuf->len);
+     g_string_append_printf(pdfbuf, 
+-      "%d 0 obj\n<< /Length %d /Filter /FlateDecode>> stream\n",
++      "%d 0 obj\n<< /Length %zu /Filter /FlateDecode>> stream\n",
+       xref.last, zpgstrm->len);
+     g_string_append_len(pdfbuf, zpgstrm->str, zpgstrm->len);
+     g_string_free(zpgstrm, TRUE);

Copied: xournal/repos/staging-x86_64/poppler-api.patch (from rev 139870, xournal/trunk/poppler-api.patch)
===================================================================
--- staging-x86_64/poppler-api.patch	                        (rev 0)
+++ staging-x86_64/poppler-api.patch	2011-10-05 16:16:06 UTC (rev 139871)
@@ -0,0 +1,158 @@
+diff -aur old/src/xo-file.c new/src/xo-file.c
+--- old/src/xo-file.c	2009-09-29 09:36:05.000000000 +1000
++++ new/src/xo-file.c	2011-10-06 03:11:17.307822836 +1100
+@@ -975,6 +975,140 @@
+   g_free(req);
+ }
+ 
++/*
++ * Copied from http://cgit.freedesktop.org/poppler/poppler/tree/glib/poppler-page.cc?h=poppler-0.16#n617
++ * as a temporary workaround to poppler removing depreciated functions while we wait for
++ * upstream to rewrite against cairo
++ */
++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,
++				gboolean 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,
++				  FALSE,
++				  pixbuf);
++}
+ /* process a bg PDF request from the queue, and recurse */
+ 
+ gboolean bgpdf_scheduler_callback(gpointer data)
+diff -aur old/src/xo-file.h new/src/xo-file.h
+--- old/src/xo-file.h	2009-09-28 08:45:53.000000000 +1000
++++ new/src/xo-file.h	2011-10-06 03:11:17.311156160 +1100
+@@ -36,3 +36,10 @@
+ void init_config_default(void);
+ void load_config_from_file(void);
+ void save_config_to_file(void);
++
++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);




More information about the arch-commits mailing list