Load-at-size functionality for gdk-pixbuf.

This commit is contained in:
Matthias Clasen 2002-07-06 23:10:46 +00:00
parent 09487ff9f5
commit e4ab381018
22 changed files with 313 additions and 107 deletions

View File

@ -1,3 +1,10 @@
2002-07-07 Matthias Clasen <maclas@gmx.de>
* gdk-pixbuf/gdk-pixbuf-sections.txt,
gdk-pixbuf/tmpl/gdk-pixbuf-loader.sgml,
gdk-pixbuf/tmpl/module_interface.sgml: Updates for
load-at-size functionality.
Tue Jun 18 17:02:48 2002 Owen Taylor <otaylor@redhat.com>
* gdk/gdk-sections.txt: Fix for cursor screen => display

View File

@ -13,7 +13,7 @@ DOC_SOURCE_DIR=../../../gdk-pixbuf
SCAN_OPTIONS=--source-dir=../../../contrib/gdk-pixbuf-xlib --deprecated-guards="GDK_PIXBUF_ENABLE_BROKEN|GDK_PIXBUF_DISABLE_DEPRECATED"
# Extra options to supply to gtkdoc-mkdb
MKDB_OPTIONS=--sgml-mode --source-dir=../../../contrib/gdk-pixbuf-xlib --output-format=xml
MKDB_OPTIONS=--main-sgml-file=$(DOC_MAIN_SGML_FILE) --sgml-mode --source-dir=../../../contrib/gdk-pixbuf-xlib --output-format=xml
# Extra options to supply to gtkdoc-fixref
FIXXREF_OPTIONS=

View File

@ -149,6 +149,7 @@ gdk_interp_type_get_type
gdk_pixbuf_loader_new
gdk_pixbuf_loader_new_with_type
gdk_pixbuf_loader_write
gdk_pixbuf_loader_set_size
gdk_pixbuf_loader_get_pixbuf
gdk_pixbuf_loader_get_animation
gdk_pixbuf_loader_close
@ -168,6 +169,7 @@ gdk_pixbuf_loader_get_type
<TITLE>Module Interface</TITLE>
<FILE>module_interface</FILE>
ModuleFillVtableFunc
ModuleSizeFunc
ModulePreparedNotifyFunc
ModuleUpdatedNotifyFunc
GdkPixbufModule

View File

