forked from AuroraMiddleware/gtk
Add gdk_texture_new_from_bytes
Add this new api, and make gdk_texture_new_from_file a wrapper around it.
This commit is contained in:
parent
7c2be93a56
commit
1230bce133
@ -383,19 +383,55 @@ GdkTexture *
|
|||||||
gdk_texture_new_from_file (GFile *file,
|
gdk_texture_new_from_file (GFile *file,
|
||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
|
GBytes *bytes;
|
||||||
GdkTexture *texture;
|
GdkTexture *texture;
|
||||||
GdkPixbuf *pixbuf;
|
|
||||||
GInputStream *stream;
|
|
||||||
|
|
||||||
g_return_val_if_fail (G_IS_FILE (file), NULL);
|
g_return_val_if_fail (G_IS_FILE (file), NULL);
|
||||||
g_return_val_if_fail (error == NULL || *error == NULL, NULL);
|
g_return_val_if_fail (error == NULL || *error == NULL, NULL);
|
||||||
|
|
||||||
stream = G_INPUT_STREAM (g_file_read (file, NULL, error));
|
bytes = g_file_load_bytes (file, NULL, NULL, error);
|
||||||
if (stream == NULL)
|
if (bytes == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
texture = gdk_texture_new_from_bytes (bytes, error);
|
||||||
|
|
||||||
|
g_bytes_unref (bytes);
|
||||||
|
|
||||||
|
return texture;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gdk_texture_new_from_bytes:
|
||||||
|
* @bytes: a `GBytes` containing the data to load
|
||||||
|
* @error: Return location for an error
|
||||||
|
*
|
||||||
|
* Creates a new texture by loading an image from memory,
|
||||||
|
*
|
||||||
|
* The file format is detected automatically. The supported formats
|
||||||
|
* are PNG and JPEG, though more formats might be available.
|
||||||
|
*
|
||||||
|
* If %NULL is returned, then @error will be set.
|
||||||
|
*
|
||||||
|
* Return value: A newly-created `GdkTexture`
|
||||||
|
*
|
||||||
|
* Since: 4.6
|
||||||
|
*/
|
||||||
|
GdkTexture *
|
||||||
|
gdk_texture_new_from_bytes (GBytes *bytes,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
GInputStream *stream;
|
||||||
|
GdkPixbuf *pixbuf;
|
||||||
|
GdkTexture *texture;
|
||||||
|
|
||||||
|
g_return_val_if_fail (bytes != NULL, NULL);
|
||||||
|
g_return_val_if_fail (error == NULL || *error == NULL, NULL);
|
||||||
|
|
||||||
|
stream = g_memory_input_stream_new_from_bytes (bytes);
|
||||||
pixbuf = gdk_pixbuf_new_from_stream (stream, NULL, error);
|
pixbuf = gdk_pixbuf_new_from_stream (stream, NULL, error);
|
||||||
g_object_unref (stream);
|
g_object_unref (stream);
|
||||||
|
|
||||||
if (pixbuf == NULL)
|
if (pixbuf == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
@ -49,6 +49,9 @@ GdkTexture * gdk_texture_new_from_resource (const char
|
|||||||
GDK_AVAILABLE_IN_ALL
|
GDK_AVAILABLE_IN_ALL
|
||||||
GdkTexture * gdk_texture_new_from_file (GFile *file,
|
GdkTexture * gdk_texture_new_from_file (GFile *file,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
GDK_AVAILABLE_IN_4_6
|
||||||
|
GdkTexture * gdk_texture_new_from_bytes (GBytes *bytes,
|
||||||
|
GError **error);
|
||||||
|
|
||||||
GDK_AVAILABLE_IN_ALL
|
GDK_AVAILABLE_IN_ALL
|
||||||
int gdk_texture_get_width (GdkTexture *texture) G_GNUC_PURE;
|
int gdk_texture_get_width (GdkTexture *texture) G_GNUC_PURE;
|
||||||
|
Loading…
Reference in New Issue
Block a user