add ui_image_load_data (GTK)

10 days ago

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Sun, 13 Apr 2025 22:30:26 +0200 (10 days ago)
changeset 563
6fc93c3b91c9
parent 561
5798e3a28c59
child 564
5c08f99b2a09

add ui_image_load_data (GTK)

ui/gtk/image.c file | annotate | diff | comparison | revisions
ui/ui/image.h file | annotate | diff | comparison | revisions
--- a/ui/gtk/image.c	Thu Apr 10 21:18:14 2025 +0200
+++ b/ui/gtk/image.c	Sun Apr 13 22:30:26 2025 +0200
@@ -341,6 +341,27 @@
     return 0;
 }
 
+UIEXPORT int ui_image_load_data(UiGeneric *obj, const void *imgdata, size_t size) {
+    GBytes *bytes = g_bytes_new_static(imgdata, size);
+    GInputStream *in = g_memory_input_stream_new_from_bytes(bytes);
+    GError *error = NULL;
+    GdkPixbuf *pixbuf = gdk_pixbuf_new_from_stream(in, NULL, &error);
+    g_object_unref(bytes);
+    g_object_unref(in);
+    if(!pixbuf) {
+        return 1;
+    }
+    
+    if(obj->set) {
+        obj->set(obj, pixbuf, UI_IMAGE_OBJECT_TYPE);
+        g_object_unref(pixbuf);
+    } else {
+        obj->value = pixbuf;
+    }
+          
+    return 0;
+}
+
 void ui_image_ref(UIIMAGE img) {
     g_object_ref(img);
 }
--- a/ui/ui/image.h	Thu Apr 10 21:18:14 2025 +0200
+++ b/ui/ui/image.h	Sun Apr 13 22:30:26 2025 +0200
@@ -85,6 +85,7 @@
 UIEXPORT UIWIDGET ui_imageviewer_set_useradjustable(UIWIDGET w, UiBool set);
 
 UIEXPORT int ui_image_load_file(UiGeneric *obj, const char *path);
+UIEXPORT int ui_image_load_data(UiGeneric *obj, const void *imgdata, size_t size);
 
 UIEXPORT void ui_image_ref(UIIMAGE img);
 UIEXPORT void ui_image_unref(UIIMAGE img);

mercurial