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...
This commit is contained in:
Tim Janik 2000-06-24 22:32:05 +00:00 committed by Tim Janik
parent 3ef478ecd7
commit 100c9594d6
19 changed files with 937 additions and 910 deletions

View File

@ -1,3 +1,21 @@
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...
2000-06-23 Havoc Pennington <hp@redhat.com>
* gtk/gtktextview.c (gtk_text_view_set_buffer): Use anonymous mark

View File

@ -1,3 +1,21 @@
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...
2000-06-23 Havoc Pennington <hp@redhat.com>
* gtk/gtktextview.c (gtk_text_view_set_buffer): Use anonymous mark

View File

@ -1,3 +1,21 @@
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...
2000-06-23 Havoc Pennington <hp@redhat.com>
* gtk/gtktextview.c (gtk_text_view_set_buffer): Use anonymous mark

View File

@ -1,3 +1,21 @@
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...
2000-06-23 Havoc Pennington <hp@redhat.com>
* gtk/gtktextview.c (gtk_text_view_set_buffer): Use anonymous mark

View File

@ -1,3 +1,21 @@
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...
2000-06-23 Havoc Pennington <hp@redhat.com>
* gtk/gtktextview.c (gtk_text_view_set_buffer): Use anonymous mark

View File

@ -1,3 +1,21 @@
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...
2000-06-23 Havoc Pennington <hp@redhat.com>
* gtk/gtktextview.c (gtk_text_view_set_buffer): Use anonymous mark

View File

@ -1,3 +1,21 @@
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...
2000-06-23 Havoc Pennington <hp@redhat.com>
* gtk/gtktextview.c (gtk_text_view_set_buffer): Use anonymous mark

View File

@ -29,7 +29,7 @@ AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)dnl
#
GTK_MAJOR_VERSION=1
GTK_MINOR_VERSION=3
GTK_MICRO_VERSION=0
GTK_MICRO_VERSION=1
GTK_INTERFACE_AGE=0
GTK_BINARY_AGE=0
GTK_VERSION=$GTK_MAJOR_VERSION.$GTK_MINOR_VERSION.$GTK_MICRO_VERSION
@ -1001,7 +1001,6 @@ gdk/win32/Makefile
gdk/nanox/Makefile
gdk/linux-fb/Makefile
gtk/Makefile
gtk/gtkfeatures.h
gtk/gtkcompat.h
modules/Makefile
modules/linux-fb/Makefile

View File

@ -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;
GdkPixbufLoaderPrivate *priv = NULL;
priv = GDK_PIXBUF_LOADER (loader)->private;
gdk_pixbuf_ref (pixbuf);
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]);
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 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 (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_load_module(GdkPixbufLoader *loader)
gdk_pixbuf_loader_eat_header_write (GdkPixbufLoader *loader,
const guchar *buf,
gsize count)
{
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;
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;
}
static int
gdk_pixbuf_loader_eat_header_write (GdkPixbufLoader *loader, const guchar *buf, size_t 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;
}
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]);
}

View File

