PixbufModuleProtocol

public protocol PixbufModuleProtocol

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)

The PixbufModuleProtocol protocol exposes the methods and properties of an underlying GdkPixbufModule instance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, see PixbufModule. Alternatively, use PixbufModuleRef as a lighweight, unowned reference if you already have an instance you just want to use.

  • ptr

    Untyped pointer to the underlying GdkPixbufModule instance.

    Declaration

    Swift

    var ptr: UnsafeMutableRawPointer! { get }
  • _ptr Default implementation

    Typed pointer to the underlying GdkPixbufModule instance.

    Default Implementation

    Return the stored, untyped pointer as a typed pointer to the GdkPixbufModule instance.

    Declaration

    Swift

    var _ptr: UnsafeMutablePointer<GdkPixbufModule>! { get }
  • Required Initialiser for types conforming to PixbufModuleProtocol

    Declaration

    Swift

    init(raw: UnsafeMutableRawPointer)

PixbufModule Record: PixbufModuleProtocol extension (methods and fields)

  • moduleName Extension method

    the name of the module, usually the same as the usual file extension for images of this type, eg. “xpm”, “jpeg” or “png”.

    Declaration

    Swift

    @inlinable
    var moduleName: UnsafeMutablePointer<CChar>! { get set }
  • modulePath Extension method

    the path from which the module is loaded.

    Declaration

    Swift

    @inlinable
    var modulePath: UnsafeMutablePointer<CChar>! { get set }
  • module Extension method

    the loaded GModule.

    Declaration

    Swift

    @inlinable
    var module: ModuleRef! { get set }
  • info Extension method

    a GdkPixbufFormat holding information about the module.

    Declaration

    Swift

    @inlinable
    var info: PixbufFormatRef! { get set }
  • load Extension method

    loads an image from a file.

    Declaration

    Swift

    @inlinable
    var load: GdkPixbufModuleLoadFunc! { get set }
  • loadXpmData Extension method

    loads an image from data in memory.

    Declaration

    Swift

    @inlinable
    var loadXpmData: GdkPixbufModuleLoadXpmDataFunc! { get set }
  • beginLoad Extension method

    begins an incremental load.

    Declaration

    Swift

    @inlinable
    var beginLoad: GdkPixbufModuleBeginLoadFunc! { get set }
  • stopLoad Extension method

    stops an incremental load.

    Declaration

    Swift

    @inlinable
    var stopLoad: GdkPixbufModuleStopLoadFunc! { get set }
  • loadIncrement Extension method

    continues an incremental load.

    Declaration

    Swift

    @inlinable
    var loadIncrement: GdkPixbufModuleIncrementLoadFunc! { get set }
  • loadAnimation Extension method

    loads an animation from a file.

    Declaration

    Swift

    @inlinable
    var loadAnimation: GdkPixbufModuleLoadAnimationFunc! { get set }
  • save Extension method

    saves a GdkPixbuf to a file.

    Declaration

    Swift

    @inlinable
    var save: GdkPixbufModuleSaveFunc! { get set }
  • saveToCallback Extension method

    saves a GdkPixbuf by calling the given GdkPixbufSaveFunc.

    Declaration

    Swift

    @inlinable
    var saveToCallback: GdkPixbufModuleSaveCallbackFunc! { get set }
  • isSaveOptionSupported Extension method

    returns whether a save option key is supported by the module

    Declaration

    Swift

    @inlinable
    var isSaveOptionSupported: GdkPixbufModuleSaveOptionSupportedFunc! { get set }