PixbufModule
A GdkPixbufModule
contains the necessary functions to load and save images in a certain file format.
If GdkPixbuf
has been compiled with GModule
support, it can be extended by modules which can load (and perhaps also save) new image and animation formats.
Implementing modules
The GdkPixbuf
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 GdkPixbuf API. To underline this fact, they are protected by the GDK_PIXBUF_ENABLE_BACKEND
pre-processor symbol.
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
.
In order to make format-checking work before actually loading the modules (which may require calling dlopen
to load 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 GdkPixbuf
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 GdkPixbuf
can supply a generic load
implementation wrapping the incremental loading.
Installing modules
Installing a module is a two-step process:
copy the module file(s) to the loader directory (normally
$libdir/gdk-pixbuf-2.0/$version/loaders
, unless overridden by the environment variableGDK_PIXBUF_MODULEDIR
)call
gdk-pixbuf-query-loaders
to update the module file (normally$libdir/gdk-pixbuf-2.0/$version/loaders.cache
, unless overridden by the environment variableGDK_PIXBUF_MODULE_FILE
)
Skipped during bindings generation
field
module
: GModule.Modulefield
load
: PixbufModuleLoadFuncfield
load_xpm_data
: PixbufModuleLoadXpmDataFuncfield
begin_load
: PixbufModuleBeginLoadFuncfield
stop_load
: PixbufModuleStopLoadFuncfield
load_increment
: PixbufModuleIncrementLoadFuncfield
load_animation
: PixbufModuleLoadAnimationFuncfield
save
: PixbufModuleSaveFuncfield
save_to_callback
: PixbufModuleSaveCallbackFuncfield
is_save_option_supported
: PixbufModuleSaveOptionSupportedFuncfield
_reserved1
: Fields with callbacks are not supportedfield
_reserved2
: Fields with callbacks are not supportedfield
_reserved3
: Fields with callbacks are not supportedfield
_reserved4
: Fields with callbacks are not supported
Constructors
Allocate a new PixbufModule.
Allocate a new PixbufModule using the provided AutofreeScope.
Allocate a new PixbufModule.
Allocate a new PixbufModule using the provided AutofreeScope.
Properties
a GdkPixbufFormat
holding information about the module.
the name of the module, usually the same as the usual file extension for images of this type, eg. "xpm", "jpeg" or "png".
the path from which the module is loaded.