Struct
GdkPixbufPixbufModule
Description [src]
struct GdkPixbufModule {
char* module_name;
char* module_path;
GModule* module;
GdkPixbufFormat* info;
GdkPixbufModuleLoadFunc load;
GdkPixbufModuleLoadXpmDataFunc load_xpm_data;
GdkPixbufModuleBeginLoadFunc begin_load;
GdkPixbufModuleStopLoadFunc stop_load;
GdkPixbufModuleIncrementLoadFunc load_increment;
GdkPixbufModuleLoadAnimationFunc load_animation;
GdkPixbufModuleSaveFunc save;
GdkPixbufModuleSaveCallbackFunc save_to_callback;
GdkPixbufModuleSaveOptionSupportedFunc is_save_option_supported;
void (* _reserved1) (
void
);;
void (* _reserved2) (
void
);;
void (* _reserved3) (
void
);;
void (* _reserved4) (
void
);;
}
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
).
Structure members
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.save_to_callback
Saves a
GdkPixbuf
by calling the givenGdkPixbufSaveFunc
.is_save_option_supported
Returns whether a save option key is supported by the module.
_reserved1
No description available.
_reserved2
No description available.
_reserved3
No description available.
_reserved4
No description available.