r16572 - gnucash/trunk - #484576: Support goffice >= 0.5.1.

Andreas Köhler andi5 at cvs.gnucash.org
Sun Oct 28 08:27:49 EDT 2007


Author: andi5
Date: 2007-10-28 08:27:48 -0400 (Sun, 28 Oct 2007)
New Revision: 16572
Trac: http://svn.gnucash.org/trac/changeset/16572

Modified:
   gnucash/trunk/configure.in
   gnucash/trunk/src/gnome-utils/gnc-html-graph-gog.c
Log:
#484576: Support goffice >= 0.5.1.

For us, goffice 0.5.1 differs from 0.4 in that it lacks GogRendererCairo
and we can use GogRenderer and gog_renderer_render_to_cairo() (new)
directly.
goffice 0.5.0 will not work with GnuCash.


Modified: gnucash/trunk/configure.in
===================================================================
--- gnucash/trunk/configure.in	2007-10-27 08:10:21 UTC (rev 16571)
+++ gnucash/trunk/configure.in	2007-10-28 12:27:48 UTC (rev 16572)
@@ -1113,33 +1113,49 @@
     AC_SUBST(GLADE_CFLAGS)
     AC_SUBST(GLADE_LIBS)
 
-    PKG_CHECK_MODULES(GOFFICE, libgoffice-0.4 >= 0.4.0, [], [
-      PKG_CHECK_MODULES(GOFFICE, libgoffice-0.3 >= 0.3.0, [], [
-        PKG_CHECK_MODULES(GOFFICE, libgoffice-1 >= 0.0.4, [], [
-          AC_MSG_ERROR([Cannot find libgoffice.])
+    # checks for goffice
+    goffice=0
+    goffice_with_cairo=0
+    PKG_CHECK_MODULES(GOFFICE, libgoffice-0.5 >= 0.5.0, [
+      AC_DEFINE(HAVE_GOFFICE_0_5,1,[System has goffice 0.5 or better])
+      AC_DEFINE(GOFFICE_WITH_CAIRO,1,[GOffice has been built with cairo support])
+      goffice=1
+      goffice_with_cairo=1
+    ], [goffice=0])
+
+    if test x$goffice = x0
+    then
+      PKG_CHECK_MODULES(GOFFICE, libgoffice-0.4 >= 0.4.0, [goffice=1], [
+        PKG_CHECK_MODULES(GOFFICE, libgoffice-0.3 >= 0.3.0, [goffice=1], [
+          PKG_CHECK_MODULES(GOFFICE, libgoffice-1 >= 0.0.4, [goffice=1], [
+            AC_MSG_ERROR([Cannot find libgoffice.])
+          ])
         ])
       ])
-    ])
+    fi
     AS_SCRUB_INCLUDE(GOFFICE_CFLAGS)
     AC_SUBST(GOFFICE_CFLAGS)
     AC_SUBST(GOFFICE_LIBS)
 
-    saved_CPPFLAGS="${CPPFLAGS}"
-    CPPFLAGS="${GOFFICE_CFLAGS} ${CPPFLAGS}"
-    AC_CHECK_HEADER(goffice/graph/gog-renderer-cairo.h, [
-      AC_DEFINE(GOFFICE_WITH_CAIRO,1,[GOffice has been built with cairo support])
-      goffice_with_cairo=yes
-    ], [
-      goffice_with_cairo=no
-    ])
-    CPPFLAGS="${saved_CPPFLAGS}"
+    if test x$goffice_with_cairo = x0
+    then
+      saved_CPPFLAGS="${CPPFLAGS}"
+      CPPFLAGS="${GOFFICE_CFLAGS} ${CPPFLAGS}"
+      AC_CHECK_HEADER(goffice/graph/gog-renderer-cairo.h, [
+        AC_DEFINE(GOFFICE_WITH_CAIRO,1,[GOffice has been built with cairo support])
+        goffice_with_cairo=1
+      ], [
+        goffice_with_cairo=0
+      ])
+      CPPFLAGS="${saved_CPPFLAGS}"
+    fi
 
     # check for gtkhtml >= 3.14 with gtkprint support
     gtkhtml=0
     PKG_CHECK_MODULES(GTKHTML, libgtkhtml-3.14, [
       if test "x$HAVE_GTK_2_10" != "xyes"; then
         AC_MSG_NOTICE([Found libgtkhtml-3.14, but not gtk+-2.0 >= 2.10])
-      elif test "x$goffice_with_cairo" != "xyes"; then
+      elif test "x$goffice_with_cairo" != "x1"; then
         AC_MSG_NOTICE([Found libgtkhtml-3.14, but goffice lacks a cairo renderer])
       else
         gtkhtml=1

Modified: gnucash/trunk/src/gnome-utils/gnc-html-graph-gog.c
===================================================================
--- gnucash/trunk/src/gnome-utils/gnc-html-graph-gog.c	2007-10-27 08:10:21 UTC (rev 16571)
+++ gnucash/trunk/src/gnome-utils/gnc-html-graph-gog.c	2007-10-28 12:27:48 UTC (rev 16572)
@@ -36,7 +36,9 @@
 #include <goffice/graph/gog-chart.h>
 #include <goffice/graph/gog-graph.h>
 #include <goffice/graph/gog-object.h>
-#ifdef GOFFICE_WITH_CAIRO
+#if defined(HAVE_GOFFICE_0_5)
+#    include <goffice/graph/gog-renderer.h>
+#elif defined(GOFFICE_WITH_CAIRO)
 #    include <goffice/graph/gog-renderer-cairo.h>
 #else
 #    include <goffice/graph/gog-renderer-pixbuf.h>
@@ -170,7 +172,9 @@
 add_pixbuf_graph_widget( GtkHTMLEmbedded *eb, GogObject *graph )
 {
   GtkWidget *widget;
-#ifdef GOFFICE_WITH_CAIRO
+#if defined(HAVE_GOFFICE_0_5)
+  GogRenderer *renderer;
+#elif defined(GOFFICE_WITH_CAIRO)
   GogRendererCairo *cairo_renderer;
 #else
   GogRendererPixbuf *pixbuf_renderer;
@@ -184,7 +188,13 @@
   // gnumeric uses.  We probably _should_ do something like that, though.
   gog_object_update (GOG_OBJECT (graph));
 
-#ifdef GOFFICE_WITH_CAIRO
+#if defined(HAVE_GOFFICE_0_5)
+  renderer = GOG_RENDERER (g_object_new (GOG_RENDERER_TYPE,
+					 "model", graph,
+					 NULL));
+  update_status = gog_renderer_update (renderer, eb->width, eb->height);
+  buf = gog_renderer_get_pixbuf (renderer);
+#elif defined(GOFFICE_WITH_CAIRO)
   cairo_renderer = GOG_RENDERER_CAIRO (g_object_new (GOG_RENDERER_CAIRO_TYPE,
 						     "model", graph,
 						     NULL));
@@ -198,7 +208,7 @@
   update_status = gog_renderer_pixbuf_update (pixbuf_renderer,
 					      eb->width, eb->height, 1.0);
   buf = gog_renderer_pixbuf_get (pixbuf_renderer);
-#endif /* GOFFICE_WITH_CAIRO */
+#endif
 
   widget = gtk_image_new_from_pixbuf (buf);
   gtk_widget_set_size_request (widget, eb->width, eb->height);
@@ -628,14 +638,23 @@
 draw_print_cb(GtkHTMLEmbedded *eb, cairo_t *cr, gpointer unused)
 {
   GogGraph *graph = GOG_GRAPH(g_object_get_data(G_OBJECT(eb), "graph"));
+#    ifdef HAVE_GOFFICE_0_5
+  GogRenderer *rend = g_object_new(GOG_RENDERER_TYPE, "model", graph, NULL);
+#    else
   GogRendererCairo *rend = g_object_new(GOG_RENDERER_CAIRO_TYPE, "model", graph,
                                         "cairo", cr, "is-vector", TRUE, NULL);
+#    endif
 
   /* assuming pixel size is 0.5, cf. gtkhtml/src/htmlprinter.c */
   cairo_scale(cr, 0.5, 0.5);
 
   cairo_translate(cr, 0, -eb->height);
+
+#    ifdef HAVE_GOFFICE_0_5
+  gog_renderer_render_to_cairo(rend, cr, eb->width, eb->height);
+#    else
   gog_renderer_cairo_update(rend, eb->width, eb->height, 1.0);
+#    endif
   g_object_unref(rend);
 }
 



More information about the gnucash-changes mailing list