#include <gtk/gtk.h>
#include <gtk/gdk-pixbuf-loader.h>
+#include "test-inline-pixbufs.h"
+
typedef struct {
FILE *imagefile;
GdkPixbufLoader *loader;
GtkWidget *button;
GtkWidget *drawing_area;
gint w, h;
-
+
+ g_return_val_if_fail (pixbuf != NULL, NULL);
w = gdk_pixbuf_get_width (pixbuf);
h = gdk_pixbuf_get_height (pixbuf);
window = gtk_widget_new (gtk_window_get_type (),
"GtkObject::user_data", NULL,
"GtkWindow::type", GTK_WINDOW_TOPLEVEL,
- "GtkWindow::title", "testrgb",
+ "GtkWindow::title", title ? title : "testrgb",
"GtkWindow::allow_shrink", TRUE,
NULL);
gtk_signal_connect (GTK_OBJECT (window), "destroy",
update_timeout(gpointer data)
{
ProgressFileStatus *status = data;
- gboolean done;
-
- done = TRUE;
+ gboolean done, error;
+
+ done = FALSE;
+ error = FALSE;
if (!feof(status->imagefile)) {
gint nbytes;
nbytes = fread(status->buf, 1, status->readlen,
status->imagefile);
- done = !gdk_pixbuf_loader_write (GDK_PIXBUF_LOADER (status->loader), status->buf, nbytes);
-
- }
+
+ error = !gdk_pixbuf_loader_write (GDK_PIXBUF_LOADER (status->loader), status->buf, nbytes);
+ if (error) {
+ G_BREAKPOINT();
+ }
+
+ } else { /* Really done */
+
+ GdkPixbuf *pixbuf = gdk_pixbuf_loader_get_pixbuf (status->loader);
+ new_testrgb_window (pixbuf, "After progressive load");
+ done = TRUE;
+
+ }
+
+ if (error) {
+ g_warning ("Serious error writing to loader");
+ done = TRUE;
+ }
if (done) {
gtk_widget_queue_draw(*status->rgbwin);
new_testrgb_window (pixbuf, NULL);
++xpmp;
}
+
+ /* Test loading from inline data. */
+ pixbuf = gdk_pixbuf_new_from_inline (apple_red, FALSE, -1);
+ new_testrgb_window (pixbuf, "Red apple from inline data");
+
+ pixbuf = gdk_pixbuf_new_from_inline (gnome_foot, TRUE, sizeof (gnome_foot));
+ new_testrgb_window (pixbuf, "Foot from inline data");
found_valid = TRUE;
} else {