GdkPixbuf.PixbufModule
Description: Reference for GdkPixbuf.PixbufModule

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