[evolution] gnome-canvas: Update GnomeCanvasPixbuf for gobject niceties



commit 2e4810aaf79827a1d9acc693b5cfc70f6038ec27
Author: Benjamin Otte <otte redhat com>
Date:   Fri Oct 15 12:54:34 2010 +0200

    gnome-canvas: Update GnomeCanvasPixbuf for gobject niceties
    
    G_DEFINE_TYPE and private data, here we come!

 libgnomecanvas/gnome-canvas-pixbuf.c |   94 ++++++++++------------------------
 libgnomecanvas/gnome-canvas-pixbuf.h |    3 +-
 2 files changed, 29 insertions(+), 68 deletions(-)
---
diff --git a/libgnomecanvas/gnome-canvas-pixbuf.c b/libgnomecanvas/gnome-canvas-pixbuf.c
index 2d5197a..07c9415 100644
--- a/libgnomecanvas/gnome-canvas-pixbuf.c
+++ b/libgnomecanvas/gnome-canvas-pixbuf.c
@@ -30,7 +30,7 @@
 #include "gnome-canvas-pixbuf.h"
 
 /* Private part of the GnomeCanvasPixbuf structure */
-typedef struct {
+struct _GnomeCanvasPixbufPrivate {
 	/* Our gdk-pixbuf */
 	GdkPixbuf *pixbuf;
 
@@ -53,7 +53,7 @@ typedef struct {
 	guint height_in_pixels : 1;
 	guint x_in_pixels : 1;
 	guint y_in_pixels : 1;
-} PixbufPrivate;
+};
 
 /* Object argument IDs */
 enum {
@@ -71,8 +71,6 @@ enum {
 	PROP_Y_IN_PIXELS
 };
 
-static void gnome_canvas_pixbuf_class_init (GnomeCanvasPixbufClass *class);
-static void gnome_canvas_pixbuf_init (GnomeCanvasPixbuf *cpb);
 static void gnome_canvas_pixbuf_destroy (GnomeCanvasItem *object);
 static void gnome_canvas_pixbuf_set_property (GObject *object,
 					      guint param_id,
@@ -95,45 +93,10 @@ static GnomeCanvasItem *gnome_canvas_pixbuf_point (GnomeCanvasItem *item,
 static void gnome_canvas_pixbuf_bounds (GnomeCanvasItem *item,
 					gdouble *x1, gdouble *y1, gdouble *x2, gdouble *y2);
 
-static GnomeCanvasItemClass *parent_class;
+G_DEFINE_TYPE (GnomeCanvasPixbuf, gnome_canvas_pixbuf, GNOME_TYPE_CANVAS_ITEM)
 
 
 
-/**
- * gnome_canvas_pixbuf_get_type:
- * @void:
- *
- * Registers the #GnomeCanvasPixbuf class if necessary, and returns the type ID
- * associated to it.
- *
- * Return value: The type ID of the #GnomeCanvasPixbuf class.
- **/
-GType
-gnome_canvas_pixbuf_get_type (void)
-{
-	static GType pixbuf_type;
-
-	if (!pixbuf_type) {
-		const GTypeInfo object_info = {
-			sizeof (GnomeCanvasPixbufClass),
-			(GBaseInitFunc) NULL,
-			(GBaseFinalizeFunc) NULL,
-			(GClassInitFunc) gnome_canvas_pixbuf_class_init,
-			(GClassFinalizeFunc) NULL,
-			NULL,			/* class_data */
-			sizeof (GnomeCanvasPixbuf),
-			0,			/* n_preallocs */
-			(GInstanceInitFunc) gnome_canvas_pixbuf_init,
-			NULL			/* value_table */
-		};
-
-		pixbuf_type = g_type_register_static (GNOME_TYPE_CANVAS_ITEM, "GnomeCanvasPixbuf",
-						     &object_info, 0);
-	}
-
-	return pixbuf_type;
-}
-
 /* Class initialization function for the pixbuf canvas item */
 static void
 gnome_canvas_pixbuf_class_init (GnomeCanvasPixbufClass *class)
@@ -144,8 +107,6 @@ gnome_canvas_pixbuf_class_init (GnomeCanvasPixbufClass *class)
         gobject_class = (GObjectClass *) class;
 	item_class = (GnomeCanvasItemClass *) class;
 
-	parent_class = g_type_class_peek_parent (class);
-
 	gobject_class->set_property = gnome_canvas_pixbuf_set_property;
 	gobject_class->get_property = gnome_canvas_pixbuf_get_property;
 
@@ -221,17 +182,20 @@ gnome_canvas_pixbuf_class_init (GnomeCanvasPixbufClass *class)
 	item_class->draw = gnome_canvas_pixbuf_draw;
 	item_class->point = gnome_canvas_pixbuf_point;
 	item_class->bounds = gnome_canvas_pixbuf_bounds;
+
+        g_type_class_add_private (class, sizeof (GnomeCanvasPixbufPrivate));
 }
 
 /* Object initialization function for the pixbuf canvas item */
 static void
 gnome_canvas_pixbuf_init (GnomeCanvasPixbuf *gcp)
 {
-	PixbufPrivate *priv;
-
-	priv = g_new0 (PixbufPrivate, 1);
-	gcp->priv = priv;
+	GnomeCanvasPixbufPrivate *priv;
 
+	priv = gcp->priv =  G_TYPE_INSTANCE_GET_PRIVATE (gcp,
+                                                         GNOME_TYPE_CANVAS_PIXBUF,
+                                                         GnomeCanvasPixbufPrivate);
+        
 	priv->width = 0.0;
 	priv->height = 0.0;
 	priv->x = 0.0;
@@ -244,27 +208,23 @@ gnome_canvas_pixbuf_destroy (GnomeCanvasItem *object)
 {
 	GnomeCanvasItem *item;
 	GnomeCanvasPixbuf *gcp;
-	PixbufPrivate *priv;
+	GnomeCanvasPixbufPrivate *priv;
 
 	g_return_if_fail (object != NULL);
 	g_return_if_fail (GNOME_IS_CANVAS_PIXBUF (object));
 
 	item = GNOME_CANVAS_ITEM (object);
-	gcp = (GNOME_CANVAS_PIXBUF (object));
+	gcp = GNOME_CANVAS_PIXBUF (object);
 	priv = gcp->priv;
 
 	/* remember, destroy can be run multiple times! */
-
-	if (priv) {
-	    if (priv->pixbuf)
-		g_object_unref (priv->pixbuf);
-
-	    g_free (priv);
-	    gcp->priv = NULL;
+        if (priv->pixbuf) {
+            g_object_unref (priv->pixbuf);
+            priv->pixbuf = NULL;
 	}
 
-	if (GNOME_CANVAS_ITEM_CLASS (parent_class)->destroy)
-		GNOME_CANVAS_ITEM_CLASS (parent_class)->destroy (object);
+	if (GNOME_CANVAS_ITEM_CLASS (gnome_canvas_pixbuf_parent_class)->destroy)
+		GNOME_CANVAS_ITEM_CLASS (gnome_canvas_pixbuf_parent_class)->destroy (object);
 }
 
 
@@ -278,7 +238,7 @@ gnome_canvas_pixbuf_set_property (GObject            *object,
 {
 	GnomeCanvasItem *item;
 	GnomeCanvasPixbuf *gcp;
-	PixbufPrivate *priv;
+	GnomeCanvasPixbufPrivate *priv;
 	GdkPixbuf *pixbuf;
 	gdouble val;
 
@@ -370,7 +330,7 @@ gnome_canvas_pixbuf_get_property (GObject            *object,
 				  GParamSpec         *pspec)
 {
 	GnomeCanvasPixbuf *gcp;
-	PixbufPrivate *priv;
+	GnomeCanvasPixbufPrivate *priv;
 
 	g_return_if_fail (object != NULL);
 	g_return_if_fail (GNOME_IS_CANVAS_PIXBUF (object));
@@ -472,7 +432,7 @@ compute_viewport_affine (GnomeCanvasPixbuf *gcp,
                          gdouble *viewport_affine,
                          gdouble *i2c)
 {
-	PixbufPrivate *priv;
+	GnomeCanvasPixbufPrivate *priv;
 	ArtPoint i_c, j_c;
 	gdouble i_len, j_len;
 	gdouble si_len, sj_len;
@@ -578,7 +538,7 @@ static void
 recompute_bounding_box (GnomeCanvasPixbuf *gcp, gdouble *i2c)
 {
 	GnomeCanvasItem *item;
-	PixbufPrivate *priv;
+	GnomeCanvasPixbufPrivate *priv;
 	gdouble ra[6];
 	ArtDRect rect;
 
@@ -627,13 +587,13 @@ gnome_canvas_pixbuf_update (GnomeCanvasItem *item,
                             gint flags)
 {
 	GnomeCanvasPixbuf *gcp;
-	PixbufPrivate *priv;
+	GnomeCanvasPixbufPrivate *priv;
 
 	gcp = GNOME_CANVAS_PIXBUF (item);
 	priv = gcp->priv;
 
-	if (parent_class->update)
-		(* parent_class->update) (item, affine, clip_path, flags);
+	if (GNOME_CANVAS_ITEM_CLASS (gnome_canvas_pixbuf_parent_class)->update)
+		GNOME_CANVAS_ITEM_CLASS (gnome_canvas_pixbuf_parent_class)->update (item, affine, clip_path, flags);
 
 	/* ordinary update logic */
         gnome_canvas_request_redraw (
@@ -714,7 +674,7 @@ gnome_canvas_pixbuf_draw (GnomeCanvasItem *item, GdkDrawable *drawable,
 			  gint x, gint y, gint width, gint height)
 {
 	GnomeCanvasPixbuf *gcp;
-	PixbufPrivate *priv;
+	GnomeCanvasPixbufPrivate *priv;
 	gdouble i2c[6], render_affine[6];
 	guchar *buf;
 	GdkPixbuf *pixbuf;
@@ -786,7 +746,7 @@ gnome_canvas_pixbuf_point (GnomeCanvasItem *item,
                            gint cy)
 {
 	GnomeCanvasPixbuf *gcp;
-	PixbufPrivate *priv;
+	GnomeCanvasPixbufPrivate *priv;
 	gdouble i2c[6], render_affine[6], inv[6];
 	ArtPoint c, p;
 	gint px, py;
@@ -841,7 +801,7 @@ gnome_canvas_pixbuf_bounds (GnomeCanvasItem *item,
                             gdouble *y2)
 {
 	GnomeCanvasPixbuf *gcp;
-	PixbufPrivate *priv;
+	GnomeCanvasPixbufPrivate *priv;
 	gdouble i2c[6], viewport_affine[6];
 	ArtDRect rect;
 
diff --git a/libgnomecanvas/gnome-canvas-pixbuf.h b/libgnomecanvas/gnome-canvas-pixbuf.h
index f8f4d72..3c4141d 100644
--- a/libgnomecanvas/gnome-canvas-pixbuf.h
+++ b/libgnomecanvas/gnome-canvas-pixbuf.h
@@ -38,12 +38,13 @@ G_BEGIN_DECLS
 
 typedef struct _GnomeCanvasPixbuf GnomeCanvasPixbuf;
 typedef struct _GnomeCanvasPixbufClass GnomeCanvasPixbufClass;
+typedef struct _GnomeCanvasPixbufPrivate GnomeCanvasPixbufPrivate;
 
 struct _GnomeCanvasPixbuf {
 	GnomeCanvasItem item;
 
 	/* Private data */
-	gpointer priv;
+	GnomeCanvasPixbufPrivate *priv;
 };
 
 struct _GnomeCanvasPixbufClass {



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