Module Interface
Extending &gdk-pixbuf;
If &gdk-pixbuf; has been compiled with GModule support, it can be extended by
modules which can load (and perhaps also save) new image and animation
formats. Each loadable module must export a
#GdkPixbufModuleFillInfoFunc function named fill_info and
a #GdkPixbufModuleFillVtableFunc function named
fill_vtable.
In order to make format-checking work before actually loading the modules
(which may require dlopening image libraries), modules export their
signatures (and other information) via the fill_info
function. An external utility, gdk-pixbuf-query-loaders, uses
this to create a text file containing a list of all available loaders and
their signatures. This file is then read at runtime by &gdk-pixbuf; to obtain
the list of available loaders and their signatures.
Modules may only implement a subset of the functionality available via
#GdkPixbufModule. If a particular functionality is not implemented, the
fill_vtable function will simply not set the corresponding
function pointers of the #GdkPixbufModule structure. If a module supports
incremental loading (i.e. provides #begin_load, #stop_load and
#load_increment), it doesn't have to implement #load, since &gdk-pixbuf; can
supply a generic #load implementation wrapping the incremental loading.
Installing a module is a two-step process:
copy the module file(s) to the loader directory (normally
libdir/gtk-2.0/version/loaders,
unless overridden by the environment variable
GDK_PIXBUF_MODULEDIR)
call gdk-pixbuf-query-loaders to update the
module file (normally
sysconfdir/gtk-2.0/gdk-pixbuf.loaders,
unless overridden by the environment variable
GDK_PIXBUF_MODULE_FILE)
The &gdk-pixbuf; interfaces needed for implementing modules are contained in
gdk-pixbuf-io.h (and
gdk-pixbuf-animation.h if the module supports animations).
They are not covered by the same stability guarantees as the regular
&gdk-pixbuf; API. To underline this fact, they are protected by
#ifdef GDK_PIXBUF_ENABLE_BACKEND.
A #GdkPixbufModule contains the necessary functions to load and save
images in a certain file format.
A #GdkPixbufModule can be loaded dynamically from a #GModule.
Each loadable module must contain a #GdkPixbufModuleFillVtableFunc function
named fill_vtable, which will get called when the module
is loaded and must set the function pointers of the #GdkPixbufModule.
@module_name: the name of the module, usually the same as the
usual file extension for images of this type, eg. "xpm", "jpeg" or "png".
@module_path: the path from which the module is loaded.
@module: the loaded #GModule.
@info: a #GdkPixbufFormat holding information about the module.
@load: loads an image from a file.
@load_xpm_data: loads an image from data in memory.
@begin_load: begins an incremental load.
@stop_load: stops an incremental load.
@load_increment: continues an incremental load.
@load_animation: loads an animation from a file.
@save: saves a #GdkPixbuf to a file.
@_reserved1:
@_reserved2:
@_reserved3:
@_reserved4:
@_reserved5:
@_reserved6: