Gimp.RunSaveFunc
Description: Reference for Gimp.RunSaveFunc

### Function

# GimpRunSaveFunc

unstable since: 3.0

#### Declaration

    GimpValueArray*
    (* GimpRunSaveFunc) (
      GimpProcedure* procedure,
      GimpRunMode run_mode,
      GimpImage* image,
      gint n_drawables,
      GimpDrawable** drawables,
      GFile* file,
      GimpMetadata* metadata,
      GimpProcedureConfig* config,
      gpointer run_data
    )

#### Description [src]

The save function is run during the lifetime of the GIMP session, each time a plug-in save procedure is called.

If a MimeType was passed in gimp_save_procedure_new(), then `metadata` will be non-`NULL` and can be tweaked by the `run()` function if needed. Otherwise you can let it as-is and it will be stored back into the exported `file` according to rules on metadata export shared across formats.

Available since: 3.0

#### Parameters

`procedure`

  Type: `GimpProcedure`

  The `GimpProcedure` that runs.

  The data is owned by the caller of the function.

`run_mode`

  Type: `GimpRunMode`

  The `GimpRunMode`.

`image`

  Type: `GimpImage`

  The image to save.

  The data is owned by the caller of the function.

`n_drawables`

  Type: `gint`

  The number of drawables to save.

`drawables`

  Type: An array of `GimpDrawable*`

  The drawables to save.

  The length of the array is specified in the `n_drawables` argument.
  The data is owned by the caller of the function.

`file`

  Type: `GFile`

  The `GFile` to save to.

  The data is owned by the caller of the function.

`metadata`

  Type: `GimpMetadata`

  Metadata object prepared for the mimetype passed in `gimp_file_procedure_set_mime_types()` if export_metadata argument was set in gimp_save_procedure_new().

  The data is owned by the caller of the function.

`config`

  Type: `GimpProcedureConfig`

  The `procedure`‘s remaining arguments.

  The data is owned by the caller of the function.

`run_data`

  Type: `gpointer`

  The run_data given in gimp_save_procedure_new().

  The argument can be `NULL`.
  The data is owned by the caller of the function.

#### Return value

Type: `GimpValueArray`

The `procedure`‘s return values.

The caller of the function takes ownership of the data, and is responsible for freeing it.