Struct

CdkPixbufPixbufModule

Description [src]

struct CdkPixbufModule {
  char* module_name;
  char* module_path;
  GModule* module;
  CdkPixbufFormat* info;
  CdkPixbufModuleLoadFunc load;
  CdkPixbufModuleLoadXpmDataFunc load_xpm_data;
  CdkPixbufModuleBeginLoadFunc begin_load;
  CdkPixbufModuleStopLoadFunc stop_load;
  CdkPixbufModuleIncrementLoadFunc load_increment;
  CdkPixbufModuleLoadAnimationFunc load_animation;
  CdkPixbufModuleSaveFunc save;
  CdkPixbufModuleSaveCallbackFunc save_to_callback;
  CdkPixbufModuleSaveOptionSupportedFunc is_save_option_supported;
  void (* _reserved1) (
void
  );;
  void (* _reserved2) (
void
  );;
  void (* _reserved3) (
void
  );;
  void (* _reserved4) (
void
  );;
}

A CdkPixbufModule contains the necessary functions to load and save images in a certain file format.

If CdkPixbuf 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 CdkPixbuf interfaces needed for implementing modules are contained in cdk-pixbuf-io.h (and cdk-pixbuf-animation.h if the module supports animations). They are not covered by the same stability guarantees as the regular CdkPixbuf API. To underline this fact, they are protected by the CDK_PIXBUF_ENABLE_BACKEND pre-processor symbol.

Each loadable module must contain a CdkPixbufModuleFillVtableFunc function named fill_vtable, which will get called when the module is loaded and must set the function pointers of the CdkPixbufModule.

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, cdk-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 CdkPixbuf to obtain the list of available loaders and their signatures.

Modules may only implement a subset of the functionality available via CdkPixbufModule. If a particular functionality is not implemented, the fill_vtable function will simply not set the corresponding function pointers of the CdkPixbufModule 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 CdkPixbuf 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/cdk-pixbuf-2.0/$version/loaders, unless overridden by the environment variable CDK_PIXBUF_MODULEDIR)
  • call cdk-pixbuf-query-loaders to update the module file (normally $libdir/cdk-pixbuf-2.0/$version/loaders.cache, unless overridden by the environment variable CDK_PIXBUF_MODULE_FILE).
Structure members
module_name: char*

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: char*

The path from which the module is loaded.

module: GModule

The loaded GModule.

info: CdkPixbufFormat

A CdkPixbufFormat holding information about the module.

load: CdkPixbufModuleLoadFunc

Loads an image from a file.

load_xpm_data: CdkPixbufModuleLoadXpmDataFunc

Loads an image from data in memory.

begin_load: CdkPixbufModuleBeginLoadFunc

Begins an incremental load.

stop_load: CdkPixbufModuleStopLoadFunc

Stops an incremental load.

load_increment: CdkPixbufModuleIncrementLoadFunc

Continues an incremental load.

load_animation: CdkPixbufModuleLoadAnimationFunc

Loads an animation from a file.

save: CdkPixbufModuleSaveFunc

Saves a CdkPixbuf to a file.

save_to_callback: CdkPixbufModuleSaveCallbackFunc

Saves a CdkPixbuf by calling the given CdkPixbufSaveFunc.

is_save_option_supported: CdkPixbufModuleSaveOptionSupportedFunc

Returns whether a save option key is supported by the module.

_reserved1: void (* _reserved1) ( void )

No description available.

_reserved2: void (* _reserved2) ( void )

No description available.

_reserved3: void (* _reserved3) ( void )

No description available.

_reserved4: void (* _reserved4) ( void )

No description available.