[gtk+/rendering-cleanup: 8/15] pixbuf-engine: Replace gdk_draw_pixbuf() with Cairo equivalent



commit 0cd624143279eb2a7c723aef89401148dcc01962
Author: Benjamin Otte <otte redhat com>
Date:   Mon Jul 12 15:41:27 2010 +0200

    pixbuf-engine: Replace gdk_draw_pixbuf() with Cairo equivalent
    
    This replaces the tiled fill call only.

 modules/engines/pixbuf/pixbuf-render.c |   36 ++++++++-----------------------
 1 files changed, 10 insertions(+), 26 deletions(-)
---
diff --git a/modules/engines/pixbuf/pixbuf-render.c b/modules/engines/pixbuf/pixbuf-render.c
index d16e10a..7b5bb12 100644
--- a/modules/engines/pixbuf/pixbuf-render.c
+++ b/modules/engines/pixbuf/pixbuf-render.c
@@ -844,35 +844,19 @@ theme_pixbuf_render (ThemePixbuf  *theme_pb,
 	}
       else
 	{
-	  GdkPixmap *tmp_pixmap;
-	  GdkGC *tmp_gc;
-	  GdkGCValues gc_values;
-
-	  tmp_pixmap = gdk_pixmap_new (window,
-				       pixbuf_width,
-				       pixbuf_height,
-				       -1);
-	  tmp_gc = gdk_gc_new (tmp_pixmap);
-	  gdk_draw_pixbuf (tmp_pixmap, tmp_gc, pixbuf,
-			   0, 0, 
-			   0, 0,
-			   pixbuf_width, pixbuf_height,
-			   GDK_RGB_DITHER_NORMAL,
-			   0, 0);
-	  g_object_unref (tmp_gc);
-
-	  gc_values.fill = GDK_TILED;
-	  gc_values.tile = tmp_pixmap;
-	  tmp_gc = gdk_gc_new_with_values (window,
-					   &gc_values, GDK_GC_FILL | GDK_GC_TILE);
+          cairo_t *cr = gdk_cairo_create (window);
+
+          gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0);
+          cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_REPEAT);
+
 	  if (clip_rect)
-	    gdk_draw_rectangle (window, tmp_gc, TRUE,
-				clip_rect->x, clip_rect->y, clip_rect->width, clip_rect->height);
+	    gdk_cairo_rectangle (cr, clip_rect);
 	  else
-	    gdk_draw_rectangle (window, tmp_gc, TRUE, x, y, width, height);
+	    cairo_rectangle (cr, x, y, width, height);
 	  
-	  g_object_unref (tmp_gc);
-	  g_object_unref (tmp_pixmap);
+          cairo_fill (cr);
+
+          cairo_destroy (cr);
 	}
     }
 }



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