Turn all ID param specs into object param specs (e.g. GimpParamImageID becomes GimpParamImage) and convert between IDs and objects in gimpgpparams.c directly above the the wire protocol, so all of app/, libgimp/ and plug-ins/ can deal directly with objects down to the lowest level and not care about IDs. Use the actual object param specs for procedure arguments and return values again instead of a plain g_param_spec_object() and bring back the none_ok parameter. This implies changing the PDB type checking functions to work on pure integers instead of IDs (one can't check whether object creation is possible if performing that check requires the object to already exist). For example gimp_foo_is_valid() becomes gimp_foo_id_is_valid() and is not involved in automatic object creation magic at the protocol level. Added wrappers which still say gimp_foo_is_valid() and take the respective objects. Adapted all code, and it all becomes nicer and less convoluted, even the generated PDB wrappers in app/ and libgimp/.
925 lines
32 KiB
C
925 lines
32 KiB
C
/* LIBGIMP - The GIMP Library
|
|
* Copyright (C) 1995-2003 Peter Mattis and Spencer Kimball
|
|
*
|
|
* gimpfileops_pdb.c
|
|
*
|
|
* This library is free software: you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 3 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library. If not, see
|
|
* <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
/* NOTE: This file is auto-generated by pdbgen.pl */
|
|
|
|
#include "config.h"
|
|
|
|
#include "gimp.h"
|
|
|
|
|
|
/**
|
|
* SECTION: gimpfileops
|
|
* @title: gimpfileops
|
|
* @short_description: Image file operations (load, save, etc.)
|
|
*
|
|
* Image file operations (load, save, etc.)
|
|
**/
|
|
|
|
|
|
/**
|
|
* gimp_file_load:
|
|
* @run_mode: The run mode.
|
|
* @filename: The name of the file to load.
|
|
* @raw_filename: The name as entered by the user.
|
|
*
|
|
* Loads an image file by invoking the right load handler.
|
|
*
|
|
* This procedure invokes the correct file load handler using magic if
|
|
* possible, and falling back on the file's extension and/or prefix if
|
|
* not. The name of the file to load is typically a full pathname, and
|
|
* the name entered is what the user actually typed before prepending a
|
|
* directory path. The reason for this is that if the user types
|
|
* https://www.gimp.org/foo.png he wants to fetch a URL, and the full
|
|
* pathname will not look like a URL.
|
|
*
|
|
* Returns: (transfer none): The output image.
|
|
**/
|
|
GimpImage *
|
|
gimp_file_load (GimpRunMode run_mode,
|
|
const gchar *filename,
|
|
const gchar *raw_filename)
|
|
{
|
|
GimpPDB *pdb = gimp_get_pdb ();
|
|
GimpValueArray *args;
|
|
GimpValueArray *return_vals;
|
|
GimpImage *image = NULL;
|
|
|
|
args = gimp_value_array_new_from_types (NULL,
|
|
GIMP_TYPE_RUN_MODE, run_mode,
|
|
G_TYPE_STRING, filename,
|
|
G_TYPE_STRING, raw_filename,
|
|
G_TYPE_NONE);
|
|
|
|
if (pdb)
|
|
return_vals = gimp_pdb_run_procedure_array (pdb,
|
|
"gimp-file-load",
|
|
args);
|
|
else
|
|
return_vals = gimp_run_procedure_array ("gimp-file-load",
|
|
args);
|
|
gimp_value_array_unref (args);
|
|
|
|
if (g_value_get_enum (gimp_value_array_index (return_vals, 0)) == GIMP_PDB_SUCCESS)
|
|
image = g_value_get_object (gimp_value_array_index (return_vals, 1));
|
|
|
|
gimp_value_array_unref (return_vals);
|
|
|
|
return image;
|
|
}
|
|
|
|
/**
|
|
* _gimp_file_load: (skip)
|
|
* @run_mode: The run mode.
|
|
* @filename: The name of the file to load.
|
|
* @raw_filename: The name as entered by the user.
|
|
*
|
|
* Loads an image file by invoking the right load handler.
|
|
*
|
|
* This procedure invokes the correct file load handler using magic if
|
|
* possible, and falling back on the file's extension and/or prefix if
|
|
* not. The name of the file to load is typically a full pathname, and
|
|
* the name entered is what the user actually typed before prepending a
|
|
* directory path. The reason for this is that if the user types
|
|
* https://www.gimp.org/foo.png he wants to fetch a URL, and the full
|
|
* pathname will not look like a URL.
|
|
*
|
|
* Returns: The output image.
|
|
**/
|
|
gint32
|
|
_gimp_file_load (GimpRunMode run_mode,
|
|
const gchar *filename,
|
|
const gchar *raw_filename)
|
|
{
|
|
GimpPDB *pdb = gimp_get_pdb ();
|
|
GimpValueArray *args;
|
|
GimpValueArray *return_vals;
|
|
gint32 image_ID = -1;
|
|
|
|
args = gimp_value_array_new_from_types (NULL,
|
|
GIMP_TYPE_RUN_MODE, run_mode,
|
|
G_TYPE_STRING, filename,
|
|
G_TYPE_STRING, raw_filename,
|
|
G_TYPE_NONE);
|
|
|
|
if (pdb)
|
|
return_vals = gimp_pdb_run_procedure_array (pdb,
|
|
"gimp-file-load",
|
|
args);
|
|
else
|
|
return_vals = gimp_run_procedure_array ("gimp-file-load",
|
|
args);
|
|
gimp_value_array_unref (args);
|
|
|
|
if (g_value_get_enum (gimp_value_array_index (return_vals, 0)) == GIMP_PDB_SUCCESS)
|
|
image_ID = gimp_image_get_id (g_value_get_object (gimp_value_array_index (return_vals, 1)));
|
|
|
|
gimp_value_array_unref (return_vals);
|
|
|
|
return image_ID;
|
|
}
|
|
|
|
/**
|
|
* gimp_file_load_layer:
|
|
* @run_mode: The run mode.
|
|
* @image: Destination image.
|
|
* @filename: The name of the file to load.
|
|
*
|
|
* Loads an image file as a layer for an existing image.
|
|
*
|
|
* This procedure behaves like the file-load procedure but opens the
|
|
* specified image as a layer for an existing image. The returned layer
|
|
* needs to be added to the existing image with
|
|
* gimp_image_insert_layer().
|
|
*
|
|
* Returns: (transfer none): The layer created when loading the image file.
|
|
*
|
|
* Since: 2.4
|
|
**/
|
|
GimpLayer *
|
|
gimp_file_load_layer (GimpRunMode run_mode,
|
|
GimpImage *image,
|
|
const gchar *filename)
|
|
{
|
|
GimpPDB *pdb = gimp_get_pdb ();
|
|
GimpValueArray *args;
|
|
GimpValueArray *return_vals;
|
|
GimpLayer *layer = NULL;
|
|
|
|
args = gimp_value_array_new_from_types (NULL,
|
|
GIMP_TYPE_RUN_MODE, run_mode,
|
|
GIMP_TYPE_IMAGE, image,
|
|
G_TYPE_STRING, filename,
|
|
G_TYPE_NONE);
|
|
|
|
if (pdb)
|
|
return_vals = gimp_pdb_run_procedure_array (pdb,
|
|
"gimp-file-load-layer",
|
|
args);
|
|
else
|
|
return_vals = gimp_run_procedure_array ("gimp-file-load-layer",
|
|
args);
|
|
gimp_value_array_unref (args);
|
|
|
|
if (g_value_get_enum (gimp_value_array_index (return_vals, 0)) == GIMP_PDB_SUCCESS)
|
|
layer = g_value_get_object (gimp_value_array_index (return_vals, 1));
|
|
|
|
gimp_value_array_unref (return_vals);
|
|
|
|
return layer;
|
|
}
|
|
|
|
/**
|
|
* _gimp_file_load_layer: (skip)
|
|
* @run_mode: The run mode.
|
|
* @image_ID: Destination image.
|
|
* @filename: The name of the file to load.
|
|
*
|
|
* Loads an image file as a layer for an existing image.
|
|
*
|
|
* This procedure behaves like the file-load procedure but opens the
|
|
* specified image as a layer for an existing image. The returned layer
|
|
* needs to be added to the existing image with
|
|
* gimp_image_insert_layer().
|
|
*
|
|
* Returns: The layer created when loading the image file.
|
|
*
|
|
* Since: 2.4
|
|
**/
|
|
gint32
|
|
_gimp_file_load_layer (GimpRunMode run_mode,
|
|
gint32 image_ID,
|
|
const gchar *filename)
|
|
{
|
|
GimpPDB *pdb = gimp_get_pdb ();
|
|
GimpValueArray *args;
|
|
GimpValueArray *return_vals;
|
|
gint32 layer_ID = -1;
|
|
|
|
args = gimp_value_array_new_from_types (NULL,
|
|
GIMP_TYPE_RUN_MODE, run_mode,
|
|
GIMP_TYPE_IMAGE, gimp_image_get_by_id (image_ID),
|
|
G_TYPE_STRING, filename,
|
|
G_TYPE_NONE);
|
|
|
|
if (pdb)
|
|
return_vals = gimp_pdb_run_procedure_array (pdb,
|
|
"gimp-file-load-layer",
|
|
args);
|
|
else
|
|
return_vals = gimp_run_procedure_array ("gimp-file-load-layer",
|
|
args);
|
|
gimp_value_array_unref (args);
|
|
|
|
if (g_value_get_enum (gimp_value_array_index (return_vals, 0)) == GIMP_PDB_SUCCESS)
|
|
layer_ID = gimp_item_get_id (g_value_get_object (gimp_value_array_index (return_vals, 1)));
|
|
|
|
gimp_value_array_unref (return_vals);
|
|
|
|
return layer_ID;
|
|
}
|
|
|
|
/**
|
|
* gimp_file_load_layers:
|
|
* @run_mode: The run mode.
|
|
* @image: Destination image.
|
|
* @filename: The name of the file to load.
|
|
* @num_layers: (out): The number of loaded layers.
|
|
*
|
|
* Loads an image file as layers for an existing image.
|
|
*
|
|
* This procedure behaves like the file-load procedure but opens the
|
|
* specified image as layers for an existing image. The returned layers
|
|
* needs to be added to the existing image with
|
|
* gimp_image_insert_layer().
|
|
*
|
|
* Returns: (array length=num_layers) (element-type gint32) (transfer full):
|
|
* The list of loaded layers.
|
|
* The returned value must be freed with g_free().
|
|
*
|
|
* Since: 2.4
|
|
**/
|
|
gint *
|
|
gimp_file_load_layers (GimpRunMode run_mode,
|
|
GimpImage *image,
|
|
const gchar *filename,
|
|
gint *num_layers)
|
|
{
|
|
GimpPDB *pdb = gimp_get_pdb ();
|
|
GimpValueArray *args;
|
|
GimpValueArray *return_vals;
|
|
gint *layer_ids = NULL;
|
|
|
|
args = gimp_value_array_new_from_types (NULL,
|
|
GIMP_TYPE_RUN_MODE, run_mode,
|
|
GIMP_TYPE_IMAGE, image,
|
|
G_TYPE_STRING, filename,
|
|
G_TYPE_NONE);
|
|
|
|
if (pdb)
|
|
return_vals = gimp_pdb_run_procedure_array (pdb,
|
|
"gimp-file-load-layers",
|
|
args);
|
|
else
|
|
return_vals = gimp_run_procedure_array ("gimp-file-load-layers",
|
|
args);
|
|
gimp_value_array_unref (args);
|
|
|
|
*num_layers = 0;
|
|
|
|
if (g_value_get_enum (gimp_value_array_index (return_vals, 0)) == GIMP_PDB_SUCCESS)
|
|
{
|
|
*num_layers = g_value_get_int (gimp_value_array_index (return_vals, 1));
|
|
layer_ids = gimp_value_dup_int32_array (gimp_value_array_index (return_vals, 2));
|
|
}
|
|
|
|
gimp_value_array_unref (return_vals);
|
|
|
|
return layer_ids;
|
|
}
|
|
|
|
/**
|
|
* _gimp_file_load_layers: (skip)
|
|
* @run_mode: The run mode.
|
|
* @image_ID: Destination image.
|
|
* @filename: The name of the file to load.
|
|
* @num_layers: (out): The number of loaded layers.
|
|
*
|
|
* Loads an image file as layers for an existing image.
|
|
*
|
|
* This procedure behaves like the file-load procedure but opens the
|
|
* specified image as layers for an existing image. The returned layers
|
|
* needs to be added to the existing image with
|
|
* gimp_image_insert_layer().
|
|
*
|
|
* Returns: (array length=num_layers): The list of loaded layers.
|
|
* The returned value must be freed with g_free().
|
|
*
|
|
* Since: 2.4
|
|
**/
|
|
gint *
|
|
_gimp_file_load_layers (GimpRunMode run_mode,
|
|
gint32 image_ID,
|
|
const gchar *filename,
|
|
gint *num_layers)
|
|
{
|
|
GimpPDB *pdb = gimp_get_pdb ();
|
|
GimpValueArray *args;
|
|
GimpValueArray *return_vals;
|
|
gint *layer_ids = NULL;
|
|
|
|
args = gimp_value_array_new_from_types (NULL,
|
|
GIMP_TYPE_RUN_MODE, run_mode,
|
|
GIMP_TYPE_IMAGE, gimp_image_get_by_id (image_ID),
|
|
G_TYPE_STRING, filename,
|
|
G_TYPE_NONE);
|
|
|
|
if (pdb)
|
|
return_vals = gimp_pdb_run_procedure_array (pdb,
|
|
"gimp-file-load-layers",
|
|
args);
|
|
else
|
|
return_vals = gimp_run_procedure_array ("gimp-file-load-layers",
|
|
args);
|
|
gimp_value_array_unref (args);
|
|
|
|
*num_layers = 0;
|
|
|
|
if (g_value_get_enum (gimp_value_array_index (return_vals, 0)) == GIMP_PDB_SUCCESS)
|
|
{
|
|
*num_layers = g_value_get_int (gimp_value_array_index (return_vals, 1));
|
|
layer_ids = gimp_value_dup_int32_array (gimp_value_array_index (return_vals, 2));
|
|
}
|
|
|
|
gimp_value_array_unref (return_vals);
|
|
|
|
return layer_ids;
|
|
}
|
|
|
|
/**
|
|
* gimp_file_save:
|
|
* @run_mode: The run mode.
|
|
* @image: Input image.
|
|
* @drawable: Drawable to save.
|
|
* @filename: The name of the file to save the image in.
|
|
* @raw_filename: The name as entered by the user.
|
|
*
|
|
* Saves a file by extension.
|
|
*
|
|
* This procedure invokes the correct file save handler according to
|
|
* the file's extension and/or prefix. The name of the file to save is
|
|
* typically a full pathname, and the name entered is what the user
|
|
* actually typed before prepending a directory path. The reason for
|
|
* this is that if the user types https://www.gimp.org/foo.png she
|
|
* wants to fetch a URL, and the full pathname will not look like a
|
|
* URL.
|
|
*
|
|
* Returns: TRUE on success.
|
|
**/
|
|
gboolean
|
|
gimp_file_save (GimpRunMode run_mode,
|
|
GimpImage *image,
|
|
GimpDrawable *drawable,
|
|
const gchar *filename,
|
|
const gchar *raw_filename)
|
|
{
|
|
GimpPDB *pdb = gimp_get_pdb ();
|
|
GimpValueArray *args;
|
|
GimpValueArray *return_vals;
|
|
gboolean success = TRUE;
|
|
|
|
args = gimp_value_array_new_from_types (NULL,
|
|
GIMP_TYPE_RUN_MODE, run_mode,
|
|
GIMP_TYPE_IMAGE, image,
|
|
GIMP_TYPE_DRAWABLE, drawable,
|
|
G_TYPE_STRING, filename,
|
|
G_TYPE_STRING, raw_filename,
|
|
G_TYPE_NONE);
|
|
|
|
if (pdb)
|
|
return_vals = gimp_pdb_run_procedure_array (pdb,
|
|
"gimp-file-save",
|
|
args);
|
|
else
|
|
return_vals = gimp_run_procedure_array ("gimp-file-save",
|
|
args);
|
|
gimp_value_array_unref (args);
|
|
|
|
success = g_value_get_enum (gimp_value_array_index (return_vals, 0)) == GIMP_PDB_SUCCESS;
|
|
|
|
gimp_value_array_unref (return_vals);
|
|
|
|
return success;
|
|
}
|
|
|
|
/**
|
|
* _gimp_file_save: (skip)
|
|
* @run_mode: The run mode.
|
|
* @image_ID: Input image.
|
|
* @drawable_ID: Drawable to save.
|
|
* @filename: The name of the file to save the image in.
|
|
* @raw_filename: The name as entered by the user.
|
|
*
|
|
* Saves a file by extension.
|
|
*
|
|
* This procedure invokes the correct file save handler according to
|
|
* the file's extension and/or prefix. The name of the file to save is
|
|
* typically a full pathname, and the name entered is what the user
|
|
* actually typed before prepending a directory path. The reason for
|
|
* this is that if the user types https://www.gimp.org/foo.png she
|
|
* wants to fetch a URL, and the full pathname will not look like a
|
|
* URL.
|
|
*
|
|
* Returns: TRUE on success.
|
|
**/
|
|
gboolean
|
|
_gimp_file_save (GimpRunMode run_mode,
|
|
gint32 image_ID,
|
|
gint32 drawable_ID,
|
|
const gchar *filename,
|
|
const gchar *raw_filename)
|
|
{
|
|
GimpPDB *pdb = gimp_get_pdb ();
|
|
GimpValueArray *args;
|
|
GimpValueArray *return_vals;
|
|
gboolean success = TRUE;
|
|
|
|
args = gimp_value_array_new_from_types (NULL,
|
|
GIMP_TYPE_RUN_MODE, run_mode,
|
|
GIMP_TYPE_IMAGE, gimp_image_get_by_id (image_ID),
|
|
GIMP_TYPE_DRAWABLE, gimp_item_get_by_id (drawable_ID),
|
|
G_TYPE_STRING, filename,
|
|
G_TYPE_STRING, raw_filename,
|
|
G_TYPE_NONE);
|
|
|
|
if (pdb)
|
|
return_vals = gimp_pdb_run_procedure_array (pdb,
|
|
"gimp-file-save",
|
|
args);
|
|
else
|
|
return_vals = gimp_run_procedure_array ("gimp-file-save",
|
|
args);
|
|
gimp_value_array_unref (args);
|
|
|
|
success = g_value_get_enum (gimp_value_array_index (return_vals, 0)) == GIMP_PDB_SUCCESS;
|
|
|
|
gimp_value_array_unref (return_vals);
|
|
|
|
return success;
|
|
}
|
|
|
|
/**
|
|
* gimp_file_save_thumbnail:
|
|
* @image: The image.
|
|
* @filename: The name of the file the thumbnail belongs to.
|
|
*
|
|
* Saves a thumbnail for the given image
|
|
*
|
|
* This procedure saves a thumbnail for the given image according to
|
|
* the Free Desktop Thumbnail Managing Standard. The thumbnail is saved
|
|
* so that it belongs to the file with the given filename. This means
|
|
* you have to save the image under this name first, otherwise this
|
|
* procedure will fail. This procedure may become useful if you want to
|
|
* explicitly save a thumbnail with a file.
|
|
*
|
|
* Returns: TRUE on success.
|
|
**/
|
|
gboolean
|
|
gimp_file_save_thumbnail (GimpImage *image,
|
|
const gchar *filename)
|
|
{
|
|
GimpPDB *pdb = gimp_get_pdb ();
|
|
GimpValueArray *args;
|
|
GimpValueArray *return_vals;
|
|
gboolean success = TRUE;
|
|
|
|
args = gimp_value_array_new_from_types (NULL,
|
|
GIMP_TYPE_IMAGE, image,
|
|
G_TYPE_STRING, filename,
|
|
G_TYPE_NONE);
|
|
|
|
if (pdb)
|
|
return_vals = gimp_pdb_run_procedure_array (pdb,
|
|
"gimp-file-save-thumbnail",
|
|
args);
|
|
else
|
|
return_vals = gimp_run_procedure_array ("gimp-file-save-thumbnail",
|
|
args);
|
|
gimp_value_array_unref (args);
|
|
|
|
success = g_value_get_enum (gimp_value_array_index (return_vals, 0)) == GIMP_PDB_SUCCESS;
|
|
|
|
gimp_value_array_unref (return_vals);
|
|
|
|
return success;
|
|
}
|
|
|
|
/**
|
|
* _gimp_file_save_thumbnail: (skip)
|
|
* @image_ID: The image.
|
|
* @filename: The name of the file the thumbnail belongs to.
|
|
*
|
|
* Saves a thumbnail for the given image
|
|
*
|
|
* This procedure saves a thumbnail for the given image according to
|
|
* the Free Desktop Thumbnail Managing Standard. The thumbnail is saved
|
|
* so that it belongs to the file with the given filename. This means
|
|
* you have to save the image under this name first, otherwise this
|
|
* procedure will fail. This procedure may become useful if you want to
|
|
* explicitly save a thumbnail with a file.
|
|
*
|
|
* Returns: TRUE on success.
|
|
**/
|
|
gboolean
|
|
_gimp_file_save_thumbnail (gint32 image_ID,
|
|
const gchar *filename)
|
|
{
|
|
GimpPDB *pdb = gimp_get_pdb ();
|
|
GimpValueArray *args;
|
|
GimpValueArray *return_vals;
|
|
gboolean success = TRUE;
|
|
|
|
args = gimp_value_array_new_from_types (NULL,
|
|
GIMP_TYPE_IMAGE, gimp_image_get_by_id (image_ID),
|
|
G_TYPE_STRING, filename,
|
|
G_TYPE_NONE);
|
|
|
|
if (pdb)
|
|
return_vals = gimp_pdb_run_procedure_array (pdb,
|
|
"gimp-file-save-thumbnail",
|
|
args);
|
|
else
|
|
return_vals = gimp_run_procedure_array ("gimp-file-save-thumbnail",
|
|
args);
|
|
gimp_value_array_unref (args);
|
|
|
|
success = g_value_get_enum (gimp_value_array_index (return_vals, 0)) == GIMP_PDB_SUCCESS;
|
|
|
|
gimp_value_array_unref (return_vals);
|
|
|
|
return success;
|
|
}
|
|
|
|
/**
|
|
* _gimp_register_magic_load_handler:
|
|
* @procedure_name: The name of the procedure to be used for loading.
|
|
* @extensions: comma separated list of extensions this handler can load (i.e. \"jpg,jpeg\").
|
|
* @prefixes: comma separated list of prefixes this handler can load (i.e. \"http:,ftp:\").
|
|
* @magics: comma separated list of magic file information this handler can load (i.e. \"0,string,GIF\").
|
|
*
|
|
* Registers a file load handler procedure.
|
|
*
|
|
* Registers a procedural database procedure to be called to load files
|
|
* of a particular file format using magic file information.
|
|
*
|
|
* Returns: TRUE on success.
|
|
**/
|
|
gboolean
|
|
_gimp_register_magic_load_handler (const gchar *procedure_name,
|
|
const gchar *extensions,
|
|
const gchar *prefixes,
|
|
const gchar *magics)
|
|
{
|
|
GimpPDB *pdb = gimp_get_pdb ();
|
|
GimpValueArray *args;
|
|
GimpValueArray *return_vals;
|
|
gboolean success = TRUE;
|
|
|
|
args = gimp_value_array_new_from_types (NULL,
|
|
G_TYPE_STRING, procedure_name,
|
|
G_TYPE_STRING, extensions,
|
|
G_TYPE_STRING, prefixes,
|
|
G_TYPE_STRING, magics,
|
|
G_TYPE_NONE);
|
|
|
|
if (pdb)
|
|
return_vals = gimp_pdb_run_procedure_array (pdb,
|
|
"gimp-register-magic-load-handler",
|
|
args);
|
|
else
|
|
return_vals = gimp_run_procedure_array ("gimp-register-magic-load-handler",
|
|
args);
|
|
gimp_value_array_unref (args);
|
|
|
|
success = g_value_get_enum (gimp_value_array_index (return_vals, 0)) == GIMP_PDB_SUCCESS;
|
|
|
|
gimp_value_array_unref (return_vals);
|
|
|
|
return success;
|
|
}
|
|
|
|
/**
|
|
* _gimp_register_load_handler:
|
|
* @procedure_name: The name of the procedure to be used for loading.
|
|
* @extensions: comma separated list of extensions this handler can load (i.e. \"jpg,jpeg\").
|
|
* @prefixes: comma separated list of prefixes this handler can load (i.e. \"http:,ftp:\").
|
|
*
|
|
* Registers a file load handler procedure.
|
|
*
|
|
* Registers a procedural database procedure to be called to load files
|
|
* of a particular file format.
|
|
*
|
|
* Returns: TRUE on success.
|
|
**/
|
|
gboolean
|
|
_gimp_register_load_handler (const gchar *procedure_name,
|
|
const gchar *extensions,
|
|
const gchar *prefixes)
|
|
{
|
|
GimpPDB *pdb = gimp_get_pdb ();
|
|
GimpValueArray *args;
|
|
GimpValueArray *return_vals;
|
|
gboolean success = TRUE;
|
|
|
|
args = gimp_value_array_new_from_types (NULL,
|
|
G_TYPE_STRING, procedure_name,
|
|
G_TYPE_STRING, extensions,
|
|
G_TYPE_STRING, prefixes,
|
|
G_TYPE_NONE);
|
|
|
|
if (pdb)
|
|
return_vals = gimp_pdb_run_procedure_array (pdb,
|
|
"gimp-register-load-handler",
|
|
args);
|
|
else
|
|
return_vals = gimp_run_procedure_array ("gimp-register-load-handler",
|
|
args);
|
|
gimp_value_array_unref (args);
|
|
|
|
success = g_value_get_enum (gimp_value_array_index (return_vals, 0)) == GIMP_PDB_SUCCESS;
|
|
|
|
gimp_value_array_unref (return_vals);
|
|
|
|
return success;
|
|
}
|
|
|
|
/**
|
|
* _gimp_register_save_handler:
|
|
* @procedure_name: The name of the procedure to be used for saving.
|
|
* @extensions: comma separated list of extensions this handler can save (i.e. \"jpg,jpeg\").
|
|
* @prefixes: comma separated list of prefixes this handler can save (i.e. \"http:,ftp:\").
|
|
*
|
|
* Registers a file save handler procedure.
|
|
*
|
|
* Registers a procedural database procedure to be called to save files
|
|
* in a particular file format.
|
|
*
|
|
* Returns: TRUE on success.
|
|
**/
|
|
gboolean
|
|
_gimp_register_save_handler (const gchar *procedure_name,
|
|
const gchar *extensions,
|
|
const gchar *prefixes)
|
|
{
|
|
GimpPDB *pdb = gimp_get_pdb ();
|
|
GimpValueArray *args;
|
|
GimpValueArray *return_vals;
|
|
gboolean success = TRUE;
|
|
|
|
args = gimp_value_array_new_from_types (NULL,
|
|
G_TYPE_STRING, procedure_name,
|
|
G_TYPE_STRING, extensions,
|
|
G_TYPE_STRING, prefixes,
|
|
G_TYPE_NONE);
|
|
|
|
if (pdb)
|
|
return_vals = gimp_pdb_run_procedure_array (pdb,
|
|
"gimp-register-save-handler",
|
|
args);
|
|
else
|
|
return_vals = gimp_run_procedure_array ("gimp-register-save-handler",
|
|
args);
|
|
gimp_value_array_unref (args);
|
|
|
|
success = g_value_get_enum (gimp_value_array_index (return_vals, 0)) == GIMP_PDB_SUCCESS;
|
|
|
|
gimp_value_array_unref (return_vals);
|
|
|
|
return success;
|
|
}
|
|
|
|
/**
|
|
* _gimp_register_file_handler_priority:
|
|
* @procedure_name: The name of the procedure to set the priority of.
|
|
* @priority: The procedure priority.
|
|
*
|
|
* Sets the priority of a file handler procedure.
|
|
*
|
|
* Sets the priority of a file handler procedure. When more than one
|
|
* procedure matches a given file, the procedure with the lowest
|
|
* priority is used; if more than one procedure has the lowest
|
|
* priority, it is unspecified which one of them is used. The default
|
|
* priority for file handler procedures is 0.
|
|
*
|
|
* Returns: TRUE on success.
|
|
*
|
|
* Since: 2.10.6
|
|
**/
|
|
gboolean
|
|
_gimp_register_file_handler_priority (const gchar *procedure_name,
|
|
gint priority)
|
|
{
|
|
GimpPDB *pdb = gimp_get_pdb ();
|
|
GimpValueArray *args;
|
|
GimpValueArray *return_vals;
|
|
gboolean success = TRUE;
|
|
|
|
args = gimp_value_array_new_from_types (NULL,
|
|
G_TYPE_STRING, procedure_name,
|
|
G_TYPE_INT, priority,
|
|
G_TYPE_NONE);
|
|
|
|
if (pdb)
|
|
return_vals = gimp_pdb_run_procedure_array (pdb,
|
|
"gimp-register-file-handler-priority",
|
|
args);
|
|
else
|
|
return_vals = gimp_run_procedure_array ("gimp-register-file-handler-priority",
|
|
args);
|
|
gimp_value_array_unref (args);
|
|
|
|
success = g_value_get_enum (gimp_value_array_index (return_vals, 0)) == GIMP_PDB_SUCCESS;
|
|
|
|
gimp_value_array_unref (return_vals);
|
|
|
|
return success;
|
|
}
|
|
|
|
/**
|
|
* _gimp_register_file_handler_mime:
|
|
* @procedure_name: The name of the procedure to associate a MIME type with.
|
|
* @mime_types: A comma-separated list of MIME types, such as \"image/jpeg\".
|
|
*
|
|
* Associates MIME types with a file handler procedure.
|
|
*
|
|
* Registers MIME types for a file handler procedure. This allows GIMP
|
|
* to determine the MIME type of the file opened or saved using this
|
|
* procedure. It is recommended that only one MIME type is registered
|
|
* per file procedure; when registering more than one MIME type, GIMP
|
|
* will associate the first one with files opened or saved with this
|
|
* procedure.
|
|
*
|
|
* Returns: TRUE on success.
|
|
*
|
|
* Since: 2.2
|
|
**/
|
|
gboolean
|
|
_gimp_register_file_handler_mime (const gchar *procedure_name,
|
|
const gchar *mime_types)
|
|
{
|
|
GimpPDB *pdb = gimp_get_pdb ();
|
|
GimpValueArray *args;
|
|
GimpValueArray *return_vals;
|
|
gboolean success = TRUE;
|
|
|
|
args = gimp_value_array_new_from_types (NULL,
|
|
G_TYPE_STRING, procedure_name,
|
|
G_TYPE_STRING, mime_types,
|
|
G_TYPE_NONE);
|
|
|
|
if (pdb)
|
|
return_vals = gimp_pdb_run_procedure_array (pdb,
|
|
"gimp-register-file-handler-mime",
|
|
args);
|
|
else
|
|
return_vals = gimp_run_procedure_array ("gimp-register-file-handler-mime",
|
|
args);
|
|
gimp_value_array_unref (args);
|
|
|
|
success = g_value_get_enum (gimp_value_array_index (return_vals, 0)) == GIMP_PDB_SUCCESS;
|
|
|
|
gimp_value_array_unref (return_vals);
|
|
|
|
return success;
|
|
}
|
|
|
|
/**
|
|
* _gimp_register_file_handler_remote:
|
|
* @procedure_name: The name of the procedure to enable remote URIs for.
|
|
*
|
|
* Registers a file handler procedure as capable of handling remote
|
|
* URIs.
|
|
*
|
|
* Registers a file handler procedure as capable of handling remote
|
|
* URIs. This allows GIMP to call the procedure directly for all kinds
|
|
* of URIs, not only on local file:// URIs.
|
|
*
|
|
* Returns: TRUE on success.
|
|
*
|
|
* Since: 2.10
|
|
**/
|
|
gboolean
|
|
_gimp_register_file_handler_remote (const gchar *procedure_name)
|
|
{
|
|
GimpPDB *pdb = gimp_get_pdb ();
|
|
GimpValueArray *args;
|
|
GimpValueArray *return_vals;
|
|
gboolean success = TRUE;
|
|
|
|
args = gimp_value_array_new_from_types (NULL,
|
|
G_TYPE_STRING, procedure_name,
|
|
G_TYPE_NONE);
|
|
|
|
if (pdb)
|
|
return_vals = gimp_pdb_run_procedure_array (pdb,
|
|
"gimp-register-file-handler-remote",
|
|
args);
|
|
else
|
|
return_vals = gimp_run_procedure_array ("gimp-register-file-handler-remote",
|
|
args);
|
|
gimp_value_array_unref (args);
|
|
|
|
success = g_value_get_enum (gimp_value_array_index (return_vals, 0)) == GIMP_PDB_SUCCESS;
|
|
|
|
gimp_value_array_unref (return_vals);
|
|
|
|
return success;
|
|
}
|
|
|
|
/**
|
|
* _gimp_register_file_handler_raw:
|
|
* @procedure_name: The name of the procedure to enable raw handling for.
|
|
*
|
|
* Registers a file handler procedure as capable of handling raw camera
|
|
* files.
|
|
*
|
|
* Registers a file handler procedure as capable of handling raw
|
|
* digital camera files. Use this procedure only to register raw load
|
|
* handlers, calling it on a save handler will generate an error.
|
|
*
|
|
* Returns: TRUE on success.
|
|
*
|
|
* Since: 2.10
|
|
**/
|
|
gboolean
|
|
_gimp_register_file_handler_raw (const gchar *procedure_name)
|
|
{
|
|
GimpPDB *pdb = gimp_get_pdb ();
|
|
GimpValueArray *args;
|
|
GimpValueArray *return_vals;
|
|
gboolean success = TRUE;
|
|
|
|
args = gimp_value_array_new_from_types (NULL,
|
|
G_TYPE_STRING, procedure_name,
|
|
G_TYPE_NONE);
|
|
|
|
if (pdb)
|
|
return_vals = gimp_pdb_run_procedure_array (pdb,
|
|
"gimp-register-file-handler-raw",
|
|
args);
|
|
else
|
|
return_vals = gimp_run_procedure_array ("gimp-register-file-handler-raw",
|
|
args);
|
|
gimp_value_array_unref (args);
|
|
|
|
success = g_value_get_enum (gimp_value_array_index (return_vals, 0)) == GIMP_PDB_SUCCESS;
|
|
|
|
gimp_value_array_unref (return_vals);
|
|
|
|
return success;
|
|
}
|
|
|
|
/**
|
|
* _gimp_register_thumbnail_loader:
|
|
* @load_proc: The name of the procedure the thumbnail loader with.
|
|
* @thumb_proc: The name of the thumbnail load procedure.
|
|
*
|
|
* Associates a thumbnail loader with a file load procedure.
|
|
*
|
|
* Some file formats allow for embedded thumbnails, other file formats
|
|
* contain a scalable image or provide the image data in different
|
|
* resolutions. A file plug-in for such a format may register a special
|
|
* procedure that allows GIMP to load a thumbnail preview of the image.
|
|
* This procedure is then associated with the standard load procedure
|
|
* using this function.
|
|
*
|
|
* Returns: TRUE on success.
|
|
*
|
|
* Since: 2.2
|
|
**/
|
|
gboolean
|
|
_gimp_register_thumbnail_loader (const gchar *load_proc,
|
|
const gchar *thumb_proc)
|
|
{
|
|
GimpPDB *pdb = gimp_get_pdb ();
|
|
GimpValueArray *args;
|
|
GimpValueArray *return_vals;
|
|
gboolean success = TRUE;
|
|
|
|
args = gimp_value_array_new_from_types (NULL,
|
|
G_TYPE_STRING, load_proc,
|
|
G_TYPE_STRING, thumb_proc,
|
|
G_TYPE_NONE);
|
|
|
|
if (pdb)
|
|
return_vals = gimp_pdb_run_procedure_array (pdb,
|
|
"gimp-register-thumbnail-loader",
|
|
args);
|
|
else
|
|
return_vals = gimp_run_procedure_array ("gimp-register-thumbnail-loader",
|
|
args);
|
|
gimp_value_array_unref (args);
|
|
|
|
success = g_value_get_enum (gimp_value_array_index (return_vals, 0)) == GIMP_PDB_SUCCESS;
|
|
|
|
gimp_value_array_unref (return_vals);
|
|
|
|
return success;
|
|
}
|