gdk: Add gtk_pixbuf_get_from_texture

This commit is contained in:
Timm Bäder 2019-08-30 20:51:47 +02:00
parent e0fe2882ad
commit 37f8e6aabd
2 changed files with 33 additions and 0 deletions

View File

@ -26,6 +26,7 @@
#include "gdksurface.h"
#include "gdkinternals.h"
#include "gdktextureprivate.h"
#include <gdk-pixbuf/gdk-pixbuf.h>
@ -222,3 +223,31 @@ gdk_pixbuf_get_from_surface (cairo_surface_t *surface,
cairo_surface_destroy (surface);
return dest;
}
/**
* gdk_pixbuf_get_from_texture:
* @texture: a #GdkTexture
*
* Creates a new pixbuf from @texture. This should generally not be used
* in newly written code as later stages will almost certainly convert
* the pixbuf back into a texture to draw it on screen.
*
* returns: a new #GdkPixbuf
*/
GdkPixbuf *
gdk_pixbuf_get_from_texture (GdkTexture *texture)
{
GdkPixbuf *pixbuf;
cairo_surface_t *surface;
int width, height;
g_return_val_if_fail (GDK_IS_TEXTURE (texture), NULL);
width = gdk_texture_get_width (texture);
height = gdk_texture_get_height (texture);
surface = gdk_texture_download_surface (texture);
pixbuf = gdk_pixbuf_get_from_surface (surface, 0, 0, width, height);
cairo_surface_destroy (surface);
return pixbuf;
}

View File

@ -33,6 +33,8 @@
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <gdk/gdktypes.h>
#include <gdk/gdkversionmacros.h>
#include <gdk/gdktexture.h>
G_BEGIN_DECLS
@ -42,6 +44,8 @@ GdkPixbuf *gdk_pixbuf_get_from_surface (cairo_surface_t *surface,
gint src_y,
gint width,
gint height);
GDK_AVAILABLE_IN_ALL
GdkPixbuf *gdk_pixbuf_get_from_texture (GdkTexture *texture);
G_END_DECLS