summaryrefslogtreecommitdiff
path: root/gdk-pixbuf/gdk-pixbuf-loader.c
diff options
context:
space:
mode:
authorTim Janik <timj@gtk.org>2000-06-24 22:32:05 +0000
committerTim Janik <timj@src.gnome.org>2000-06-24 22:32:05 +0000
commit100c9594d6005918249eb4fceb442ae406cb92a6 (patch)
treecf4bccf7eb047e544f3f2c1d16b815c6c703aac0 /gdk-pixbuf/gdk-pixbuf-loader.c
parent3ef478ecd78cccf43e2078c5e168487912e065ad (diff)
downloadgtk+-100c9594d6005918249eb4fceb442ae406cb92a6.tar.gz
make the current version number 1.3.1 (binary age 0, interface age 0).
Fri Jun 23 17:54:23 2000 Tim Janik <timj@gtk.org> * configure.in: make the current version number 1.3.1 (binary age 0, interface age 0). * gtkfeatures.h, gtkfeatures.h.in: dejavue, get rid of these *again*, gtkcompat.h is all we want. * gtk/gtktypeutils.[hc]: define most of the primitive types in terms of GLib primitive types. fixed g_type_register_fundamental() argument ordering. * gtk-config.in (lib_gtk): add -lgdk_pixbuf so third party code compiles. * gdk-pixbuf-loader.[hc]: get rid of unistd.h include. object code cleanup, comment trigraph fixes, etc...
Diffstat (limited to 'gdk-pixbuf/gdk-pixbuf-loader.c')
-rw-r--r--gdk-pixbuf/gdk-pixbuf-loader.c706
1 files changed, 358 insertions, 348 deletions
diff --git a/gdk-pixbuf/gdk-pixbuf-loader.c b/gdk-pixbuf/gdk-pixbuf-loader.c
index 9c59a423f5..9607b2f4cb 100644
--- a/gdk-pixbuf/gdk-pixbuf-loader.c
+++ b/gdk-pixbuf/gdk-pixbuf-loader.c
@@ -1,5 +1,3 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-
/* GdkPixbuf library - Main header file
*
* Copyright (C) 1999 The Free Software Foundation
@@ -31,64 +29,60 @@
#include "gtksignal.h"
-
-
enum {
- AREA_UPDATED,
- AREA_PREPARED,
- FRAME_DONE,
- ANIMATION_DONE,
- CLOSED,
- LAST_SIGNAL
+ AREA_UPDATED,
+ AREA_PREPARED,
+ FRAME_DONE,
+ ANIMATION_DONE,
+ CLOSED,
+ LAST_SIGNAL
};
-static GtkObjectClass *parent_class;
static void gdk_pixbuf_loader_class_init (GdkPixbufLoaderClass *klass);
static void gdk_pixbuf_loader_init (GdkPixbufLoader *loader);
static void gdk_pixbuf_loader_destroy (GtkObject *loader);
static void gdk_pixbuf_loader_finalize (GObject *loader);
-static guint pixbuf_loader_signals[LAST_SIGNAL] = { 0 };
+static gpointer parent_class = NULL;
+static guint pixbuf_loader_signals[LAST_SIGNAL] = { 0 };
-
/* Internal data */
#define LOADER_HEADER_SIZE 128
-typedef struct {
- GdkPixbuf *pixbuf;
- GdkPixbufAnimation *animation;
- gboolean closed;
- guchar header_buf[LOADER_HEADER_SIZE];
- gint header_buf_offset;
- GdkPixbufModule *image_module;
- gpointer context;
+typedef struct
+{
+ GdkPixbuf *pixbuf;
+ GdkPixbufAnimation *animation;
+ gboolean closed;
+ guchar header_buf[LOADER_HEADER_SIZE];
+ gint header_buf_offset;
+ GdkPixbufModule *image_module;
+ gpointer context;
} GdkPixbufLoaderPrivate;
-
/* our marshaller */
-typedef void (* GtkSignal_NONE__INT_INT_INT_INT) (GtkObject *object,
- gint arg1, gint arg2, gint arg3, gint arg4,
- gpointer user_data);
+typedef void (*GtkSignal_NONE__INT_INT_INT_INT) (GtkObject *object,
+ gint arg1, gint arg2, gint arg3, gint arg4,
+ gpointer user_data);
static void
gtk_marshal_NONE__INT_INT_INT_INT (GtkObject *object, GtkSignalFunc func, gpointer func_data,
GtkArg * args)
{
- GtkSignal_NONE__INT_INT_INT_INT rfunc;
-
- rfunc = (GtkSignal_NONE__INT_INT_INT_INT) func;
- (*rfunc) (object,
- GTK_VALUE_INT (args[0]),
- GTK_VALUE_INT (args[1]),
- GTK_VALUE_INT (args[2]),
- GTK_VALUE_INT (args[3]),
- func_data);
+ GtkSignal_NONE__INT_INT_INT_INT rfunc;
+
+ rfunc = (GtkSignal_NONE__INT_INT_INT_INT) func;
+ (*rfunc) (object,
+ GTK_VALUE_INT (args[0]),
+ GTK_VALUE_INT (args[1]),
+ GTK_VALUE_INT (args[2]),
+ GTK_VALUE_INT (args[3]),
+ func_data);
}
-
/**
* gdk_pixbuf_loader_get_type:
@@ -102,236 +96,245 @@ gtk_marshal_NONE__INT_INT_INT_INT (GtkObject *object, GtkSignalFunc func, gpoint
GtkType
gdk_pixbuf_loader_get_type (void)
{
- static GtkType loader_type = 0;
-
- if (!loader_type) {
- static const GtkTypeInfo loader_info = {
- "GdkPixbufLoader",
- sizeof (GdkPixbufLoader),
- sizeof (GdkPixbufLoaderClass),
- (GtkClassInitFunc) gdk_pixbuf_loader_class_init,
- (GtkObjectInitFunc) gdk_pixbuf_loader_init,
- /* reserved_1 */ NULL,
- /* reserved_2 */ NULL,
- (GtkClassInitFunc) NULL,
- };
-
- loader_type = gtk_type_unique (GTK_TYPE_OBJECT, &loader_info);
- }
-
- return loader_type;
+ static GtkType loader_type = 0;
+
+ if (!loader_type)
+ {
+ static const GtkTypeInfo loader_info = {
+ "GdkPixbufLoader",
+ sizeof (GdkPixbufLoader),
+ sizeof (GdkPixbufLoaderClass),
+ (GtkClassInitFunc) gdk_pixbuf_loader_class_init,
+ (GtkObjectInitFunc) gdk_pixbuf_loader_init,
+ /* reserved_1 */ NULL,
+ /* reserved_2 */ NULL,
+ (GtkClassInitFunc) NULL,
+ };
+
+ loader_type = gtk_type_unique (GTK_TYPE_OBJECT, &loader_info);
+ }
+
+ return loader_type;
}
static void
gdk_pixbuf_loader_class_init (GdkPixbufLoaderClass *class)
{
- GObjectClass *gobject_class;
- GtkObjectClass *object_class;
-
- object_class = (GtkObjectClass *) class;
- gobject_class = (GObjectClass *) class;
-
- parent_class = gtk_type_class (gtk_object_get_type ());
-
- pixbuf_loader_signals[AREA_PREPARED] =
- gtk_signal_new ("area_prepared",
- GTK_RUN_LAST,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GdkPixbufLoaderClass, area_prepared),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- pixbuf_loader_signals[AREA_UPDATED] =
- gtk_signal_new ("area_updated",
- GTK_RUN_LAST,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GdkPixbufLoaderClass, area_updated),
- gtk_marshal_NONE__INT_INT_INT_INT,
- GTK_TYPE_NONE, 4,
- GTK_TYPE_INT,
- GTK_TYPE_INT,
- GTK_TYPE_INT,
- GTK_TYPE_INT);
-
- pixbuf_loader_signals[FRAME_DONE] =
- gtk_signal_new ("frame_done",
- GTK_RUN_LAST,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GdkPixbufLoaderClass, frame_done),
- gtk_marshal_NONE__POINTER,
- GTK_TYPE_NONE, 1,
- GTK_TYPE_POINTER);
-
- pixbuf_loader_signals[ANIMATION_DONE] =
- gtk_signal_new ("animation_done",
- GTK_RUN_LAST,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GdkPixbufLoaderClass, animation_done),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- pixbuf_loader_signals[CLOSED] =
- gtk_signal_new ("closed",
- GTK_RUN_LAST,
- GTK_CLASS_TYPE (object_class),
- GTK_SIGNAL_OFFSET (GdkPixbufLoaderClass, closed),
- gtk_marshal_NONE__NONE,
- GTK_TYPE_NONE, 0);
-
- gtk_object_class_add_signals (object_class, pixbuf_loader_signals, LAST_SIGNAL);
-
- object_class->destroy = gdk_pixbuf_loader_destroy;
- gobject_class->finalize = gdk_pixbuf_loader_finalize;
+ GObjectClass *gobject_class;
+ GtkObjectClass *object_class;
+
+ object_class = (GtkObjectClass *) class;
+ gobject_class = (GObjectClass *) class;
+
+ parent_class = gtk_type_class (GTK_TYPE_OBJECT);
+
+ pixbuf_loader_signals[AREA_PREPARED] =
+ gtk_signal_new ("area_prepared",
+ GTK_RUN_LAST,
+ GTK_CLASS_TYPE (object_class),
+ GTK_SIGNAL_OFFSET (GdkPixbufLoaderClass, area_prepared),
+ gtk_marshal_NONE__NONE,
+ GTK_TYPE_NONE, 0);
+
+ pixbuf_loader_signals[AREA_UPDATED] =
+ gtk_signal_new ("area_updated",
+ GTK_RUN_LAST,
+ GTK_CLASS_TYPE (object_class),
+ GTK_SIGNAL_OFFSET (GdkPixbufLoaderClass, area_updated),
+ gtk_marshal_NONE__INT_INT_INT_INT,
+ GTK_TYPE_NONE, 4,
+ GTK_TYPE_INT,
+ GTK_TYPE_INT,
+ GTK_TYPE_INT,
+ GTK_TYPE_INT);
+
+ pixbuf_loader_signals[FRAME_DONE] =
+ gtk_signal_new ("frame_done",
+ GTK_RUN_LAST,
+ GTK_CLASS_TYPE (object_class),
+ GTK_SIGNAL_OFFSET (GdkPixbufLoaderClass, frame_done),
+ gtk_marshal_NONE__POINTER,
+ GTK_TYPE_NONE, 1,
+ GTK_TYPE_POINTER);
+
+ pixbuf_loader_signals[ANIMATION_DONE] =
+ gtk_signal_new ("animation_done",
+ GTK_RUN_LAST,
+ GTK_CLASS_TYPE (object_class),
+ GTK_SIGNAL_OFFSET (GdkPixbufLoaderClass, animation_done),
+ gtk_marshal_NONE__NONE,
+ GTK_TYPE_NONE, 0);
+
+ pixbuf_loader_signals[CLOSED] =
+ gtk_signal_new ("closed",
+ GTK_RUN_LAST,
+ GTK_CLASS_TYPE (object_class),
+ GTK_SIGNAL_OFFSET (GdkPixbufLoaderClass, closed),
+ gtk_marshal_NONE__NONE,
+ GTK_TYPE_NONE, 0);
+
+ gtk_object_class_add_signals (object_class, pixbuf_loader_signals, LAST_SIGNAL);
+
+ object_class->destroy = gdk_pixbuf_loader_destroy;
+ gobject_class->finalize = gdk_pixbuf_loader_finalize;
}
static void
gdk_pixbuf_loader_init (GdkPixbufLoader *loader)
{
- GdkPixbufLoaderPrivate *priv;
-
- priv = g_new0 (GdkPixbufLoaderPrivate, 1);
- loader->private = priv;
+ GdkPixbufLoaderPrivate *priv;
+
+ priv = g_new0 (GdkPixbufLoaderPrivate, 1);
+ loader->private = priv;
}
static void
gdk_pixbuf_loader_destroy (GtkObject *object)
{
- GdkPixbufLoader *loader;
- GdkPixbufLoaderPrivate *priv = NULL;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (GDK_IS_PIXBUF_LOADER (object));
-
- loader = GDK_PIXBUF_LOADER (object);
- priv = loader->private;
-
- if (!priv->closed)
- gdk_pixbuf_loader_close (loader);
-
- if (priv->animation)
- gdk_pixbuf_animation_unref (priv->animation);
- if (priv->pixbuf)
- gdk_pixbuf_unref (priv->pixbuf);
-
- if (GTK_OBJECT_CLASS (parent_class)->destroy)
- (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
+ GdkPixbufLoader *loader;
+ GdkPixbufLoaderPrivate *priv = NULL;
+
+ g_return_if_fail (object != NULL);
+ g_return_if_fail (GDK_IS_PIXBUF_LOADER (object));
+
+ loader = GDK_PIXBUF_LOADER (object);
+ priv = loader->private;
+
+ if (!priv->closed)
+ gdk_pixbuf_loader_close (loader);
+
+ if (priv->animation)
+ gdk_pixbuf_animation_unref (priv->animation);
+ if (priv->pixbuf)
+ gdk_pixbuf_unref (priv->pixbuf);
+
+ if (GTK_OBJECT_CLASS (parent_class)->destroy)
+ GTK_OBJECT_CLASS (parent_class)->destroy (object);
}
static void
gdk_pixbuf_loader_finalize (GObject *object)
{
- GdkPixbufLoader *loader;
- GdkPixbufLoaderPrivate *priv = NULL;
-
- loader = GDK_PIXBUF_LOADER (object);
- priv = loader->private;
-
- g_free (priv);
-
- if (G_OBJECT_CLASS (parent_class)->finalize)
- (* G_OBJECT_CLASS (parent_class)->finalize) (object);
+ GdkPixbufLoader *loader;
+ GdkPixbufLoaderPrivate *priv = NULL;
+
+ loader = GDK_PIXBUF_LOADER (object);
+ priv = loader->private;
+
+ g_free (priv);
+
+ if (G_OBJECT_CLASS (parent_class)->finalize)
+ G_OBJECT_CLASS (parent_class)->finalize (object);
}
static void
-gdk_pixbuf_loader_prepare (GdkPixbuf *pixbuf, gpointer loader)
+gdk_pixbuf_loader_prepare (GdkPixbuf *pixbuf,
+ gpointer loader)
{
- GdkPixbufLoaderPrivate *priv = NULL;
-
- priv = GDK_PIXBUF_LOADER (loader)->private;
- gdk_pixbuf_ref (pixbuf);
- g_assert (priv->pixbuf == NULL);
-
- priv->pixbuf = pixbuf;
- gtk_signal_emit (GTK_OBJECT (loader), pixbuf_loader_signals[AREA_PREPARED]);
+ GdkPixbufLoaderPrivate *priv = NULL;
+
+ priv = GDK_PIXBUF_LOADER (loader)->private;
+ gdk_pixbuf_ref (pixbuf);
+
+ g_assert (priv->pixbuf == NULL);
+
+ priv->pixbuf = pixbuf;
+ gtk_signal_emit (GTK_OBJECT (loader), pixbuf_loader_signals[AREA_PREPARED]);
}
static void
-gdk_pixbuf_loader_update (GdkPixbuf *pixbuf, guint x, guint y, guint width, guint height, gpointer loader)
+gdk_pixbuf_loader_update (GdkPixbuf *pixbuf,
+ guint x,
+ guint y,
+ guint width,
+ guint height,
+ gpointer loader)
{
- GdkPixbufLoaderPrivate *priv = NULL;
-
- priv = GDK_PIXBUF_LOADER (loader)->private;
-
- gtk_signal_emit (GTK_OBJECT (loader),
- pixbuf_loader_signals[AREA_UPDATED],
- x, y,
- /* sanity check in here. Defend against an errant loader */
- MIN (width, gdk_pixbuf_get_width (priv->pixbuf)),
- MIN (height, gdk_pixbuf_get_height (priv->pixbuf)));
+ GdkPixbufLoaderPrivate *priv = NULL;
+
+ priv = GDK_PIXBUF_LOADER (loader)->private;
+
+ gtk_signal_emit (GTK_OBJECT (loader),
+ pixbuf_loader_signals[AREA_UPDATED],
+ x, y,
+ /* sanity check in here. Defend against an errant loader */
+ MIN (width, gdk_pixbuf_get_width (priv->pixbuf)),
+ MIN (height, gdk_pixbuf_get_height (priv->pixbuf)));
}
static void
-gdk_pixbuf_loader_frame_done (GdkPixbufFrame *frame, gpointer loader)
+gdk_pixbuf_loader_frame_done (GdkPixbufFrame *frame,
+ gpointer loader)
{
- GdkPixbufLoaderPrivate *priv = NULL;
-
- priv = GDK_PIXBUF_LOADER (loader)->private;
-
- priv->pixbuf = NULL;
-
- if (priv->animation == NULL) {
- priv->animation = GDK_PIXBUF_ANIMATION (g_type_create_instance (GDK_TYPE_PIXBUF_ANIMATION));
-
- priv->animation->n_frames = 0;
- priv->animation->width = gdk_pixbuf_get_width (frame->pixbuf) + frame->x_offset;
- priv->animation->height = gdk_pixbuf_get_height (frame->pixbuf) + frame->y_offset;
- } else {
- int w, h;
-
- /* update bbox size */
- w = gdk_pixbuf_get_width (frame->pixbuf) + frame->x_offset;
- h = gdk_pixbuf_get_height (frame->pixbuf) + frame->y_offset;
-
- if (w > priv->animation->width) {
- priv->animation->width = w;
- }
- if (h > priv->animation->height) {
- priv->animation->height = h;
- }
- }
-
- priv->animation->frames = g_list_append (priv->animation->frames, frame);
- priv->animation->n_frames ++;
- gtk_signal_emit (GTK_OBJECT (loader),
- pixbuf_loader_signals[FRAME_DONE],
- frame);
+ GdkPixbufLoaderPrivate *priv = NULL;
+
+ priv = GDK_PIXBUF_LOADER (loader)->private;
+
+ priv->pixbuf = NULL;
+
+ if (priv->animation == NULL)
+ {
+ priv->animation = GDK_PIXBUF_ANIMATION (g_type_create_instance (GDK_TYPE_PIXBUF_ANIMATION));
+
+ priv->animation->n_frames = 0;
+ priv->animation->width = gdk_pixbuf_get_width (frame->pixbuf) + frame->x_offset;
+ priv->animation->height = gdk_pixbuf_get_height (frame->pixbuf) + frame->y_offset;
+ }
+ else
+ {
+ int w, h;
+
+ /* update bbox size */
+ w = gdk_pixbuf_get_width (frame->pixbuf) + frame->x_offset;
+ h = gdk_pixbuf_get_height (frame->pixbuf) + frame->y_offset;
+
+ if (w > priv->animation->width) {
+ priv->animation->width = w;
+ }
+ if (h > priv->animation->height) {
+ priv->animation->height = h;
+ }
+ }
+
+ priv->animation->frames = g_list_append (priv->animation->frames, frame);
+ priv->animation->n_frames++;
+ gtk_signal_emit (GTK_OBJECT (loader),
+ pixbuf_loader_signals[FRAME_DONE],
+ frame);
}
static void
-gdk_pixbuf_loader_animation_done (GdkPixbuf *pixbuf, gpointer loader)
+gdk_pixbuf_loader_animation_done (GdkPixbuf *pixbuf,
+ gpointer loader)
{
- GdkPixbufLoaderPrivate *priv = NULL;
- GdkPixbufFrame *frame;
- GList *current = NULL;
- gint h, w;
-
- priv = GDK_PIXBUF_LOADER (loader)->private;
- priv->pixbuf = NULL;
-
- current = gdk_pixbuf_animation_get_frames (priv->animation);
-
- while (current) {
- frame = (GdkPixbufFrame *) current->data;
-
- /* update bbox size */
- w = gdk_pixbuf_get_width (frame->pixbuf) + frame->x_offset;
- h = gdk_pixbuf_get_height (frame->pixbuf) + frame->y_offset;
-
- if (w > priv->animation->width) {
- priv->animation->width = w;
- }
- if (h > priv->animation->height) {
- priv->animation->height = h;
- }
- current = current->next;
- }
-
- gtk_signal_emit (GTK_OBJECT (loader),
- pixbuf_loader_signals[ANIMATION_DONE]);
+ GdkPixbufLoaderPrivate *priv = NULL;
+ GdkPixbufFrame *frame;
+ GList *current = NULL;
+ gint h, w;
+
+ priv = GDK_PIXBUF_LOADER (loader)->private;
+ priv->pixbuf = NULL;
+
+ current = gdk_pixbuf_animation_get_frames (priv->animation);
+
+ while (current)
+ {
+ frame = (GdkPixbufFrame *) current->data;
+
+ /* update bbox size */
+ w = gdk_pixbuf_get_width (frame->pixbuf) + frame->x_offset;
+ h = gdk_pixbuf_get_height (frame->pixbuf) + frame->y_offset;
+
+ if (w > priv->animation->width)
+ priv->animation->width = w;
+ if (h > priv->animation->height)
+ priv->animation->height = h;
+ current = current->next;
+ }
+
+ gtk_signal_emit (GTK_OBJECT (loader), pixbuf_loader_signals[ANIMATION_DONE]);
}
-
-
/**
* gdk_pixbuf_loader_new:
*
@@ -342,66 +345,72 @@ gdk_pixbuf_loader_animation_done (GdkPixbuf *pixbuf, gpointer loader)
GdkPixbufLoader *
gdk_pixbuf_loader_new (void)
{
- return gtk_type_new (gdk_pixbuf_loader_get_type ());
+ return g_object_new (GDK_TYPE_PIXBUF_LOADER, NULL);
}
-static int
-gdk_pixbuf_loader_load_module(GdkPixbufLoader *loader)
+static gint
+gdk_pixbuf_loader_load_module (GdkPixbufLoader *loader)
{
- GdkPixbufLoaderPrivate *priv = loader->private;
-
- priv->image_module = gdk_pixbuf_get_module (priv->header_buf, priv->header_buf_offset);
-
- if (priv->image_module == NULL)
- return 0;
-
- if (priv->image_module->module == NULL)
- gdk_pixbuf_load_module (priv->image_module);
-
- if (priv->image_module->module == NULL)
- return 0;
-
- if ((priv->image_module->begin_load == NULL) ||
- (priv->image_module->stop_load == NULL) ||
- (priv->image_module->load_increment == NULL)) {
- g_warning ("module %s does not support incremental loading.\n",
- priv->image_module->module_name);
- return 0;
- }
-
- priv->context = (*priv->image_module->begin_load) (gdk_pixbuf_loader_prepare,
- gdk_pixbuf_loader_update,
- gdk_pixbuf_loader_frame_done,
- gdk_pixbuf_loader_animation_done,
- loader);
-
- if (priv->context == NULL) {
- g_warning("Failed to begin progressive load");
- return 0;
- }
-
- if( (* priv->image_module->load_increment) (priv->context, priv->header_buf, priv->header_buf_offset) )
- return priv->header_buf_offset;
-
- return 0;
+ GdkPixbufLoaderPrivate *priv = loader->private;
+
+ priv->image_module = gdk_pixbuf_get_module (priv->header_buf, priv->header_buf_offset);
+
+ if (priv->image_module == NULL)
+ return 0;
+
+ if (priv->image_module->module == NULL)
+ gdk_pixbuf_load_module (priv->image_module);
+
+ if (priv->image_module->module == NULL)
+ return 0;
+
+ if ((priv->image_module->begin_load == NULL) ||
+ (priv->image_module->stop_load == NULL) ||
+ (priv->image_module->load_increment == NULL))
+ {
+ g_warning (G_STRLOC ": module %s does not support incremental loading.\n",
+ priv->image_module->module_name);
+ return 0;
+ }
+
+ priv->context = priv->image_module->begin_load (gdk_pixbuf_loader_prepare,
+ gdk_pixbuf_loader_update,
+ gdk_pixbuf_loader_frame_done,
+ gdk_pixbuf_loader_animation_done,
+ loader);
+
+ if (priv->context == NULL)
+ {
+ g_warning (G_STRLOC ": Failed to begin progressive load");
+ return 0;
+ }
+
+ if (priv->image_module->load_increment (priv->context, priv->header_buf, priv->header_buf_offset))
+ return priv->header_buf_offset;
+
+ return 0;
}
static int
-gdk_pixbuf_loader_eat_header_write (GdkPixbufLoader *loader, const guchar *buf, size_t count)
+gdk_pixbuf_loader_eat_header_write (GdkPixbufLoader *loader,
+ const guchar *buf,
+ gsize count)
{
- int nbytes;
- GdkPixbufLoaderPrivate *priv = loader->private;
-
- nbytes = MIN(LOADER_HEADER_SIZE - priv->header_buf_offset, count);
- memcpy (priv->header_buf + priv->header_buf_offset, buf, nbytes);
-
- priv->header_buf_offset += nbytes;
-
- if(priv->header_buf_offset >= LOADER_HEADER_SIZE) {
- if (gdk_pixbuf_loader_load_module(loader) == 0)
- return 0;
- }
- return nbytes;
+ gint n_bytes;
+ GdkPixbufLoaderPrivate *priv = loader->private;
+
+ n_bytes = MIN(LOADER_HEADER_SIZE - priv->header_buf_offset, count);
+ memcpy (priv->header_buf + priv->header_buf_offset, buf, n_bytes);
+
+ priv->header_buf_offset += n_bytes;
+
+ if (priv->header_buf_offset >= LOADER_HEADER_SIZE)
+ {
+ if (gdk_pixbuf_loader_load_module (loader) == 0)
+ return 0;
+ }
+
+ return n_bytes;
}
/**
@@ -419,36 +428,39 @@ gdk_pixbuf_loader_eat_header_write (GdkPixbufLoader *loader, const guchar *buf,
* cannot parse the buffer.
**/
gboolean
-gdk_pixbuf_loader_write (GdkPixbufLoader *loader, const guchar *buf, size_t count)
+gdk_pixbuf_loader_write (GdkPixbufLoader *loader,
+ const guchar *buf,
+ gsize count)
{
- GdkPixbufLoaderPrivate *priv;
-
- g_return_val_if_fail (loader != NULL, FALSE);
- g_return_val_if_fail (GDK_IS_PIXBUF_LOADER (loader), FALSE);
-
- g_return_val_if_fail (buf != NULL, FALSE);
- g_return_val_if_fail (count >= 0, FALSE);
-
- priv = loader->private;
-
- /* we expect it's not to be closed */
- g_return_val_if_fail (priv->closed == FALSE, FALSE);
-
- if (priv->image_module == NULL) {
- int eaten;
-
- eaten = gdk_pixbuf_loader_eat_header_write(loader, buf, count);
- if (eaten <= 0)
- return FALSE;
-
- count -= eaten;
- buf += eaten;
- }
-
- if (count > 0 && priv->image_module->load_increment)
- return (* priv->image_module->load_increment) (priv->context, buf, count);
-
- return TRUE;
+ GdkPixbufLoaderPrivate *priv;
+
+ g_return_val_if_fail (loader != NULL, FALSE);
+ g_return_val_if_fail (GDK_IS_PIXBUF_LOADER (loader), FALSE);
+
+ g_return_val_if_fail (buf != NULL, FALSE);
+ g_return_val_if_fail (count >= 0, FALSE);
+
+ priv = loader->private;
+
+ /* we expect it's not to be closed */
+ g_return_val_if_fail (priv->closed == FALSE, FALSE);
+
+ if (priv->image_module == NULL)
+ {
+ gint eaten;
+
+ eaten = gdk_pixbuf_loader_eat_header_write(loader, buf, count);
+ if (eaten <= 0)
+ return FALSE;
+
+ count -= eaten;
+ buf += eaten;
+ }
+
+ if (count > 0 && priv->image_module->load_increment)
+ return priv->image_module->load_increment (priv->context, buf, count);
+
+ return TRUE;
}
/**
@@ -469,14 +481,14 @@ gdk_pixbuf_loader_write (GdkPixbufLoader *loader, const guchar *buf, size_t coun
GdkPixbuf *
gdk_pixbuf_loader_get_pixbuf (GdkPixbufLoader *loader)
{
- GdkPixbufLoaderPrivate *priv;
-
- g_return_val_if_fail (loader != NULL, NULL);
- g_return_val_if_fail (GDK_IS_PIXBUF_LOADER (loader), NULL);
-
- priv = loader->private;
-
- return priv->pixbuf;
+ GdkPixbufLoaderPrivate *priv;
+
+ g_return_val_if_fail (loader != NULL, NULL);
+ g_return_val_if_fail (GDK_IS_PIXBUF_LOADER (loader), NULL);
+
+ priv = loader->private;
+
+ return priv->pixbuf;
}
/**
@@ -490,18 +502,18 @@ gdk_pixbuf_loader_get_pixbuf (GdkPixbufLoader *loader)
*
* Return value: The GdkPixbufAnimation that the loader is loading, or NULL if
not enough data has been read to determine the information.
- **/
+**/
GdkPixbufAnimation *
gdk_pixbuf_loader_get_animation (GdkPixbufLoader *loader)
{
- GdkPixbufLoaderPrivate *priv;
-
- g_return_val_if_fail (loader != NULL, NULL);
- g_return_val_if_fail (GDK_IS_PIXBUF_LOADER (loader), NULL);
-
- priv = loader->private;
-
- return priv->animation;
+ GdkPixbufLoaderPrivate *priv;
+
+ g_return_val_if_fail (loader != NULL, NULL);
+ g_return_val_if_fail (GDK_IS_PIXBUF_LOADER (loader), NULL);
+
+ priv = loader->private;
+
+ return priv->animation;
}
/**
@@ -514,26 +526,24 @@ gdk_pixbuf_loader_get_animation (GdkPixbufLoader *loader)
void
gdk_pixbuf_loader_close (GdkPixbufLoader *loader)
{
- GdkPixbufLoaderPrivate *priv;
-
- g_return_if_fail (loader != NULL);
- g_return_if_fail (GDK_IS_PIXBUF_LOADER (loader));
-
- priv = loader->private;
-
- /* we expect it's not closed */
- g_return_if_fail (priv->closed == FALSE);
-
- /* We have less the 128 bytes in the image. Flush it, and keep going. */
- if (priv->image_module == NULL)
- gdk_pixbuf_loader_load_module (loader);
-
- if (priv->image_module && priv->image_module->stop_load)
- (* priv->image_module->stop_load) (priv->context);
-
- priv->closed = TRUE;
-
- gtk_signal_emit (GTK_OBJECT (loader),
- pixbuf_loader_signals[CLOSED]);
+ GdkPixbufLoaderPrivate *priv;
+
+ g_return_if_fail (loader != NULL);
+ g_return_if_fail (GDK_IS_PIXBUF_LOADER (loader));
+
+ priv = loader->private;
+
+ /* we expect it's not closed */
+ g_return_if_fail (priv->closed == FALSE);
+
+ /* We have less the 128 bytes in the image. Flush it, and keep going. */
+ if (priv->image_module == NULL)
+ gdk_pixbuf_loader_load_module (loader);
+
+ if (priv->image_module && priv->image_module->stop_load)
+ priv->image_module->stop_load (priv->context);
+
+ priv->closed = TRUE;
+
+ gtk_signal_emit (GTK_OBJECT (loader), pixbuf_loader_signals[CLOSED]);
}
-