diff options
author | Benjamin Otte <otte@redhat.com> | 2011-02-03 17:39:03 +0100 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2011-02-14 19:24:02 +0100 |
commit | ad7ab0f781651c1f9d566ad1908df07a2da77aa4 (patch) | |
tree | a8b571e498458494903f7666c1c88aec574de401 | |
parent | edb1cb5569437e474ef720ed0f693dc38b1a4984 (diff) | |
download | gtk+-ad7ab0f781651c1f9d566ad1908df07a2da77aa4.tar.gz |
gdk: Make creating a surface from a pixbuf an intenral function
-rw-r--r-- | gdk/gdkcairo.c | 13 | ||||
-rw-r--r-- | gdk/gdkinternals.h | 2 |
2 files changed, 13 insertions, 2 deletions
diff --git a/gdk/gdkcairo.c b/gdk/gdkcairo.c index 2ae8b09459..c19296d403 100644 --- a/gdk/gdkcairo.c +++ b/gdk/gdkcairo.c @@ -195,6 +195,16 @@ gdk_cairo_set_source_pixbuf (cairo_t *cr, gdouble pixbuf_x, gdouble pixbuf_y) { + cairo_surface_t *surface; + + surface = _gdk_cairo_create_surface_for_pixbuf (pixbuf); + cairo_set_source_surface (cr, surface, pixbuf_x, pixbuf_y); + cairo_surface_destroy (surface); +} + +cairo_surface_t * +_gdk_cairo_create_surface_for_pixbuf (const GdkPixbuf *pixbuf) +{ gint width = gdk_pixbuf_get_width (pixbuf); gint height = gdk_pixbuf_get_height (pixbuf); guchar *gdk_pixels = gdk_pixbuf_get_pixels (pixbuf); @@ -277,8 +287,7 @@ gdk_cairo_set_source_pixbuf (cairo_t *cr, cairo_pixels += cairo_stride; } - cairo_set_source_surface (cr, surface, pixbuf_x, pixbuf_y); - cairo_surface_destroy (surface); + return surface; } /** diff --git a/gdk/gdkinternals.h b/gdk/gdkinternals.h index bb33e090f7..938c020f9b 100644 --- a/gdk/gdkinternals.h +++ b/gdk/gdkinternals.h @@ -285,6 +285,8 @@ void gdk_synthesize_window_state (GdkWindow *window, gboolean _gdk_cairo_surface_extents (cairo_surface_t *surface, GdkRectangle *extents); +cairo_surface_t *_gdk_cairo_create_surface_for_pixbuf (const GdkPixbuf *pixbuf); + /************************************* * Interfaces used by windowing code * *************************************/ |