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 variable GDK_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 variable GDK_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 given GdkPixbufSaveFunc.

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.