gimp/libgimp/gimpdrawablefilter_pdb.c

576 lines
18 KiB
C

/* LIBGIMP - The GIMP Library
* Copyright (C) 1995-2003 Peter Mattis and Spencer Kimball
*
* gimpdrawablefilter_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 "stamp-pdbgen.h"
#include "gimp.h"
/**
* SECTION: gimpdrawablefilter
* @title: gimpdrawablefilter
* @short_description: Operations on drawable filters.
*
* Operations on drawable filters: creation, editing.
**/
/**
* gimp_drawable_filter_id_is_valid:
* @filter_id: The filter ID to check.
*
* Returns %TRUE if the drawable filter ID is valid.
*
* This procedure checks if the given drawable filter ID is valid and
* refers to an existing filter.
*
* Returns: Whether the filter ID is valid.
*
* Since: 3.0
**/
gboolean
gimp_drawable_filter_id_is_valid (gint filter_id)
{
GimpValueArray *args;
GimpValueArray *return_vals;
gboolean valid = FALSE;
args = gimp_value_array_new_from_types (NULL,
G_TYPE_INT, filter_id,
G_TYPE_NONE);
return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (),
"gimp-drawable-filter-id-is-valid",
args);
gimp_value_array_unref (args);
if (GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS)
valid = GIMP_VALUES_GET_BOOLEAN (return_vals, 1);
gimp_value_array_unref (return_vals);
return valid;
}
/**
* gimp_drawable_filter_new:
* @drawable: The drawable.
* @operation_name: The GEGL operation's name.
* @name: (nullable): The effect name.
*
* Create a new drawable filter.
*
* This procedure creates a new filter for the specified operation on
* @drawable.
* The new effect still needs to be either added or merged to @drawable
* later. Add the effect non-destructively with
* [method@Gimp.Drawable.append_filter].
* Currently only layers can have non-destructive effects. The effects
* must be merged for all other types of drawable.
*
* Returns: (transfer none): The newly created filter.
*
* Since: 3.0
**/
GimpDrawableFilter *
gimp_drawable_filter_new (GimpDrawable *drawable,
const gchar *operation_name,
const gchar *name)
{
GimpValueArray *args;
GimpValueArray *return_vals;
GimpDrawableFilter *filter = NULL;
args = gimp_value_array_new_from_types (NULL,
GIMP_TYPE_DRAWABLE, drawable,
G_TYPE_STRING, operation_name,
G_TYPE_STRING, name,
G_TYPE_NONE);
return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (),
"gimp-drawable-filter-new",
args);
gimp_value_array_unref (args);
if (GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS)
filter = GIMP_VALUES_GET_DRAWABLE_FILTER (return_vals, 1);
gimp_value_array_unref (return_vals);
return filter;
}
/**
* gimp_drawable_filter_get_name:
* @filter: The filter whose name you want.
*
* Get a drawable filter's name.
*
* This procedure returns the specified filter's name.
* Since it is not possible to set a drawable filter's name yet, this
* will be the operation's name. Eventually this filter's name will be
* a free form field so do not rely on this information for any
* processing.
*
* Returns: (transfer full): The filter's name.
* The returned value must be freed with g_free().
*
* Since: 3.0
**/
gchar *
gimp_drawable_filter_get_name (GimpDrawableFilter *filter)
{
GimpValueArray *args;
GimpValueArray *return_vals;
gchar *name = NULL;
args = gimp_value_array_new_from_types (NULL,
GIMP_TYPE_DRAWABLE_FILTER, filter,
G_TYPE_NONE);
return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (),
"gimp-drawable-filter-get-name",
args);
gimp_value_array_unref (args);
if (GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS)
name = GIMP_VALUES_DUP_STRING (return_vals, 1);
gimp_value_array_unref (return_vals);
return name;
}
/**
* gimp_drawable_filter_get_operation_name:
* @filter: The filter whose operation name you want.
*
* Get a drawable filter's operation name.
*
* This procedure returns the specified filter's operation name.
*
* Returns: (transfer full): The filter's operation name.
* The returned value must be freed with g_free().
*
* Since: 3.0
**/
gchar *
gimp_drawable_filter_get_operation_name (GimpDrawableFilter *filter)
{
GimpValueArray *args;
GimpValueArray *return_vals;
gchar *name = NULL;
args = gimp_value_array_new_from_types (NULL,
GIMP_TYPE_DRAWABLE_FILTER, filter,
G_TYPE_NONE);
return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (),
"gimp-drawable-filter-get-operation-name",
args);
gimp_value_array_unref (args);
if (GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS)
name = GIMP_VALUES_DUP_STRING (return_vals, 1);
gimp_value_array_unref (return_vals);
return name;
}
/**
* gimp_drawable_filter_get_visible:
* @filter: The filter.
*
* Get the visibility of the specified filter.
*
* This procedure returns the specified filter's visibility.
*
* Returns: The filter visibility.
*
* Since: 3.0
**/
gboolean
gimp_drawable_filter_get_visible (GimpDrawableFilter *filter)
{
GimpValueArray *args;
GimpValueArray *return_vals;
gboolean visible = FALSE;
args = gimp_value_array_new_from_types (NULL,
GIMP_TYPE_DRAWABLE_FILTER, filter,
G_TYPE_NONE);
return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (),
"gimp-drawable-filter-get-visible",
args);
gimp_value_array_unref (args);
if (GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS)
visible = GIMP_VALUES_GET_BOOLEAN (return_vals, 1);
gimp_value_array_unref (return_vals);
return visible;
}
/**
* gimp_drawable_filter_set_visible:
* @filter: The filter.
* @visible: The new filter visibility.
*
* Set the visibility of the specified filter.
*
* This procedure sets the specified filter's visibility.
* The drawable won't be immediately rendered. Use
* [method@Gimp.Drawable.update] to trigger an update.
*
* Returns: TRUE on success.
*
* Since: 3.0
**/
gboolean
gimp_drawable_filter_set_visible (GimpDrawableFilter *filter,
gboolean visible)
{
GimpValueArray *args;
GimpValueArray *return_vals;
gboolean success = TRUE;
args = gimp_value_array_new_from_types (NULL,
GIMP_TYPE_DRAWABLE_FILTER, filter,
G_TYPE_BOOLEAN, visible,
G_TYPE_NONE);
return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (),
"gimp-drawable-filter-set-visible",
args);
gimp_value_array_unref (args);
success = GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS;
gimp_value_array_unref (return_vals);
return success;
}
/**
* gimp_drawable_filter_get_opacity:
* @filter: The filter.
*
* Get the opacity of the specified filter.
*
* This procedure returns the specified filter's opacity.
*
* Returns: The filter's opacity.
*
* Since: 3.0
**/
gdouble
gimp_drawable_filter_get_opacity (GimpDrawableFilter *filter)
{
GimpValueArray *args;
GimpValueArray *return_vals;
gdouble opacity = 0.0;
args = gimp_value_array_new_from_types (NULL,
GIMP_TYPE_DRAWABLE_FILTER, filter,
G_TYPE_NONE);
return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (),
"gimp-drawable-filter-get-opacity",
args);
gimp_value_array_unref (args);
if (GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS)
opacity = GIMP_VALUES_GET_DOUBLE (return_vals, 1);
gimp_value_array_unref (return_vals);
return opacity;
}
/**
* gimp_drawable_filter_get_blend_mode:
* @filter: The filter.
*
* Get the blending mode of the specified filter.
*
* This procedure returns the specified filter's mode.
*
* Returns: The effect blending mode.
*
* Since: 3.0
**/
GimpLayerMode
gimp_drawable_filter_get_blend_mode (GimpDrawableFilter *filter)
{
GimpValueArray *args;
GimpValueArray *return_vals;
GimpLayerMode mode = 0;
args = gimp_value_array_new_from_types (NULL,
GIMP_TYPE_DRAWABLE_FILTER, filter,
G_TYPE_NONE);
return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (),
"gimp-drawable-filter-get-blend-mode",
args);
gimp_value_array_unref (args);
if (GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS)
mode = GIMP_VALUES_GET_ENUM (return_vals, 1);
gimp_value_array_unref (return_vals);
return mode;
}
/**
* _gimp_drawable_filter_update:
* @filter: The filter.
* @propnames: (array zero-terminated=1): Array of property names.
* @propvalues: Array of values, one per property in propnames.
* @opacity: The filter's opacity.
* @blend_mode: The effect blending mode.
* @blend_space: The effect blending space.
* @composite_mode: The layer composite mode.
* @composite_space: The effect composite space.
* @auxinputnames: (array zero-terminated=1): Array of aux input pads.
* @auxinputs: (element-type GimpDrawable) (array zero-terminated=1): Array of drawables, one per auxinputnames.
*
* Update the settings of the specified filter.
*
* This procedure updates the settings of the specified filter all at
* once.
* In particular, update will be frozen and will happen only once for
* all changed settings.
* This PDB function is internal, meant to be private and its arguments
* will likely change as filters evolve. It should not be used.
*
* Returns: TRUE on success.
*
* Since: 3.0
**/
gboolean
_gimp_drawable_filter_update (GimpDrawableFilter *filter,
const gchar **propnames,
const GimpValueArray *propvalues,
gdouble opacity,
GimpLayerMode blend_mode,
GimpLayerColorSpace blend_space,
GimpLayerCompositeMode composite_mode,
GimpLayerColorSpace composite_space,
const gchar **auxinputnames,
const GimpDrawable **auxinputs)
{
GimpValueArray *args;
GimpValueArray *return_vals;
gboolean success = TRUE;
args = gimp_value_array_new_from_types (NULL,
GIMP_TYPE_DRAWABLE_FILTER, filter,
G_TYPE_STRV, propnames,
GIMP_TYPE_VALUE_ARRAY, propvalues,
G_TYPE_DOUBLE, opacity,
GIMP_TYPE_LAYER_MODE, blend_mode,
GIMP_TYPE_LAYER_COLOR_SPACE, blend_space,
GIMP_TYPE_LAYER_COMPOSITE_MODE, composite_mode,
GIMP_TYPE_LAYER_COLOR_SPACE, composite_space,
G_TYPE_STRV, auxinputnames,
GIMP_TYPE_CORE_OBJECT_ARRAY, auxinputs,
G_TYPE_NONE);
return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (),
"gimp-drawable-filter-update",
args);
gimp_value_array_unref (args);
success = GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS;
gimp_value_array_unref (return_vals);
return success;
}
/**
* _gimp_drawable_filter_get_number_arguments:
* @filter: The filter.
*
* Queries for the number of arguments on the specified filter.
*
* This procedure returns the number of arguments on the specified
* filter.
* For specific information on each input argument, use
* gimp_drawable_filter_get_argument().
*
* Returns: The number of input arguments.
*
* Since: 3.0
**/
gint
_gimp_drawable_filter_get_number_arguments (GimpDrawableFilter *filter)
{
GimpValueArray *args;
GimpValueArray *return_vals;
gint num_args = 0;
args = gimp_value_array_new_from_types (NULL,
GIMP_TYPE_DRAWABLE_FILTER, filter,
G_TYPE_NONE);
return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (),
"gimp-drawable-filter-get-number-arguments",
args);
gimp_value_array_unref (args);
if (GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS)
num_args = GIMP_VALUES_GET_INT (return_vals, 1);
gimp_value_array_unref (return_vals);
return num_args;
}
/**
* _gimp_drawable_filter_get_pspec:
* @filter: The filter.
* @arg_num: The argument number.
*
* Queries for information on the specified filter's argument.
*
* This procedure returns the #GParamSpec of filter's argument.
*
* Returns: (transfer full): The GParamSpec of the argument.
* The returned value must be freed with g_param_spec_unref().
*
* Since: 3.0
**/
GParamSpec *
_gimp_drawable_filter_get_pspec (GimpDrawableFilter *filter,
gint arg_num)
{
GimpValueArray *args;
GimpValueArray *return_vals;
GParamSpec *param_spec = NULL;
args = gimp_value_array_new_from_types (NULL,
GIMP_TYPE_DRAWABLE_FILTER, filter,
G_TYPE_INT, arg_num,
G_TYPE_NONE);
return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (),
"gimp-drawable-filter-get-pspec",
args);
gimp_value_array_unref (args);
if (GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS)
param_spec = GIMP_VALUES_DUP_PARAM (return_vals, 1);
gimp_value_array_unref (return_vals);
return param_spec;
}
/**
* _gimp_drawable_filter_get_arguments:
* @filter: The filter.
* @values: (out): The values of the arguments in same order.
*
* Returns the currently set filter arguments.
*
* This procedure returns the filter's arguments.
*
* Returns: (array zero-terminated=1) (transfer full):
* The names of the arguments.
* The returned value must be freed with g_strfreev().
*
* Since: 3.0
**/
gchar **
_gimp_drawable_filter_get_arguments (GimpDrawableFilter *filter,
GimpValueArray **values)
{
GimpValueArray *args;
GimpValueArray *return_vals;
gchar **argnames = NULL;
args = gimp_value_array_new_from_types (NULL,
GIMP_TYPE_DRAWABLE_FILTER, filter,
G_TYPE_NONE);
return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (),
"gimp-drawable-filter-get-arguments",
args);
gimp_value_array_unref (args);
if (GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS)
{
argnames = GIMP_VALUES_DUP_STRV (return_vals, 1);
*values = g_value_dup_boxed (gimp_value_array_index (return_vals, 2));
}
gimp_value_array_unref (return_vals);
return argnames;
}
/**
* gimp_drawable_filter_delete:
* @filter: The filter to delete.
*
* Delete a drawable filter.
*
* This procedure deletes the specified filter. This must not be done
* if the drawable whose this filter was applied to was already deleted
* or if the drawable was already removed from the image.
* Do not use anymore the @filter object after having deleted it.
*
* Returns: TRUE on success.
*
* Since: 3.0
**/
gboolean
gimp_drawable_filter_delete (GimpDrawableFilter *filter)
{
GimpValueArray *args;
GimpValueArray *return_vals;
gboolean success = TRUE;
args = gimp_value_array_new_from_types (NULL,
GIMP_TYPE_DRAWABLE_FILTER, filter,
G_TYPE_NONE);
return_vals = _gimp_pdb_run_procedure_array (gimp_get_pdb (),
"gimp-drawable-filter-delete",
args);
gimp_value_array_unref (args);
success = GIMP_VALUES_GET_ENUM (return_vals, 0) == GIMP_PDB_SUCCESS;
gimp_value_array_unref (return_vals);
return success;
}