libgimp, plug-ins: update gimp_drawable_append_new_filter() signature.

Adding the mode and opacity arguments makes it very similar to
gimp_drawable_merge_new_filter() signature, but also to its own
Script-fu wrapper (gimp-drawable-append-new-filter).

It's just better to be consistent. Also if either of these args need to
be changed immediately afterwards, then we spare one additional
re-render for nothing (for instance in the PSD load plug-in!).
This commit is contained in:
Jehan 2024-12-23 15:32:24 +01:00
parent d46607f281
commit 61abcd7412
3 changed files with 19 additions and 7 deletions

View file

@ -499,6 +499,8 @@ gimp_drawable_merge_filter (GimpDrawable *drawable,
* @drawable: The #GimpDrawable. * @drawable: The #GimpDrawable.
* @operation_name: The GEGL operation's name. * @operation_name: The GEGL operation's name.
* @name: The effect name. * @name: The effect name.
* @mode: The blend mode.
* @opacity: The opacity from 0.0 (transparent) to 1.0 (opaque).
* @...: a %NULL-terminated list of operation argument names * @...: a %NULL-terminated list of operation argument names
* and values. * and values.
* *
@ -513,6 +515,7 @@ gimp_drawable_merge_filter (GimpDrawable *drawable,
* *
* ```C * ```C
* filter = gimp_drawable_append_new_filter (drawable, * filter = gimp_drawable_append_new_filter (drawable,
* GIMP_LAYER_MODE_REPLACE, 1.0,
* "gegl:gaussian-blur", "My Gaussian Blur", * "gegl:gaussian-blur", "My Gaussian Blur",
* "std-dev-x", 2.5, * "std-dev-x", 2.5,
* "std-dev-y", 2.5, * "std-dev-y", 2.5,
@ -523,9 +526,11 @@ gimp_drawable_merge_filter (GimpDrawable *drawable,
* Returns: (transfer none): The newly created filter. * Returns: (transfer none): The newly created filter.
*/ */
GimpDrawableFilter * GimpDrawableFilter *
gimp_drawable_append_new_filter (GimpDrawable *drawable, gimp_drawable_append_new_filter (GimpDrawable *drawable,
const gchar *operation_name, const gchar *operation_name,
const gchar *name, const gchar *name,
GimpLayerMode mode,
gdouble opacity,
...) ...)
{ {
GimpDrawableFilter *filter; GimpDrawableFilter *filter;
@ -533,13 +538,16 @@ gimp_drawable_append_new_filter (GimpDrawable *drawable,
const gchar *arg_name; const gchar *arg_name;
va_list va_args; va_list va_args;
g_return_val_if_fail (GIMP_IS_DRAWABLE (drawable), NULL);
g_return_val_if_fail (opacity >= 0.0 && opacity <= 1.0, NULL);
filter = gimp_drawable_filter_new (drawable, operation_name, name); filter = gimp_drawable_filter_new (drawable, operation_name, name);
g_return_val_if_fail (filter != NULL, NULL); g_return_val_if_fail (filter != NULL, NULL);
config = gimp_drawable_filter_get_config (filter); config = gimp_drawable_filter_get_config (filter);
va_start (va_args, name); va_start (va_args, opacity);
while ((arg_name = va_arg (va_args, const gchar *))) while ((arg_name = va_arg (va_args, const gchar *)))
{ {
GParamSpec *pspec; GParamSpec *pspec;
@ -570,6 +578,8 @@ gimp_drawable_append_new_filter (GimpDrawable *drawable,
} }
va_end (va_args); va_end (va_args);
gimp_drawable_filter_set_blend_mode (filter, mode);
gimp_drawable_filter_set_opacity (filter, opacity);
gimp_drawable_append_filter (drawable, filter); gimp_drawable_append_filter (drawable, filter);
return filter; return filter;
@ -617,6 +627,7 @@ gimp_drawable_merge_new_filter (GimpDrawable *drawable,
const gchar *arg_name; const gchar *arg_name;
va_list va_args; va_list va_args;
g_return_if_fail (GIMP_IS_DRAWABLE (drawable));
g_return_if_fail (opacity >= 0.0 && opacity <= 1.0); g_return_if_fail (opacity >= 0.0 && opacity <= 1.0);
filter = gimp_drawable_filter_new (drawable, operation_name, name); filter = gimp_drawable_filter_new (drawable, operation_name, name);

View file

@ -101,6 +101,8 @@ void gimp_drawable_merge_filter (GimpDrawable
GimpDrawableFilter * gimp_drawable_append_new_filter (GimpDrawable *drawable, GimpDrawableFilter * gimp_drawable_append_new_filter (GimpDrawable *drawable,
const gchar *operation_name, const gchar *operation_name,
const gchar *name, const gchar *name,
GimpLayerMode mode,
gdouble opacity,
...) G_GNUC_NULL_TERMINATED; ...) G_GNUC_NULL_TERMINATED;
void gimp_drawable_merge_new_filter (GimpDrawable *drawable, void gimp_drawable_merge_new_filter (GimpDrawable *drawable,
const gchar *operation_name, const gchar *operation_name,

View file

@ -2775,11 +2775,10 @@ add_legacy_layer_effects (GimpLayer *layer,
filter = gimp_drawable_append_new_filter (GIMP_DRAWABLE (layer), filter = gimp_drawable_append_new_filter (GIMP_DRAWABLE (layer),
"gegl:color-overlay", "gegl:color-overlay",
NULL, NULL,
mode,
sofi.opacity / 255.0,
"value", color, "value", color,
NULL); NULL);
gimp_drawable_filter_set_opacity (filter, sofi.opacity / 255.0);
gimp_drawable_filter_set_blend_mode (filter, mode);
gimp_drawable_filter_update (filter);
g_object_unref (filter); g_object_unref (filter);
g_object_unref (color); g_object_unref (color);