diff options
author | Havoc Pennington <hp@redhat.com> | 2001-01-22 23:09:48 +0000 |
---|---|---|
committer | Havoc Pennington <hp@src.gnome.org> | 2001-01-22 23:09:48 +0000 |
commit | e0fee22e7885f465370c184c7e02d542ec16b177 (patch) | |
tree | aeb869be43858272ae128529c043bf33abfee41b /gdk-pixbuf/io-pnm.c | |
parent | a081fe7d541c670d9017f60f3b9dd1b93affe9f5 (diff) | |
download | gtk+-e0fee22e7885f465370c184c7e02d542ec16b177.tar.gz |
Add built marshaller files to support GdkPixbufLoader signals
2001-01-22 Havoc Pennington <hp@redhat.com>
* Makefile.am: Add built marshaller files to support
GdkPixbufLoader signals
* gdk-pixbuf-io.c (gdk_pixbuf_load_module): have
GDK_PIXBUF_MODULEDIR unconditionally replace the compiled-in
module location, rather than acting as a fallback, because we are
using GDK_PIXBUF_MODULEDIR to use gdk-pixbuf before installing it.
* gdk-pixbuf.h: include gdk-pixbuf-loader.h
* gdk-pixbuf-loader.h, gdk-pixbuf-loader.c: Move back over here
from gtk, and add error to close(), because stop_load may do
parsing of the image.
* pixops/have_mmx.S (_pixops_have_mmx): add newline at end of file
* io-*.c: make individual operations static, and add fill_vtable
functions which are exported. Fix the collection of type warnings
that surfaced, including a number of functions that didn't
properly take a GError and some that weren't
const-correct. Involved adding error handling for a few loaders.
* gdk-pixbuf-io.h: Add error reporting to stop_load function
* gdk-pixbuf-io.c (gdk_pixbuf_load_module): change to just look up
a function that fills in the GdkPixbufModule vtable, instead of
looking up all the image functions individually; this means we
can get type safety within modules for the loader functions.
Also it means you don't have to keep the statically compiled and
GModule versions in sync.
* test-gdk-pixbuf.c (main): remove gdk_pixbuf_init()
* make-inline-pixbuf.c (main): remove call to gdk_pixbuf_init()
* gdk-pixbuf.h: nuke gdk_pixbuf_init()
* gdk-pixbuf-animation.c (gdk_pixbuf_frame_get_type): g_type_init
() here
* gdk-pixbuf.c (gdk_pixbuf_get_type): g_type_init () here
* gdk-pixbuf-animation.c (gdk_pixbuf_animation_get_type):
g_type_init() here
2001-01-22 Havoc Pennington <hp@redhat.com>
* demos/testanimation.c: fix to reflect gdk-pixbuf changes
* demos/testpixbuf.c: fix to reflect gdk-pixbuf changes
* gtk/gdk-pixbuf-loader.c, gtk/gdk-pixbuf-loader.h:
Remove, move back to gdk-pixbuf
* gtk/gtktextiter.c, gtk/gtktextiter.h: add sentence equivalents
to all the word functions
* gtk/gtktextview.c (gtk_text_view_start_cursor_blink): return
before doing anything on NULL layout or if we don't have the focus
* gtk/testtext.c (fill_example_buffer): "justification"
* gtk/gtktexttag.h, gtk/gtktexttag.c: change the tag attribute
to be called "justification" not "justify"
* demos/gtk-demo/textview.c (create_tags): "justification"
* gtk/gtktextlayout.c (set_para_values): Handle char-wise wrapping
Diffstat (limited to 'gdk-pixbuf/io-pnm.c')
-rw-r--r-- | gdk-pixbuf/io-pnm.c | 64 |
1 files changed, 45 insertions, 19 deletions
diff --git a/gdk-pixbuf/io-pnm.c b/gdk-pixbuf/io-pnm.c index c352d611f8..87c392db5a 100644 --- a/gdk-pixbuf/io-pnm.c +++ b/gdk-pixbuf/io-pnm.c @@ -81,16 +81,17 @@ typedef struct { } PnmLoaderContext; -GdkPixbuf *gdk_pixbuf__pnm_image_load (FILE *f, GError **error); -gpointer gdk_pixbuf__pnm_image_begin_load (ModulePreparedNotifyFunc func, - ModuleUpdatedNotifyFunc func2, - ModuleFrameDoneNotifyFunc frame_done_func, - ModuleAnimationDoneNotifyFunc anim_done_func, - gpointer user_data, - GError **error); -void gdk_pixbuf__pnm_image_stop_load (gpointer context); -gboolean gdk_pixbuf__pnm_image_load_increment (gpointer context, guchar *buf, guint size, - GError **error); +static GdkPixbuf *gdk_pixbuf__pnm_image_load (FILE *f, GError **error); +static gpointer gdk_pixbuf__pnm_image_begin_load (ModulePreparedNotifyFunc func, + ModuleUpdatedNotifyFunc func2, + ModuleFrameDoneNotifyFunc frame_done_func, + ModuleAnimationDoneNotifyFunc anim_done_func, + gpointer user_data, + GError **error); +static gboolean gdk_pixbuf__pnm_image_stop_load (gpointer context, GError **error); +static gboolean gdk_pixbuf__pnm_image_load_increment (gpointer context, + const guchar *buf, guint size, + GError **error); static void explode_bitmap_into_buf (PnmLoaderContext *context); static void explode_gray_into_buf (PnmLoaderContext *context); @@ -644,7 +645,7 @@ pnm_read_scanline (PnmLoaderContext *context) } /* Shared library entry point */ -GdkPixbuf * +static GdkPixbuf * gdk_pixbuf__pnm_image_load (FILE *f, GError **error) { PnmLoaderContext context; @@ -759,7 +760,7 @@ gdk_pixbuf__pnm_image_load (FILE *f, GError **error) * return context (opaque to user) */ -gpointer +static gpointer gdk_pixbuf__pnm_image_begin_load (ModulePreparedNotifyFunc prepared_func, ModuleUpdatedNotifyFunc updated_func, ModuleFrameDoneNotifyFunc frame_done_func, @@ -795,17 +796,29 @@ gdk_pixbuf__pnm_image_begin_load (ModulePreparedNotifyFunc prepared_func, * * free context, unref gdk_pixbuf */ -void -gdk_pixbuf__pnm_image_stop_load (gpointer data) +static gboolean +gdk_pixbuf__pnm_image_stop_load (gpointer data, + GError **error) { PnmLoaderContext *context = (PnmLoaderContext *) data; + gboolean retval = TRUE; - g_return_if_fail (context != NULL); + g_return_val_if_fail (context != NULL, TRUE); if (context->pixbuf) gdk_pixbuf_unref (context->pixbuf); + + if (context->inbuf.nbytes > 0) { + g_set_error (error, + GDK_PIXBUF_ERROR, + GDK_PIXBUF_ERROR_CORRUPT_IMAGE, + _("Unexpected end of PNM image data")); + retval = FALSE; + } g_free (context); + + return retval; } /* @@ -815,8 +828,9 @@ gdk_pixbuf__pnm_image_stop_load (gpointer data) * * append image data onto inrecrementally built output image */ -gboolean -gdk_pixbuf__pnm_image_load_increment (gpointer data, guchar *buf, guint size, +static gboolean +gdk_pixbuf__pnm_image_load_increment (gpointer data, + const guchar *buf, guint size, GError **error) { PnmLoaderContext *context = (PnmLoaderContext *)data; @@ -897,8 +911,11 @@ gdk_pixbuf__pnm_image_load_increment (gpointer data, guchar *buf, guint size, context->height); if (context->pixbuf == NULL) { - /* Failed to allocate memory */ - g_error ("Couldn't allocate gdkpixbuf"); + g_set_error (error, + GDK_PIXBUF_ERROR, + GDK_PIXBUF_ERROR_INSUFFICIENT_MEMORY, + _("Insufficient memory to load PNM file")); + return FALSE; } context->pixels = context->pixbuf->pixels; @@ -938,3 +955,12 @@ gdk_pixbuf__pnm_image_load_increment (gpointer data, guchar *buf, guint size, return TRUE; } + +void +gdk_pixbuf__pnm_fill_vtable (GdkPixbufModule *module) +{ + module->load = gdk_pixbuf__pnm_image_load; + module->begin_load = gdk_pixbuf__pnm_image_begin_load; + module->stop_load = gdk_pixbuf__pnm_image_stop_load; + module->load_increment = gdk_pixbuf__pnm_image_load_increment; +} |