examples: Use cairo instead of gdk_draw_* API

Fixes bug #625003.
This commit is contained in:
Sebastian Dröge 2010-07-22 09:21:33 +02:00
parent b870ff15b5
commit 6089bfd36a

View File

@ -331,29 +331,34 @@ on_drawingMain_expose_event (GtkWidget * widget, GdkEventExpose * event,
gpointer data) gpointer data)
{ {
GtkAllocation a; GtkAllocation a;
gint w, h, x, y; cairo_t *cr;
GdkRectangle rect;
gtk_widget_get_allocation (widget, &a); gtk_widget_get_allocation (widget, &a);
if (draw_pixbuf == NULL) if (draw_pixbuf == NULL)
return FALSE; return FALSE;
w = gdk_pixbuf_get_width (draw_pixbuf); rect.width = gdk_pixbuf_get_width (draw_pixbuf);
h = gdk_pixbuf_get_height (draw_pixbuf); rect.height = gdk_pixbuf_get_height (draw_pixbuf);
/* center image */ /* center image */
x = (a.width - w) / 2; rect.x = (a.width - rect.width) / 2;
y = (a.height - h) / 2; rect.y = (a.height - rect.height) / 2;
/* sanity check, shouldn't happen */ /* sanity check, shouldn't happen */
if (x < 0) if (rect.x < 0)
x = 0; rect.x = 0;
if (y < 0) if (rect.y < 0)
y = 0; rect.y = 0;
gdk_draw_pixbuf (GDK_DRAWABLE (gtk_widget_get_window (widget)), cr = gdk_cairo_create (event->window);
gtk_widget_get_style (widget)->black_gc,
draw_pixbuf, 0, 0, x, y, w, h, GDK_RGB_DITHER_NONE, 0, 0); gdk_cairo_set_source_pixbuf (cr, draw_pixbuf, 0, 0);
gdk_cairo_rectangle (cr, &rect);
cairo_fill (cr);
cairo_destroy (cr);
return TRUE; /* handled expose event */ return TRUE; /* handled expose event */
} }