Hello community,

here is the log from the commit of package xournal for openSUSE:Factory
checked in at Wed Sep 21 17:30:01 CEST 2011.



--------
--- xournal/xournal.changes     2011-09-17 00:16:43.000000000 +0200
+++ /mounts/work_src_done/STABLE/xournal/xournal.changes        2011-09-20 
12:41:13.000000000 +0200
@@ -1,0 +2,6 @@
+Tue Sep 20 10:40:10 UTC 2011 - [email protected]
+
+- Add xournal-poppler-0.18.patch: fix build with poppler 0.18.
+  Taken from CVS.
+
+-------------------------------------------------------------------

calling whatdependson for head-i586


New:
----
  xournal-poppler-0.18.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ xournal.spec ++++++
--- /var/tmp/diff_new_pack.UN1rHI/_old  2011-09-21 17:29:57.000000000 +0200
+++ /var/tmp/diff_new_pack.UN1rHI/_new  2011-09-21 17:29:57.000000000 +0200
@@ -30,6 +30,8 @@
 Patch0:         %{name}-unistd-decl.diff
 #feel free to improve it and please upstream it
 Patch1:         %{name}-no-copy-dt-needed-entries.patch
+# PATCH-FIX-UPSTREAM xournal-poppler-0.18.patch [email protected] -- Fix 
build with poppler 0.17/0.18, taken from CVS
+Patch2:         xournal-poppler-0.18.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 BuildRequires:  gtk2-devel
 BuildRequires:  libgnomecanvas-devel
@@ -50,6 +52,7 @@
 %setup
 %patch0
 %patch1 -p1
+%patch2 -p0
 
 %build
 autoreconf -fi

++++++ xournal-poppler-0.18.patch ++++++
--- 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);
   }


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



Remember to have fun...

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to