changeset 31441:6ea43032df70

Replace GdkGC in whiteboard stuff. But I don't have Yahoo!, so don't know if it really works.
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Wed, 28 Jul 2010 04:36:15 +0000
parents 4458f98f42ba
children 25d93d273e9c
files pidgin/gtkwhiteboard.c
diffstat 1 files changed, 14 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- a/pidgin/gtkwhiteboard.c	Wed Jul 28 04:15:35 2010 +0000
+++ b/pidgin/gtkwhiteboard.c	Wed Jul 28 04:36:15 2010 +0000
@@ -586,21 +586,13 @@
 	GtkWidget *widget = gtkwb->drawing_area;
 	GdkPixmap *pixmap = gtkwb->pixmap;
 
-	GdkRectangle update_rect;
-
-	GdkGC *gfx_con = gdk_gc_new(pixmap);
+	cairo_t *gfx_con = gdk_cairo_create(GDK_DRAWABLE(pixmap));
 	GdkColor col;
 
-	update_rect.x      = x - size / 2;
-	update_rect.y      = y - size / 2;
-	update_rect.width  = size;
-	update_rect.height = size;
-
 	/* Interpret and convert color */
 	pidgin_whiteboard_rgb24_to_rgb48(color, &col);
 
-	gdk_gc_set_rgb_fg_color(gfx_con, &col);
-	/* gdk_gc_set_rgb_bg_color(gfx_con, &col); */
+	gdk_cairo_set_source_color(gfx_con, &col);
 
 	/* NOTE 5 is a size constant for now... this is because of how poorly the
 	 * gdk_draw_arc draws small circles
@@ -608,28 +600,26 @@
 	if(size < 5)
 	{
 		/* Draw a rectangle/square */
-		gdk_draw_rectangle(pixmap,
-						   gfx_con,
-						   TRUE,
-						   update_rect.x, update_rect.y,
-						   update_rect.width, update_rect.height);
+		cairo_rectangle(gfx_con,
+		                x - size / 2, y - size / 2,
+		                size, size);
+		cairo_fill(gfx_con);
 	}
 	else
 	{
 		/* Draw a circle */
-		gdk_draw_arc(pixmap,
-					 gfx_con,
-					 TRUE,
-					 update_rect.x, update_rect.y,
-					 update_rect.width, update_rect.height,
-					 0, FULL_CIRCLE_DEGREES);
+		cairo_arc(gfx_con,
+		          x, y,
+		          size / 2.0,
+		          0.0, 2.0 * M_PI);
+		cairo_fill(gfx_con);
 	}
 
 	gtk_widget_queue_draw_area(widget,
-							   update_rect.x, update_rect.y,
-							   update_rect.width, update_rect.height);
+							   x - size / 2, y - size / 2,
+							   size, size);
 
-	g_object_unref(G_OBJECT(gfx_con));
+	cairo_destroy(gfx_con);
 }
 
 /* Uses Bresenham's algorithm (as provided by Wikipedia) */