dia r4060 - in trunk: . lib plug-ins/cairo plug-ins/libart



Author: hans
Date: Fri May 30 15:21:44 2008
New Revision: 4060
URL: http://svn.gnome.org/viewvc/dia?rev=4060&view=rev

Log:
2008-05-30  Hans Breuer  <hans breuer org>

	* lib/filter.h plug-ins/cairo/diacairo.c plug-ins/libart/dialibart.c :
	put the renderer tpye in the export filter struct, at least it avoids
	optimizing away it's side effect

	* plug-ins/libart/dialibartrenderer.c plug-ins/libart/render_libart.c :
	now the libart renderer has always the interactive interface which
	make it work as display renderer again



Modified:
   trunk/ChangeLog
   trunk/lib/filter.h
   trunk/plug-ins/cairo/diacairo.c
   trunk/plug-ins/libart/dialibart.c
   trunk/plug-ins/libart/dialibartrenderer.c
   trunk/plug-ins/libart/render_libart.c

Modified: trunk/lib/filter.h
==============================================================================
--- trunk/lib/filter.h	(original)
+++ trunk/lib/filter.h	Fri May 30 15:21:44 2008
@@ -49,6 +49,8 @@
   const gchar *unique_name;
   /* additional hints for export */
   guint hints;
+  /* optional, holding the renderers type */
+  GType renderer_type;
 };
 
 /* returns FALSE on error loading diagram */

Modified: trunk/plug-ins/cairo/diacairo.c
==============================================================================
--- trunk/plug-ins/cairo/diacairo.c	(original)
+++ trunk/plug-ins/cairo/diacairo.c	Fri May 30 15:21:44 2008
@@ -447,6 +447,9 @@
                             _plugin_unload))
     return DIA_PLUGIN_INIT_ERROR;
 
+  /* FIXME: need to think about of proper way of registartion, see also app/display.c */
+  png_export_filter.renderer_type = dia_cairo_interactive_renderer_get_type ();
+
 #ifdef CAIRO_HAS_PS_SURFACE
   filter_register_export(&ps_export_filter);
 #endif
@@ -471,9 +474,6 @@
 #if GTK_CHECK_VERSION (2,10,0)
   filter_register_callback (&cb_gtk_print);
 #endif
-
-  /* FIXME: need to think about of proper way of registartion, see also app/display.c */
-  dia_cairo_interactive_renderer_get_type ();
   
   return DIA_PLUGIN_INIT_OK;
 }

Modified: trunk/plug-ins/libart/dialibart.c
==============================================================================
--- trunk/plug-ins/libart/dialibart.c	(original)
+++ trunk/plug-ins/libart/dialibart.c	Fri May 30 15:21:44 2008
@@ -62,14 +62,11 @@
     return DIA_PLUGIN_INIT_ERROR;
 
 #if defined(HAVE_LIBPNG) && defined(HAVE_LIBART)
+  /* FIXME: need to think about of proper way of registartion, see also app/display.c */
+  png_export_filter.renderer_type = dia_libart_renderer_get_type ();
   /* PNG with libart rendering */
   filter_register_export(&png_export_filter);
 #endif
   
-#ifdef HAVE_LIBART
-  /* FIXME: need to think about of proper way of registartion, see also app/display.c */
-  dia_libart_renderer_get_type ();
-#endif
-  
   return DIA_PLUGIN_INIT_OK;
 }

Modified: trunk/plug-ins/libart/dialibartrenderer.c
==============================================================================
--- trunk/plug-ins/libart/dialibartrenderer.c	(original)
+++ trunk/plug-ins/libart/dialibartrenderer.c	Fri May 30 15:21:44 2008
@@ -1372,6 +1372,9 @@
   G_OBJECT_CLASS (parent_class)->finalize (object);
 }
 
+extern void 
+dia_libart_renderer_iface_init (DiaInteractiveRendererInterface* iface);
+
 GType
 dia_libart_renderer_get_type (void)
 {
@@ -1392,9 +1395,21 @@
         (GInstanceInitFunc)renderer_init /* init */
       };
 
+      static const GInterfaceInfo irenderer_iface_info = 
+      {
+        (GInterfaceInitFunc) dia_libart_renderer_iface_init,
+        NULL,           /* iface_finalize */
+        NULL            /* iface_data     */
+      };
+
       object_type = g_type_register_static (DIA_TYPE_RENDERER,
                                             "DiaLibartRenderer",
                                             &object_info, 0);
+
+      /* register the interactive renderer interface */
+      g_type_add_interface_static (object_type,
+                                   DIA_TYPE_INTERACTIVE_RENDERER_INTERFACE,
+                                   &irenderer_iface_info);
     }
   
   return object_type;

Modified: trunk/plug-ins/libart/render_libart.c
==============================================================================
--- trunk/plug-ins/libart/render_libart.c	(original)
+++ trunk/plug-ins/libart/render_libart.c	Fri May 30 15:21:44 2008
@@ -53,7 +53,7 @@
                             int x, int y, int width, int height);
 
 
-static void 
+void 
 dia_libart_renderer_iface_init (DiaInteractiveRendererInterface* iface)
 {
   iface->clip_region_clear = clip_region_clear;
@@ -74,22 +74,6 @@
 
   renderer = g_object_new(DIA_TYPE_LIBART_RENDERER, NULL);
   renderer->transform = trans;
-
-  if (!DIA_GET_INTERACTIVE_RENDERER_INTERFACE (renderer))
-    {
-      static const GInterfaceInfo irenderer_iface_info = 
-      {
-        (GInterfaceInitFunc) dia_libart_renderer_iface_init,
-        NULL,           /* iface_finalize */
-        NULL            /* iface_data     */
-      };
-
-      renderer_type = DIA_TYPE_LIBART_RENDERER;
-      /* register the interactive renderer interface */
-      g_type_add_interface_static (renderer_type,
-                                   DIA_TYPE_INTERACTIVE_RENDERER_INTERFACE,
-                                   &irenderer_iface_info);
-    }
   renderer->parent_instance.is_interactive = interactive;
 
   return DIA_RENDERER (renderer);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]