gdk-pixbuf-Module-Interface: Module Interface
Detailed Description
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 fillInfo
and
a GdkPixbufModuleFillVtableFunc function named
fillVtable
.
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 fillInfo
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
fillVtable
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 (normallylibdir,
unless overridden by the environment variableGDK_PIXBUF_MODULEDIR)
- callgdk-pixbuf-query-loadersto update the
module file (normallysysconfdir,
unless overridden by the environment variableGDK_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
.References
http://developer.gnome.org/doc/API/2.0/gdk-pixbuf/gdk-pixbuf-Module-Interface.html