@ -21,21 +21,28 @@ Application-driven progressive image loading.
To use #GdkPixbufLoader to load an image, just create a new one,
and call gdk_pixbuf_loader_write() to send the data to it. When
done, gdk_pixbuf_loader_close() should be called to end the stream
and finalize everything. The loader will emit two important
and finalize everything. The loader will emit three important
signals throughout the process. The first, "<link
linkend="GdkPixbufLoader-area-prepared">area_prepared</link>",
linkend="GdkPixbufLoader-size-prepared">size_prepared</link>",
will be called as soon as the image has enough information to
determine the size of the image to be used. It will pass a
@GdkPixbuf in. If you want to use it, you can simply ref it. In
addition, no actual information will be passed in yet, so the
determine the size of the image to be used. If you want to scale
the image while loading it, you can call gdk_pixbuf_loader_set_size()
in response to this signal.
</para>
<para>The second signal, "<link
linkend="GdkPixbufLoader-area-prepared">area_prepared</link>",
will be called as soon as the pixbuf of the desired has been
allocated. You can obtain it by calling gdk_pixbuf_loader_get_pixbuf().
If you want to use it, simply ref it.
In addition, no actual information will be passed in yet, so the
pixbuf can be safely filled with any temporary graphics (or an
initial color) as needed. You can also call the
gdk_pixbuf_loader_get_pixbuf() once this signal has been emitted
and get the same pixbuf.
initial color) as needed. You can also call
gdk_pixbuf_loader_get_pixbuf() later and get the same pixbuf.
</para>
<para>
The other signal, "<link
The last signal, "<link
linkend="GdkPixbufLoader-area-updated">area_updated</link>" gets
called every time a region is updated. This way you can update a
partially completed image. Note that you do not know anything
@ -119,20 +126,24 @@ Application-driven progressive image loading.
@error:
@Returns:
<!-- ##### SIGNAL GdkPixbufLoader::size-prepared ##### -->
<para>
This signal is emitted when the pixbuf loader has been fed the
initial amount of data that is required to figure out the size
of the image that it will create. Applications can call
gdk_pixbuf_loader_set_size() in response to this signal to set
the desired size to which the image should be scaled.
</para>
@width: the original width of the image
@height: the original height of the image
<!-- ##### SIGNAL GdkPixbufLoader::area-prepared ##### -->
<para>
This signal is emitted when the pixbuf loader has been fed the
initial amount of data that is required to figure out the size and
format of the image that it will create. After this signal is
emitted, applications can call gdk_pixbuf_loader_get_pixbuf() to
fetch the partially-loaded pixbuf.
This signal is emitted when the pixbuf loader has allocated the pixbuf
in the desired size. After this signal is emitted, applications can
call gdk_pixbuf_loader_get_pixbuf() to fetch the partially-loaded pixbuf.
</para>
@gdkpixbufloader: the object which received the signal.
<!-- # Unused Parameters # -->
@loader: Loader which emitted the signal.
<!-- ##### SIGNAL GdkPixbufLoader::area-updated ##### -->
<para>
This signal is emitted when a significant area of the image being
@ -142,13 +153,7 @@ Application-driven progressive image loading.
areas of an image that is being loaded.
</para>
@gdkpixbufloader: the object which received the signal.
@arg1:
@arg2:
@arg3:
@arg4:
<!-- # Unused Parameters # -->
@loader: Loader which emitted the signal.
@gdkpixbufloader: Loader which emitted the signal.
@x: X offset of upper-left corner of the updated area.
@y: Y offset of upper-left corner of the updated area.
@width: Width of updated area.
@ -163,8 +168,6 @@ Application-driven progressive image loading.
</para>
@gdkpixbufloader: the object which received the signal.
<!-- # Unused Parameters # -->
@loader: Loader which emitted the signal.
<!--
Local variables:
@ -173,3 +176,4 @@ sgml-parent-document: ("../gdk-pixbuf.sgml" "book" "refsect2" "")
End:
-->

View File

@ -23,6 +23,24 @@ Defines the type of the function used to set the vtable of a
@module: a #GdkPixbufModule.
<!-- ##### USER_FUNCTION ModuleSizeFunc ##### -->
<para>
Defines the type of the function that gets called once the size
of the loaded image is known is done.
</para>
<para>
The function is expected to set @width and @height to the desired
size to which the image should be scaled. If a module has no efficient
way to achieve the desired scaling during the loading of the image, it may
either ignore the size request, or only approximate it -- the loader will
then perform the required scaling on the completely loaded image.
</para>
@width: pointer to a location containing the current image width
@height: pointer to a location containing the current image height
@user_data: the loader.
<!-- ##### USER_FUNCTION ModulePreparedNotifyFunc ##### -->
<para>
Defines the type of the function that gets called once the initial

View File

@ -1,3 +1,34 @@
2002-07-07 Matthias Clasen <maclas@gmx.de>
Load-at-size functionality (#53726):
* gdk-pixbuf-io.h (ModuleSizeFunc): New.
(_GdkPixbufModule): Prepend a ModuleSizeFunc to the
begin_load arguments. Adjust all modules.
* gdk-pixbuf-loader.c (struct GdkPixbufLoaderPrivate): Add
fields width, height, size_fixed, need_scale.
(gdk_pixbuf_loader_class_init): Add size_prepared signal.
(gdk_pixbuf_loader_set_size): New function.
(gdk_pixbuf_loader_size_func): ModuleSizeFunc which gets
passed to the module, emits size_prepared.
(gdk_pixbuf_loader_prepare): Call gdk_pixbuf_loader_size_func
if necessary, only emit area_prepared if no separate scaling
is required.
(gdk_pixbuf_loader_update): Only emit area_updated if no
separate scaling is required.
(gdk_pixbuf_loader_load_module): Add size_func as first argument.
(gdk_pixbuf_loader_close): If necessary scale the image
to the desired size and emit area_prepared and area_updated.
* gdk-pixbuf-loader.h (struct _GdkPixbufLoaderClass): Add
size_prepared signal.
(gdk_pixbuf_loader_set_size) New API.
* gdk-pixbuf-marshal.list: Add VOID:INT,INT.
* io-jpeg.c: User cinfo->output_width/height instead of
cinfo->image_width/height throughout when adressing the pixbuf.
(gdk_pixbuf__jpeg_image_load_increment): Call size_func, and
find the nearest possible output size which libjpeg can produce
that is still larger than the desired size.
2002-07-06 Matthias Clasen <maclas@gmx.de>
* io-tiff.c (tiff_set_error): Handle global_error == NULL

View File

@ -37,6 +37,10 @@ G_BEGIN_DECLS
typedef void (* ModuleSizeFunc) (gint *width,
gint *height,
gpointer user_data);
typedef void (* ModulePreparedNotifyFunc) (GdkPixbuf *pixbuf,
GdkPixbufAnimation *anim,
gpointer user_data);
@ -58,7 +62,8 @@ struct _GdkPixbufModule {
/* Incremental loading */
gpointer (* begin_load) (ModulePreparedNotifyFunc prepare_func,
gpointer (* begin_load) (ModuleSizeFunc size_func,
ModulePreparedNotifyFunc prepare_func,
ModuleUpdatedNotifyFunc update_func,
gpointer user_data,
GError **error);

View File

@ -31,8 +31,9 @@
#include "gdk-pixbuf-marshal.h"
enum {
AREA_UPDATED,
SIZE_PREPARED,
AREA_PREPARED,
AREA_UPDATED,
CLOSED,
LAST_SIGNAL
};
@ -58,6 +59,10 @@ typedef struct
gint header_buf_offset;
GdkPixbufModule *image_module;
gpointer context;
gint width;
gint height;
gboolean size_fixed;
gboolean needs_scale;
} GdkPixbufLoaderPrivate;
@ -109,6 +114,17 @@ gdk_pixbuf_loader_class_init (GdkPixbufLoaderClass *class)
object_class->finalize = gdk_pixbuf_loader_finalize;
pixbuf_loader_signals[SIZE_PREPARED] =
g_signal_new ("size_prepared",
G_TYPE_FROM_CLASS (object_class),
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GdkPixbufLoaderClass, size_prepared),
NULL, NULL,
gdk_pixbuf_marshal_VOID__INT_INT,
G_TYPE_NONE, 2,
G_TYPE_INT,
G_TYPE_INT);
pixbuf_loader_signals[AREA_PREPARED] =
g_signal_new ("area_prepared",
G_TYPE_FROM_CLASS (object_class),
@ -170,14 +186,73 @@ gdk_pixbuf_loader_finalize (GObject *object)
G_OBJECT_CLASS (parent_class)->finalize (object);
}
/**
* gdk_pixbuf_loader_set_size:
* @loader: A pixbuf loader.
* @width: The desired width of the image being loaded.
* @height: The desired height of the image being loaded.
*
* Causes the image to be scaled while it is loaded. The desired
* image size can be determined relative to the original size of
* the image by calling gdk_pixbuf_loader_set_size() from a
* signal handler for the ::size_prepared signal.
*
* Attempts to set the desired image size are ignored after the
* emission of the ::size_prepared signal.
*/
void
gdk_pixbuf_loader_set_size (GdkPixbufLoader *loader,
gint width,
gint height)
{
GdkPixbufLoaderPrivate *priv = GDK_PIXBUF_LOADER (loader)->priv;
g_return_if_fail (width > 0 && height > 0);
if (!priv->size_fixed) {
priv->width = width;
priv->height = height;
}
}
static void
gdk_pixbuf_loader_size_func (gint *width, gint *height, gpointer loader)
{
GdkPixbufLoaderPrivate *priv = GDK_PIXBUF_LOADER (loader)->priv;
/* allow calling gdk_pixbuf_loader_set_size() before the signal */
if (priv->width == 0 && priv->height == 0) {
priv->width = *width;
priv->height = *height;
}
g_signal_emit (loader, pixbuf_loader_signals[SIZE_PREPARED], 0, *width, *height);
priv->size_fixed = TRUE;
*width = priv->width;
*height = priv->height;
}
static void
gdk_pixbuf_loader_prepare (GdkPixbuf *pixbuf,
GdkPixbufAnimation *anim,
gpointer loader)
{
GdkPixbufLoaderPrivate *priv = NULL;
GdkPixbufLoaderPrivate *priv = GDK_PIXBUF_LOADER (loader)->priv;
g_return_if_fail (pixbuf != NULL);
priv = GDK_PIXBUF_LOADER (loader)->priv;
if (!priv->size_fixed) {
/* Defend against lazy loaders which don't call size_func */
gint width = gdk_pixbuf_get_width (pixbuf);
gint height = gdk_pixbuf_get_height (pixbuf);
gdk_pixbuf_loader_size_func (&width, &height, loader);
}
priv->needs_scale = FALSE;
if (priv->width > 0 && priv->height > 0 &&
(priv->width != gdk_pixbuf_get_width (pixbuf) ||
priv->height != gdk_pixbuf_get_height (pixbuf)))
priv->needs_scale = TRUE;
if (anim)
g_object_ref (anim);
@ -186,6 +261,7 @@ gdk_pixbuf_loader_prepare (GdkPixbuf *pixbuf,
priv->animation = anim;
if (!priv->needs_scale)
g_signal_emit (loader, pixbuf_loader_signals[AREA_PREPARED], 0);
}
@ -197,10 +273,9 @@ gdk_pixbuf_loader_update (GdkPixbuf *pixbuf,
gint height,
gpointer loader)
{
GdkPixbufLoaderPrivate *priv = NULL;
priv = GDK_PIXBUF_LOADER (loader)->priv;
GdkPixbufLoaderPrivate *priv = GDK_PIXBUF_LOADER (loader)->priv;
if (!priv->needs_scale)
g_signal_emit (loader,
pixbuf_loader_signals[AREA_UPDATED],
0,
@ -253,7 +328,8 @@ gdk_pixbuf_loader_load_module (GdkPixbufLoader *loader,
return 0;
}
priv->context = priv->image_module->begin_load (gdk_pixbuf_loader_prepare,
priv->context = priv->image_module->begin_load (gdk_pixbuf_loader_size_func,
gdk_pixbuf_loader_prepare,
gdk_pixbuf_loader_update,
loader,
error);
@ -536,6 +612,7 @@ gdk_pixbuf_loader_close (GdkPixbufLoader *loader,
retval = FALSE;
}
}
if (priv->image_module && priv->image_module->stop_load && priv->context) {
if (!priv->image_module->stop_load (priv->context, error))
retval = FALSE;
@ -543,9 +620,33 @@ gdk_pixbuf_loader_close (GdkPixbufLoader *loader,
priv->closed = TRUE;
if (priv->needs_scale) {
GdkPixbuf *tmp, *pixbuf;
tmp = gdk_pixbuf_animation_get_static_image (priv->animation);
g_object_ref (tmp);
pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, tmp->has_alpha, 8, priv->width, priv->height);
g_object_unref (priv->animation);
priv->animation = gdk_pixbuf_non_anim_new (pixbuf);
g_signal_emit (loader, pixbuf_loader_signals[AREA_PREPARED], 0);
gdk_pixbuf_scale (tmp, pixbuf, 0, 0, priv->width, priv->height, 0, 0,
(double) priv->width / tmp->width,
(double) priv->height / tmp->height,
GDK_INTERP_BILINEAR);
g_object_unref (tmp);
g_signal_emit (loader, pixbuf_loader_signals[AREA_UPDATED], 0,
0, 0, priv->width, priv->height);
}
g_signal_emit (loader, pixbuf_loader_signals[CLOSED], 0);
return retval;
}

View File

@ -50,6 +50,10 @@ struct _GdkPixbufLoaderClass
{
GObjectClass parent_class;
void (*size_prepared) (GdkPixbufLoader *loader,
int width,
int height);
void (*area_prepared) (GdkPixbufLoader *loader);
/* Last known frame needs a redraw for x, y, width, height */
@ -62,11 +66,13 @@ struct _GdkPixbufLoaderClass
void (*closed) (GdkPixbufLoader *loader);
};
GType gdk_pixbuf_loader_get_type (void) G_GNUC_CONST;
GdkPixbufLoader * gdk_pixbuf_loader_new (void);
GdkPixbufLoader * gdk_pixbuf_loader_new_with_type (const char *image_type,
GError **error);
void gdk_pixbuf_loader_set_size (GdkPixbufLoader *loader,
int width,
int height);
gboolean gdk_pixbuf_loader_write (GdkPixbufLoader *loader,
const guchar *buf,
gsize count,
@ -80,3 +86,5 @@ gboolean gdk_pixbuf_loader_close (GdkPixbufLoader *loader,
G_END_DECLS
#endif

View File

@ -25,3 +25,4 @@
VOID:VOID
VOID:INT,INT,INT,INT
VOID:POINTER
VOID:INT,INT

View File

@ -181,7 +181,8 @@ struct bmp_progressive_state {
};
static gpointer
gdk_pixbuf__bmp_image_begin_load(ModulePreparedNotifyFunc prepared_func,
gdk_pixbuf__bmp_image_begin_load(ModuleSizeFunc size_func,
ModulePreparedNotifyFunc prepared_func,
ModuleUpdatedNotifyFunc updated_func,
gpointer user_data,
GError **error);
@ -205,7 +206,7 @@ static GdkPixbuf *gdk_pixbuf__bmp_image_load(FILE * f, GError **error)
GdkPixbuf *pb;
State =
gdk_pixbuf__bmp_image_begin_load(NULL, NULL, NULL,
gdk_pixbuf__bmp_image_begin_load(NULL, NULL, NULL, NULL,
error);
if (State == NULL)
@ -512,7 +513,8 @@ decode_bitmasks (guchar *buf,
*/
static gpointer
gdk_pixbuf__bmp_image_begin_load(ModulePreparedNotifyFunc prepared_func,
gdk_pixbuf__bmp_image_begin_load(ModuleSizeFunc size_func,
ModulePreparedNotifyFunc prepared_func,
ModuleUpdatedNotifyFunc updated_func,
gpointer user_data,
GError **error)

View File

@ -1396,7 +1396,8 @@ gdk_pixbuf__gif_image_load (FILE *file, GError **error)
}
static gpointer
gdk_pixbuf__gif_image_begin_load (ModulePreparedNotifyFunc prepare_func,
gdk_pixbuf__gif_image_begin_load (ModuleSizeFunc size_func,
ModulePreparedNotifyFunc prepare_func,
ModuleUpdatedNotifyFunc update_func,
gpointer user_data,
GError **error)

View File

@ -158,7 +158,8 @@ struct ico_progressive_state {
};
static gpointer
gdk_pixbuf__ico_image_begin_load(ModulePreparedNotifyFunc prepared_func,
gdk_pixbuf__ico_image_begin_load(ModuleSizeFunc size_func,
ModulePreparedNotifyFunc prepared_func,
ModuleUpdatedNotifyFunc updated_func,
gpointer user_data,
GError **error);
@ -193,7 +194,7 @@ gdk_pixbuf__ico_image_load(FILE * f, GError **error)
GdkPixbuf *pb;
State = gdk_pixbuf__ico_image_begin_load(NULL, NULL, NULL, error);
State = gdk_pixbuf__ico_image_begin_load(NULL, NULL, NULL, NULL, error);
if (State == NULL)
return NULL;
@ -478,7 +479,8 @@ static void DecodeHeader(guchar *Data, gint Bytes,
*/
static gpointer
gdk_pixbuf__ico_image_begin_load(ModulePreparedNotifyFunc prepared_func,
gdk_pixbuf__ico_image_begin_load(ModuleSizeFunc size_func,
ModulePreparedNotifyFunc prepared_func,
ModuleUpdatedNotifyFunc updated_func,
gpointer user_data,
GError **error)

View File

@ -1,3 +1,4 @@
/* -*- mode: C; c-file-style: "linux" -*- */
/* GdkPixbuf library - JPEG image loader
*
* Copyright (C) 1999 Michael Zucchi
@ -64,6 +65,7 @@ struct error_handler_data {
/* progressive loader context */
typedef struct {
ModuleSizeFunc size_func;
ModuleUpdatedNotifyFunc updated_func;
ModulePreparedNotifyFunc prepared_func;
gpointer user_data;
@ -80,7 +82,8 @@ typedef struct {
} JpegProgContext;
static GdkPixbuf *gdk_pixbuf__jpeg_image_load (FILE *f, GError **error);
static gpointer gdk_pixbuf__jpeg_image_begin_load (ModulePreparedNotifyFunc func,
static gpointer gdk_pixbuf__jpeg_image_begin_load (ModuleSizeFunc func0,
ModulePreparedNotifyFunc func1,
ModuleUpdatedNotifyFunc func2,
gpointer user_data,
GError **error);
@ -140,7 +143,7 @@ explode_gray_into_buf (struct jpeg_decompress_struct *cinfo,
/* Expand grey->colour. Expand from the end of the
* memory down, so we can use the same buffer.
*/
w = cinfo->image_width;
w = cinfo->output_width;
for (i = cinfo->rec_outbuf_height - 1; i >= 0; i--) {
guchar *from, *to;
@ -171,7 +174,7 @@ convert_cmyk_to_rgb (struct jpeg_decompress_struct *cinfo,
guchar *p;
p = lines[i];
for (j = 0; j < cinfo->image_width; j++) {
for (j = 0; j < cinfo->output_width; j++) {
int c, m, y, k;
c = p[0];
m = p[1];
@ -446,7 +449,8 @@ skip_input_data (j_decompress_ptr cinfo, long num_bytes)
*/
gpointer
gdk_pixbuf__jpeg_image_begin_load (ModulePreparedNotifyFunc prepared_func,
gdk_pixbuf__jpeg_image_begin_load (ModuleSizeFunc size_func,
ModulePreparedNotifyFunc prepared_func,
ModuleUpdatedNotifyFunc updated_func,
gpointer user_data,
GError **error)
@ -455,6 +459,7 @@ gdk_pixbuf__jpeg_image_begin_load (ModulePreparedNotifyFunc prepared_func,
my_source_mgr *src;
context = g_new0 (JpegProgContext, 1);
context->size_func = size_func;
context->prepared_func = prepared_func;
context->updated_func = updated_func;
context->user_data = user_data;
@ -559,6 +564,7 @@ gdk_pixbuf__jpeg_image_load_increment (gpointer data,
guint spinguard;
gboolean first;
const guchar *bufhd;
gint width, height;
g_return_val_if_fail (context != NULL, FALSE);
g_return_val_if_fail (buf != NULL, FALSE);
@ -569,10 +575,6 @@ gdk_pixbuf__jpeg_image_load_increment (gpointer data,
context->jerr.error = error;
/* XXXXXXX (drmike) - loop(s) below need to be recoded now I
* have a grasp of what the flow needs to be!
*/
/* check for fatal error */
if (sigsetjmp (context->jerr.setjmp_buffer, 1)) {
return FALSE;
@ -645,20 +647,23 @@ gdk_pixbuf__jpeg_image_load_increment (gpointer data,
context->got_header = TRUE;
} else if (!context->did_prescan) {
int rc;
width = cinfo->image_width;
height = cinfo->image_height;
(* context->size_func) (&width, &height, context->user_data);
for (cinfo->scale_denom = 2; cinfo->scale_denom <= 8; cinfo->scale_denom *= 2) {
jpeg_calc_output_dimensions (cinfo);
if (cinfo->output_width < width || cinfo->output_height < height) {
cinfo->scale_denom /= 2;
break;
}
}
jpeg_calc_output_dimensions (cinfo);
/* start decompression */
cinfo->buffered_image = TRUE;
rc = jpeg_start_decompress (cinfo);
cinfo->do_fancy_upsampling = FALSE;
cinfo->do_block_smoothing = FALSE;
context->pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB,
context->pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB,
cinfo->output_components == 4 ? TRUE : FALSE,
8,
cinfo->image_width,
cinfo->image_height);
cinfo->output_width,
cinfo->output_height);
if (context->pixbuf == NULL) {
g_set_error (error,
@ -676,6 +681,14 @@ gdk_pixbuf__jpeg_image_load_increment (gpointer data,
NULL,
context->user_data);
} else if (!context->did_prescan) {
int rc;
/* start decompression */
cinfo->buffered_image = TRUE;
rc = jpeg_start_decompress (cinfo);
cinfo->do_fancy_upsampling = FALSE;
cinfo->do_block_smoothing = FALSE;
if (rc == JPEG_SUSPENDED)
continue;

View File

@ -386,7 +386,8 @@ struct _LoadContext {
};
static gpointer
gdk_pixbuf__png_image_begin_load (ModulePreparedNotifyFunc prepare_func,
gdk_pixbuf__png_image_begin_load (ModuleSizeFunc size_func,
ModulePreparedNotifyFunc prepare_func,
ModuleUpdatedNotifyFunc update_func,
gpointer user_data,
GError **error)

View File

@ -81,7 +81,8 @@ typedef struct {
} PnmLoaderContext;
static GdkPixbuf *gdk_pixbuf__pnm_image_load (FILE *f, GError **error);
static gpointer gdk_pixbuf__pnm_image_begin_load (ModulePreparedNotifyFunc func,
static gpointer gdk_pixbuf__pnm_image_begin_load (ModuleSizeFunc size_func,
ModulePreparedNotifyFunc func,
ModuleUpdatedNotifyFunc func2,
gpointer user_data,
GError **error);
@ -803,7 +804,8 @@ gdk_pixbuf__pnm_image_load (FILE *f, GError **error)
*/
static gpointer
gdk_pixbuf__pnm_image_begin_load (ModulePreparedNotifyFunc prepared_func,
gdk_pixbuf__pnm_image_begin_load (ModuleSizeFunc size_func,
ModulePreparedNotifyFunc prepared_func,
ModuleUpdatedNotifyFunc updated_func,
gpointer user_data,
GError **error)

View File

@ -94,7 +94,8 @@ struct ras_progressive_state {
};
static gpointer
gdk_pixbuf__ras_image_begin_load(ModulePreparedNotifyFunc prepared_func,
gdk_pixbuf__ras_image_begin_load(ModuleSizeFunc size_func,
ModulePreparedNotifyFunc prepared_func,
ModuleUpdatedNotifyFunc updated_func,
gpointer user_data,
GError **error);
@ -114,7 +115,7 @@ static GdkPixbuf *gdk_pixbuf__ras_image_load(FILE * f, GError **error)
GdkPixbuf *pb;
State = gdk_pixbuf__ras_image_begin_load(NULL, NULL, NULL, error);
State = gdk_pixbuf__ras_image_begin_load(NULL, NULL, NULL, NULL, error);
membuf = g_malloc(4096);
@ -251,7 +252,8 @@ static gboolean RAS2State(struct rasterfile *RAS,
*/
static gpointer
gdk_pixbuf__ras_image_begin_load(ModulePreparedNotifyFunc prepared_func,
gdk_pixbuf__ras_image_begin_load(ModuleSizeFunc size_func,
ModulePreparedNotifyFunc prepared_func,
ModuleUpdatedNotifyFunc updated_func,
gpointer user_data,
GError **error)

View File

@ -801,7 +801,8 @@ static gboolean try_preload(TGAContext *ctx, GError **err)
return TRUE;
}
static gpointer gdk_pixbuf__tga_begin_load(ModulePreparedNotifyFunc f1,
static gpointer gdk_pixbuf__tga_begin_load(ModuleSizeFunc f0,
ModulePreparedNotifyFunc f1,
ModuleUpdatedNotifyFunc f2,
gpointer udata, GError **err)
{

View File

@ -361,7 +361,8 @@ gdk_pixbuf__tiff_image_load (FILE *f, GError **error)
/* Progressive loader */
static gpointer
gdk_pixbuf__tiff_image_begin_load (ModulePreparedNotifyFunc prepare_func,
gdk_pixbuf__tiff_image_begin_load (ModuleSizeFunc size_func,
ModulePreparedNotifyFunc prepare_func,
ModuleUpdatedNotifyFunc update_func,
gpointer user_data,
GError **error)

View File

@ -63,7 +63,8 @@ struct wbmp_progressive_state {
};
static gpointer
gdk_pixbuf__wbmp_image_begin_load(ModulePreparedNotifyFunc prepared_func,
gdk_pixbuf__wbmp_image_begin_load(ModuleSizeFunc size_func,
ModulePreparedNotifyFunc prepared_func,
ModuleUpdatedNotifyFunc updated_func,
gpointer user_data,
GError **error);
@ -85,7 +86,7 @@ static GdkPixbuf *gdk_pixbuf__wbmp_image_load(FILE * f, GError **error)
GdkPixbuf *pb;
State = gdk_pixbuf__wbmp_image_begin_load(NULL, NULL, NULL,
State = gdk_pixbuf__wbmp_image_begin_load(NULL, NULL, NULL, NULL,
error);
if (State == NULL)
@ -116,7 +117,8 @@ static GdkPixbuf *gdk_pixbuf__wbmp_image_load(FILE * f, GError **error)
*/
static gpointer
gdk_pixbuf__wbmp_image_begin_load(ModulePreparedNotifyFunc prepared_func,
gdk_pixbuf__wbmp_image_begin_load(ModuleSizeFunc size_func,
ModulePreparedNotifyFunc prepared_func,
ModuleUpdatedNotifyFunc updated_func,
gpointer user_data,
GError **error)

View File

@ -353,7 +353,8 @@ gdk_pixbuf__xbm_image_load (FILE *f, GError **error)
*/
static gpointer
gdk_pixbuf__xbm_image_begin_load (ModulePreparedNotifyFunc prepare_func,
gdk_pixbuf__xbm_image_begin_load (ModuleSizeFunc size_func,
ModulePreparedNotifyFunc prepare_func,
ModuleUpdatedNotifyFunc update_func,
gpointer user_data,
GError **error)

View File

@ -1416,7 +1416,8 @@ struct _XPMContext
* in the future.
*/
static gpointer
gdk_pixbuf__xpm_image_begin_load (ModulePreparedNotifyFunc prepare_func,
gdk_pixbuf__xpm_image_begin_load (ModuleSizeFunc size_func,
ModulePreparedNotifyFunc prepare_func,
ModuleUpdatedNotifyFunc update_func,
gpointer user_data,
GError **error)