@ -26,7 +26,6 @@
#ifndef GDK_PIXBUF_LOADER_H
#define GDK_PIXBUF_LOADER_H
#include <unistd.h>
#include <gtk/gtkobject.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
@ -34,52 +33,52 @@
extern "C" {
#endif
#define GDK_TYPE_PIXBUF_LOADER (gdk_pixbuf_loader_get_type ())
#define GDK_PIXBUF_LOADER(obj) (GTK_CHECK_CAST ((obj), GDK_TYPE_PIXBUF_LOADER, GdkPixbufLoader))
#define GDK_PIXBUF_LOADER_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GDK_TYPE_PIXBUF_LOADER, GdkPixbufLoaderClass))
#define GDK_IS_PIXBUF_LOADER(obj) (GTK_CHECK_TYPE ((obj), GDK_TYPE_PIXBUF_LOADER))
#define GDK_IS_PIXBUF_LOADER_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GDK_TYPE_PIXBUF_LOADER))
#define GDK_PIXBUF_LOADER_GET_CLASS(obj) (GTK_CHECK_GET_CLASS ((obj), GDK_TYPE_PIXBUF_LOADER, GdkPixbufLoaderClass))
typedef struct _GdkPixbufLoader GdkPixbufLoader;
struct _GdkPixbufLoader
{
GtkObject object;
/* < Private > */
gpointer private;
GtkObject object;
/*< private >*/
gpointer private;
};
typedef struct _GdkPixbufLoaderClass GdkPixbufLoaderClass;
struct _GdkPixbufLoaderClass {
GtkObjectClass parent_class;
void (* area_prepared) (GdkPixbufLoader *loader);
void (* area_updated) (GdkPixbufLoader *loader,
guint x, guint y, guint width, guint height);
void (* frame_done) (GdkPixbufLoader *loader, GdkPixbufFrame *frame);
void (* animation_done) (GdkPixbufLoader *loader);
void (* closed) (GdkPixbufLoader *loader);
struct _GdkPixbufLoaderClass
{
GtkObjectClass parent_class;
void (*area_prepared) (GdkPixbufLoader *loader);
void (*area_updated) (GdkPixbufLoader *loader,
guint x,
guint y,
guint width,
guint height);
void (*frame_done) (GdkPixbufLoader *loader,
GdkPixbufFrame *frame);
void (*animation_done) (GdkPixbufLoader *loader);
void (*closed) (GdkPixbufLoader *loader);
};
GtkType gdk_pixbuf_loader_get_type (void);
GdkPixbufLoader *gdk_pixbuf_loader_new (void);
gboolean gdk_pixbuf_loader_write (GdkPixbufLoader *loader,
const guchar *buf,
size_t count);
GdkPixbuf *gdk_pixbuf_loader_get_pixbuf (GdkPixbufLoader *loader);
GdkPixbufAnimation *gdk_pixbuf_loader_get_animation (GdkPixbufLoader *loader);
void gdk_pixbuf_loader_close (GdkPixbufLoader *loader);
GtkType gdk_pixbuf_loader_get_type (void);
GdkPixbufLoader * gdk_pixbuf_loader_new (void);
gboolean gdk_pixbuf_loader_write (GdkPixbufLoader *loader,
const guchar *buf,
gsize count);
GdkPixbuf * gdk_pixbuf_loader_get_pixbuf (GdkPixbufLoader *loader);
GdkPixbufAnimation * gdk_pixbuf_loader_get_animation (GdkPixbufLoader *loader);
void gdk_pixbuf_loader_close (GdkPixbufLoader *loader);
#ifdef __cplusplus
}

View File

@ -120,6 +120,6 @@ if test "$echo_libs" = "yes"; then
fi
done
echo $libdirs @more_ldflags@ -lgtk-$target -lgdk-$target $my_glib_libs @INTLLIBS@ @PANGO_LIBS@ @more_libs@ @GDK_WLIBS@ @MATH_LIB@
echo $libdirs @more_ldflags@ -lgtk-$target -lgdk_pixbuf -lgdk-$target $my_glib_libs @INTLLIBS@ @PANGO_LIBS@ @more_libs@ @GDK_WLIBS@ @MATH_LIB@
fi

View File

@ -80,7 +80,6 @@ gtk_public_h_sources = @STRIP_BEGIN@ \
gtkentry.h \
gtkenums.h \
gtkeventbox.h \
gtkfeatures.h \
gtkfilesel.h \
gtkfixed.h \
gtkfontsel.h \

View File

@ -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;
GdkPixbufLoaderPrivate *priv = NULL;
priv = GDK_PIXBUF_LOADER (loader)->private;
gdk_pixbuf_ref (pixbuf);
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]);
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 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 (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_load_module(GdkPixbufLoader *loader)
gdk_pixbuf_loader_eat_header_write (GdkPixbufLoader *loader,
const guchar *buf,
gsize count)
{
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;
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;
}
static int
gdk_pixbuf_loader_eat_header_write (GdkPixbufLoader *loader, const guchar *buf, size_t 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;
}
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]);
}

