CdkPixbuf.PixbufModule
Description: Reference for CdkPixbuf.PixbufModule

### 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.