GdkPixbuf.PixbufModule
Description: Reference for GdkPixbuf.PixbufModule

### Struct

# GdkPixbuf.PixbufModule

#### Description [src]

    struct GdkPixbufModule {
      char* module_name;
      char* module_path;
      GModule* module;
      GdkPixbufFormat* info;
      GdkPixbuf* (* load) (
        FILE* f,
        GError** error
      );
      GdkPixbuf* (* load_xpm_data) (
        const char** data
      );
      gpointer (* begin_load) (
        GdkPixbufModuleSizeFunc size_func,
        GdkPixbufModulePreparedFunc prepared_func,
        GdkPixbufModuleUpdatedFunc updated_func,
        gpointer user_data,
        GError** error
      );
      gboolean (* stop_load) (
        gpointer context,
        GError** error
      );
      gboolean (* load_increment) (
        gpointer context,
        const guchar* buf,
        guint size,
        GError** error
      );
      GdkPixbufAnimation* (* load_animation) (
        FILE* f,
        GError** error
      );
      gboolean (* save) (
        FILE* f,
        GdkPixbuf* pixbuf,
        gchar** param_keys,
        gchar** param_values,
        GError** error
      );
      gboolean (* save_to_callback) (
        GdkPixbufSaveFunc save_func,
        gpointer user_data,
        GdkPixbuf* pixbuf,
        gchar** option_keys,
        gchar** option_values,
        GError** error
      );
      gboolean (* is_save_option_supported) (
        const gchar* option_key
      );
      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` | No description available.
`load_xpm_data` | No description available.
`begin_load` | No description available.
`stop_load` | No description available.
`load_increment` | No description available.
`load_animation` | No description available.
`save` | No description available.
`save_to_callback` | No description available.
`is_save_option_supported` | No description available.
`_reserved1` | No description available.
`_reserved2` | No description available.
`_reserved3` | No description available.
`_reserved4` | No description available.