View File

@ -26,7 +26,6 @@
#ifndef GDK_PIXBUF_LOADER_H
#define GDK_PIXBUF_LOADER_H
#include <unistd.h>
#include <gtk/gtkobject.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
@ -34,52 +33,52 @@
extern "C" {
#endif
#define GDK_TYPE_PIXBUF_LOADER (gdk_pixbuf_loader_get_type ())
#define GDK_PIXBUF_LOADER(obj) (GTK_CHECK_CAST ((obj), GDK_TYPE_PIXBUF_LOADER, GdkPixbufLoader))
#define GDK_PIXBUF_LOADER_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GDK_TYPE_PIXBUF_LOADER, GdkPixbufLoaderClass))
#define GDK_IS_PIXBUF_LOADER(obj) (GTK_CHECK_TYPE ((obj), GDK_TYPE_PIXBUF_LOADER))
#define GDK_IS_PIXBUF_LOADER_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GDK_TYPE_PIXBUF_LOADER))
#define GDK_PIXBUF_LOADER_GET_CLASS(obj) (GTK_CHECK_GET_CLASS ((obj), GDK_TYPE_PIXBUF_LOADER, GdkPixbufLoaderClass))
typedef struct _GdkPixbufLoader GdkPixbufLoader;
struct _GdkPixbufLoader
{
GtkObject object;
/* < Private > */
gpointer private;
GtkObject object;
/*< private >*/
gpointer private;
};
typedef struct _GdkPixbufLoaderClass GdkPixbufLoaderClass;
struct _GdkPixbufLoaderClass {
GtkObjectClass parent_class;
void (* area_prepared) (GdkPixbufLoader *loader);
void (* area_updated) (GdkPixbufLoader *loader,
guint x, guint y, guint width, guint height);
void (* frame_done) (GdkPixbufLoader *loader, GdkPixbufFrame *frame);
void (* animation_done) (GdkPixbufLoader *loader);
void (* closed) (GdkPixbufLoader *loader);
struct _GdkPixbufLoaderClass
{
GtkObjectClass parent_class;
void (*area_prepared) (GdkPixbufLoader *loader);
void (*area_updated) (GdkPixbufLoader *loader,
guint x,
guint y,
guint width,
guint height);
void (*frame_done) (GdkPixbufLoader *loader,
GdkPixbufFrame *frame);
void (*animation_done) (GdkPixbufLoader *loader);
void (*closed) (GdkPixbufLoader *loader);
};
GtkType gdk_pixbuf_loader_get_type (void);
GdkPixbufLoader *gdk_pixbuf_loader_new (void);
gboolean gdk_pixbuf_loader_write (GdkPixbufLoader *loader,
const guchar *buf,
size_t count);
GdkPixbuf *gdk_pixbuf_loader_get_pixbuf (GdkPixbufLoader *loader);
GdkPixbufAnimation *gdk_pixbuf_loader_get_animation (GdkPixbufLoader *loader);
void gdk_pixbuf_loader_close (GdkPixbufLoader *loader);
GtkType gdk_pixbuf_loader_get_type (void);
GdkPixbufLoader * gdk_pixbuf_loader_new (void);
gboolean gdk_pixbuf_loader_write (GdkPixbufLoader *loader,
const guchar *buf,
gsize count);
GdkPixbuf * gdk_pixbuf_loader_get_pixbuf (GdkPixbufLoader *loader);
GdkPixbufAnimation * gdk_pixbuf_loader_get_animation (GdkPixbufLoader *loader);
void gdk_pixbuf_loader_close (GdkPixbufLoader *loader);
#ifdef __cplusplus
}

View File

@ -1,123 +0,0 @@
/* GTK - The GIMP Toolkit
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#ifndef __GTK_FEATURES_H__
#define __GTK_FEATURES_H__
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/* compile time version
*/
#define GTK_MAJOR_VERSION (@GTK_MAJOR_VERSION@)
#define GTK_MINOR_VERSION (@GTK_MINOR_VERSION@)
#define GTK_MICRO_VERSION (@GTK_MICRO_VERSION@)
#define GTK_BINARY_AGE (@GTK_BINARY_AGE@)
#define GTK_INTERFACE_AGE (@GTK_INTERFACE_AGE@)
#define GTK_CHECK_VERSION(major,minor,micro) \
(GTK_MAJOR_VERSION > (major) || \
(GTK_MAJOR_VERSION == (major) && GTK_MINOR_VERSION > (minor)) || \
(GTK_MAJOR_VERSION == (major) && GTK_MINOR_VERSION == (minor) && \
GTK_MICRO_VERSION >= (micro)))
/* new gtk_container_set_focus_[hv]adjustment()
*/
#define GTK_HAVE_CONTAINER_FOCUS_ADJUSTMENTS 1-0-1
/* newly exported gtk_signal_init()
* new gtk_signal_n_emissions*()
* "signal-name" is now an alias for "signal_name"
* new gtk_signal_emitv*()
*/
#define GTK_HAVE_SIGNAL_INIT 1-0-2
/* Gtk+ 1.1.0 version tag.
* - new gtk_rc_set_image_loader () to install custom image loaders for rc
* files.
* - GtkAccel groups replaced GtkAcceleratorTables
* - Gdk supports full crossing event now.
* - Buttons featur relief styles now.
* - gdk_rgb_*() functions are in place.
* - stringified enum values can be queried for enum types now.
* - new key binding system is in place (GtkBindingSet).
* - simple algorithm for pattern matching is exported now (GtkPatternSpec).
*/
#define GTK_HAVE_FEATURES_1_1_0 1-1-0
/* Gtk+ 1.1.2 version tag
* - ctree function name changes
*/
#define GTK_HAVE_FEATURES_1_1_2 1-1-2
/* Gtk+ 1.1.4 version tag
* - clist v/hscrollbar -> v/hadjustment changes
*/
#define GTK_HAVE_FEATURES_1_1_4 1-1-4
/* Gtk+ 1.1.5 version tag
*/
#define GTK_HAVE_FEATURES_1_1_5 1-1-5
/* Gtk+ 1.1.6 version tag
*/
#define GTK_HAVE_FEATURES_1_1_6 1-1-6
/* Gtk+ 1.1.7 version tag
*/
#define GTK_HAVE_FEATURES_1_1_7 1-1-7
/* Gtk+ 1.1.8 version tag
*/
#define GTK_HAVE_FEATURES_1_1_8 1-1-8
/* Gtk+ 1.1.9 version tag
*/
#define GTK_HAVE_FEATURES_1_1_9 1-1-9
/* Gtk+ 1.1.10 version tag
*/
#define GTK_HAVE_FEATURES_1_1_10 1-1-10
/* Gtk+ 1.1.11 version tag
*/
#define GTK_HAVE_FEATURES_1_1_11 1-1-11
/* Gtk+ 1.1.12 version tag
*/
#define GTK_HAVE_FEATURES_1_1_12 1-1-12
/* Gtk+ 1.1.13 version tag
* gtk_toggle_button_set_state name changes
*/
#define GTK_HAVE_FEATURES_1_1_13 1-1-13
/* Gtk+ 1.1.14 version tag
* working gtk layout, etc
*/
#define GTK_HAVE_FEATURES_1_1_14 1-1-14
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* __GTK_FEATURES_H__ */

View File

@ -120,15 +120,6 @@ gtk_type_init (void)
GtkType type_id;
gchar *name;
} fundamental_info[] = {
{ GTK_TYPE_CHAR, "gchar" },
{ GTK_TYPE_UCHAR, "guchar" },
{ GTK_TYPE_BOOL, "gboolean" },
{ GTK_TYPE_INT, "gint" },
{ GTK_TYPE_UINT, "guint" },
{ GTK_TYPE_LONG, "glong" },
{ GTK_TYPE_ULONG, "gulong" },
{ GTK_TYPE_FLOAT, "gfloat" },
{ GTK_TYPE_DOUBLE, "gdouble" },
{ GTK_TYPE_POINTER, "gpointer" },
{ GTK_TYPE_SIGNAL, "GtkSignal" },
};
@ -162,22 +153,19 @@ gtk_type_init (void)
{
type_id = g_type_register_fundamental (fundamental_info[i].type_id,
fundamental_info[i].name,
&finfo,
&tinfo);
&tinfo,
&finfo);
g_assert (type_id == fundamental_info[i].type_id);
}
/* GTK_TYPE_STRING & GTK_TYPE_IDENTIFIER
/* GTK_TYPE_IDENTIFIER
*/
finfo.type_flags = G_TYPE_FLAG_DERIVABLE;
type_id = g_type_register_fundamental (GTK_TYPE_STRING, "GtkString", &finfo, &tinfo);
g_assert (type_id == GTK_TYPE_STRING);
GTK_TYPE_IDENTIFIER = g_type_register_static (GTK_TYPE_STRING, "GtkIdentifier", &tinfo);
GTK_TYPE_IDENTIFIER = g_type_register_static (G_TYPE_STRING, "GtkIdentifier", &tinfo);
/* GTK_TYPE_BOXED
*/
finfo.type_flags = G_TYPE_FLAG_DERIVABLE;
type_id = g_type_register_fundamental (GTK_TYPE_BOXED, "GtkBoxed", &finfo, &tinfo);
type_id = g_type_register_fundamental (GTK_TYPE_BOXED, "GtkBoxed", &tinfo, &finfo);
g_assert (type_id == GTK_TYPE_BOXED);
/* enums and flags

View File

@ -48,16 +48,16 @@ typedef enum /*< skip >*/
GTK_TYPE_FLAGS = G_TYPE_FLAGS,
/* GtkArg types */
GTK_TYPE_CHAR = G_TYPE_GTK_CHAR,
GTK_TYPE_UCHAR = G_TYPE_GTK_UCHAR,
GTK_TYPE_BOOL = G_TYPE_GTK_BOOL,
GTK_TYPE_INT = G_TYPE_GTK_INT,
GTK_TYPE_UINT = G_TYPE_GTK_UINT,
GTK_TYPE_LONG = G_TYPE_GTK_LONG,
GTK_TYPE_ULONG = G_TYPE_GTK_ULONG,
GTK_TYPE_FLOAT = G_TYPE_GTK_FLOAT,
GTK_TYPE_DOUBLE = G_TYPE_GTK_DOUBLE,
GTK_TYPE_STRING = G_TYPE_GTK_STRING,
GTK_TYPE_CHAR = G_TYPE_CHAR,
GTK_TYPE_UCHAR = G_TYPE_UCHAR,
GTK_TYPE_BOOL = G_TYPE_BOOLEAN,
GTK_TYPE_INT = G_TYPE_INT,
GTK_TYPE_UINT = G_TYPE_UINT,
GTK_TYPE_LONG = G_TYPE_LONG,
GTK_TYPE_ULONG = G_TYPE_ULONG,
GTK_TYPE_FLOAT = G_TYPE_FLOAT,
GTK_TYPE_DOUBLE = G_TYPE_DOUBLE,
GTK_TYPE_STRING = G_TYPE_STRING,
GTK_TYPE_BOXED = G_TYPE_GTK_BOXED,
GTK_TYPE_POINTER = G_TYPE_GTK_POINTER,
GTK_TYPE_SIGNAL = G_TYPE_GTK_SIGNAL

View File

@ -8678,6 +8678,16 @@ main (int argc, char *argv[])
create_main_window ();
gtk_main ();
if (0)
{
sleep (1);
while (g_main_pending ())
g_main_iteration (FALSE);
sleep (1);
while (g_main_pending ())
g_main_iteration (FALSE);
}
return 0;
}

View File

@ -8678,6 +8678,16 @@ main (int argc, char *argv[])
create_main_window ();
gtk_main ();
if (0)
{
sleep (1);
while (g_main_pending ())
g_main_iteration (FALSE);
sleep (1);
while (g_main_pending ())
g_main_iteration (FALSE);
}
return 0;
}