app, libgimp*, plug-ins: get rid of GimpRGB arrays now that we have GeglColor arrays.

This commit is contained in:
Jehan 2024-04-18 15:55:59 +02:00
parent 2e536b6df1
commit 9f149ef3a2
10 changed files with 19 additions and 326 deletions

View file

@ -447,7 +447,6 @@ gimp_pdb_execute_procedure_by_name (GimpPDB *pdb,
if (GIMP_VALUE_HOLDS_INT32_ARRAY (value) || if (GIMP_VALUE_HOLDS_INT32_ARRAY (value) ||
GIMP_VALUE_HOLDS_FLOAT_ARRAY (value) || GIMP_VALUE_HOLDS_FLOAT_ARRAY (value) ||
GIMP_VALUE_HOLDS_RGB_ARRAY (value) ||
GIMP_VALUE_HOLDS_OBJECT_ARRAY (value)) GIMP_VALUE_HOLDS_OBJECT_ARRAY (value))
{ {
/* Array arguments don't have their size information when they /* Array arguments don't have their size information when they
@ -465,10 +464,6 @@ gimp_pdb_execute_procedure_by_name (GimpPDB *pdb,
gimp_value_set_float_array (value, gimp_value_set_float_array (value,
(const gdouble *) va_arg (va_args, gpointer), (const gdouble *) va_arg (va_args, gpointer),
prev_int_value); prev_int_value);
else if (GIMP_VALUE_HOLDS_RGB_ARRAY (value))
gimp_value_set_rgb_array (value,
(const GimpRGB *) va_arg (va_args, gpointer),
prev_int_value);
else if (GIMP_VALUE_HOLDS_OBJECT_ARRAY (value)) else if (GIMP_VALUE_HOLDS_OBJECT_ARRAY (value))
gimp_value_set_object_array (value, GIMP_TYPE_ITEM, gimp_value_set_object_array (value, GIMP_TYPE_ITEM,
va_arg (va_args, gpointer), va_arg (va_args, gpointer),

View file

@ -426,7 +426,6 @@ gimp_main (GType plug_in_type,
GIMP_TYPE_ARRAY, GIMP_TYPE_PARAM_ARRAY, GIMP_TYPE_ARRAY, GIMP_TYPE_PARAM_ARRAY,
GIMP_TYPE_INT32_ARRAY, GIMP_TYPE_PARAM_INT32_ARRAY, GIMP_TYPE_INT32_ARRAY, GIMP_TYPE_PARAM_INT32_ARRAY,
GIMP_TYPE_FLOAT_ARRAY, GIMP_TYPE_PARAM_FLOAT_ARRAY, GIMP_TYPE_FLOAT_ARRAY, GIMP_TYPE_PARAM_FLOAT_ARRAY,
GIMP_TYPE_RGB_ARRAY, GIMP_TYPE_PARAM_RGB_ARRAY,
GIMP_TYPE_OBJECT_ARRAY, GIMP_TYPE_PARAM_OBJECT_ARRAY, GIMP_TYPE_OBJECT_ARRAY, GIMP_TYPE_PARAM_OBJECT_ARRAY,
GIMP_TYPE_DISPLAY, GIMP_TYPE_PARAM_DISPLAY, GIMP_TYPE_DISPLAY, GIMP_TYPE_PARAM_DISPLAY,

View file

@ -44,9 +44,6 @@ _gimp_gp_param_def_to_param_spec (const GPParamDef *param_def)
if (! strcmp (param_def->type_name, "GimpParamFloatArray")) if (! strcmp (param_def->type_name, "GimpParamFloatArray"))
return gimp_param_spec_float_array (name, nick, blurb, flags); return gimp_param_spec_float_array (name, nick, blurb, flags);
if (! strcmp (param_def->type_name, "GimpParamRGBArray"))
return gimp_param_spec_rgb_array (name, nick, blurb, flags);
if (! strcmp (param_def->type_name, "GimpParamParasite")) if (! strcmp (param_def->type_name, "GimpParamParasite"))
return gimp_param_spec_parasite (name, nick, blurb, flags); return gimp_param_spec_parasite (name, nick, blurb, flags);
@ -781,14 +778,6 @@ gimp_gp_param_to_value (gpointer gimp,
param->data.d_array.size / param->data.d_array.size /
sizeof (gdouble)); sizeof (gdouble));
} }
else if (GIMP_VALUE_HOLDS_RGB_ARRAY (value))
{
gimp_value_set_rgb_array (value,
(GimpRGB *)
param->data.d_array.data,
param->data.d_array.size /
sizeof (GimpRGB));
}
else if (GIMP_VALUE_HOLDS_COLOR_ARRAY (value)) else if (GIMP_VALUE_HOLDS_COLOR_ARRAY (value))
{ {
GeglColor **colors; GeglColor **colors;
@ -1133,8 +1122,7 @@ gimp_value_to_gp_param (const GValue *value,
} }
} }
else if (GIMP_VALUE_HOLDS_INT32_ARRAY (value) || else if (GIMP_VALUE_HOLDS_INT32_ARRAY (value) ||
GIMP_VALUE_HOLDS_FLOAT_ARRAY (value) || GIMP_VALUE_HOLDS_FLOAT_ARRAY (value))
GIMP_VALUE_HOLDS_RGB_ARRAY (value))
{ {
GimpArray *array = g_value_get_boxed (value); GimpArray *array = g_value_get_boxed (value);

View file

@ -526,36 +526,6 @@ G_BEGIN_DECLS
g_value_take_boxed (gimp_value_array_index (args, n), value) g_value_take_boxed (gimp_value_array_index (args, n), value)
/* rgb array */
#define GIMP_PROC_ARG_RGB_ARRAY(procedure, name, nick, blurb, flags) \
gimp_procedure_add_argument (procedure,\
gimp_param_spec_rgb_array (name, nick, blurb,\
flags))
#define GIMP_PROC_AUX_ARG_RGB_ARRAY(procedure, name, nick, blurb, flags) \
gimp_procedure_add_aux_argument (procedure,\
gimp_param_spec_rgb_array (name, nick, blurb,\
flags))
#define GIMP_PROC_VAL_RGB_ARRAY(procedure, name, nick, blurb, flags) \
gimp_procedure_add_return_value (procedure,\
gimp_param_spec_rgb_array (name, nick, blurb,\
flags))
#define GIMP_VALUES_GET_RGB_ARRAY(args, n) \
gimp_value_get_rgb_array (gimp_value_array_index (args, n))
#define GIMP_VALUES_DUP_RGB_ARRAY(args, n) \
gimp_value_dup_rgb_array (gimp_value_array_index (args, n))
#define GIMP_VALUES_SET_RGB_ARRAY(args, n, value, length) \
gimp_value_set_rgb_array (gimp_value_array_index (args, n), value, length)
#define GIMP_VALUES_TAKE_RGB_ARRAY(args, n, value, length) \
gimp_value_take_rgb_array (gimp_value_array_index (args, n), value, length)
/* object array */ /* object array */
#define GIMP_PROC_ARG_OBJECT_ARRAY(procedure, name, nick, blurb, object_type, flags) \ #define GIMP_PROC_ARG_OBJECT_ARRAY(procedure, name, nick, blurb, object_type, flags) \

View file

@ -128,7 +128,6 @@ EXPORTS
gimp_param_memsize_get_type gimp_param_memsize_get_type
gimp_param_object_array_get_type gimp_param_object_array_get_type
gimp_param_parasite_get_type gimp_param_parasite_get_type
gimp_param_rgb_array_get_type
gimp_param_spec_array gimp_param_spec_array
gimp_param_spec_choice gimp_param_spec_choice
gimp_param_spec_float_array gimp_param_spec_float_array
@ -136,7 +135,6 @@ EXPORTS
gimp_param_spec_memsize gimp_param_spec_memsize
gimp_param_spec_object_array gimp_param_spec_object_array
gimp_param_spec_parasite gimp_param_spec_parasite
gimp_param_spec_rgb_array
gimp_param_spec_unit gimp_param_spec_unit
gimp_param_spec_value_array gimp_param_spec_value_array
gimp_param_unit_get_type gimp_param_unit_get_type
@ -174,7 +172,6 @@ EXPORTS
gimp_rectangle_intersect gimp_rectangle_intersect
gimp_rectangle_union gimp_rectangle_union
gimp_repeat_mode_get_type gimp_repeat_mode_get_type
gimp_rgb_array_get_type
gimp_rotation_type_get_type gimp_rotation_type_get_type
gimp_run_mode_get_type gimp_run_mode_get_type
gimp_select_criterion_get_type gimp_select_criterion_get_type
@ -237,23 +234,18 @@ EXPORTS
gimp_value_dup_float_array gimp_value_dup_float_array
gimp_value_dup_int32_array gimp_value_dup_int32_array
gimp_value_dup_object_array gimp_value_dup_object_array
gimp_value_dup_rgb_array
gimp_value_get_float_array gimp_value_get_float_array
gimp_value_get_int32_array gimp_value_get_int32_array
gimp_value_get_object_array gimp_value_get_object_array
gimp_value_get_rgb_array
gimp_value_set_float_array gimp_value_set_float_array
gimp_value_set_int32_array gimp_value_set_int32_array
gimp_value_set_object_array gimp_value_set_object_array
gimp_value_set_rgb_array
gimp_value_set_static_float_array gimp_value_set_static_float_array
gimp_value_set_static_int32_array gimp_value_set_static_int32_array
gimp_value_set_static_object_array gimp_value_set_static_object_array
gimp_value_set_static_rgb_array
gimp_value_take_float_array gimp_value_take_float_array
gimp_value_take_int32_array gimp_value_take_int32_array
gimp_value_take_object_array gimp_value_take_object_array
gimp_value_take_rgb_array
gimp_vectors_stroke_type_get_type gimp_vectors_stroke_type_get_type
gimp_wire_clear_error gimp_wire_clear_error
gimp_wire_destroy gimp_wire_destroy

View file

@ -837,177 +837,6 @@ gimp_color_array_get_length (GimpColorArray array)
} }
/*
* GIMP_TYPE_RGB_ARRAY
*/
typedef GimpArray GimpRGBArray;
G_DEFINE_BOXED_TYPE (GimpRGBArray, gimp_rgb_array, gimp_array_copy, gimp_array_free)
/*
* GIMP_TYPE_PARAM_RGB_ARRAY
*/
static void gimp_param_rgb_array_class_init (GParamSpecClass *klass);
static void gimp_param_rgb_array_init (GParamSpec *pspec);
GType
gimp_param_rgb_array_get_type (void)
{
static GType type = 0;
if (! type)
{
const GTypeInfo info =
{
sizeof (GParamSpecClass),
NULL, NULL,
(GClassInitFunc) gimp_param_rgb_array_class_init,
NULL, NULL,
sizeof (GimpParamSpecRGBArray),
0,
(GInstanceInitFunc) gimp_param_rgb_array_init
};
type = g_type_register_static (G_TYPE_PARAM_BOXED,
"GimpParamRGBArray", &info, 0);
}
return type;
}
static void
gimp_param_rgb_array_class_init (GParamSpecClass *klass)
{
klass->value_type = GIMP_TYPE_RGB_ARRAY;
}
static void
gimp_param_rgb_array_init (GParamSpec *pspec)
{
}
/**
* gimp_param_spec_rgb_array:
* @name: Canonical name of the property specified.
* @nick: Nick name of the property specified.
* @blurb: Description of the property specified.
* @flags: Flags for the property specified.
*
* Creates a new #GimpParamSpecRGBArray specifying a
* %GIMP_TYPE_RGB_ARRAY property.
*
* See g_param_spec_internal() for details on property names.
*
* Returns: (transfer full): The newly created #GimpParamSpecRGBArray.
*
* Since: 3.0
**/
GParamSpec *
gimp_param_spec_rgb_array (const gchar *name,
const gchar *nick,
const gchar *blurb,
GParamFlags flags)
{
GimpParamSpecRGBArray *array_spec;
array_spec = g_param_spec_internal (GIMP_TYPE_PARAM_RGB_ARRAY,
name, nick, blurb, flags);
return G_PARAM_SPEC (array_spec);
}
/**
* gimp_value_get_rgb_array:
* @value: A valid value of type %GIMP_TYPE_RGB_ARRAY
*
* Gets the contents of a %GIMP_TYPE_RGB_ARRAY #GValue
*
* Returns: (transfer none) (array): The contents of @value
*/
const GimpRGB *
gimp_value_get_rgb_array (const GValue *value)
{
g_return_val_if_fail (GIMP_VALUE_HOLDS_RGB_ARRAY (value), NULL);
return (const GimpRGB *) gimp_value_get_array (value);
}
/**
* gimp_value_dup_rgb_array:
* @value: A valid value of type %GIMP_TYPE_RGB_ARRAY
*
* Gets the contents of a %GIMP_TYPE_RGB_ARRAY #GValue
*
* Returns: (transfer full) (array): The contents of @value
*/
GimpRGB *
gimp_value_dup_rgb_array (const GValue *value)
{
g_return_val_if_fail (GIMP_VALUE_HOLDS_RGB_ARRAY (value), NULL);
return (GimpRGB *) gimp_value_dup_array (value);
}
/**
* gimp_value_set_rgb_array:
* @value: A valid value of type %GIMP_TYPE_RGB_ARRAY
* @data: (array length=length): A #GimpRGB array
* @length: The number of elements in @data
*
* Sets the contents of @value to @data.
*/
void
gimp_value_set_rgb_array (GValue *value,
const GimpRGB *data,
gsize length)
{
g_return_if_fail (GIMP_VALUE_HOLDS_RGB_ARRAY (value));
gimp_value_set_array (value, (const guint8 *) data,
length * sizeof (GimpRGB));
}
/**
* gimp_value_set_static_rgb_array:
* @value: A valid value of type %GIMP_TYPE_RGB_ARRAY
* @data: (array length=length): A #GimpRGB array
* @length: The number of elements in @data
*
* Sets the contents of @value to @data, without copying the data.
*/
void
gimp_value_set_static_rgb_array (GValue *value,
const GimpRGB *data,
gsize length)
{
g_return_if_fail (GIMP_VALUE_HOLDS_RGB_ARRAY (value));
gimp_value_set_static_array (value, (const guint8 *) data,
length * sizeof (GimpRGB));
}
/**
* gimp_value_take_rgb_array:
* @value: A valid value of type %GIMP_TYPE_RGB_ARRAY
* @data: (transfer full) (array length=length): A #GimpRGB array
* @length: The number of elements in @data
*
* Sets the contents of @value to @data, and takes ownership of @data.
*/
void
gimp_value_take_rgb_array (GValue *value,
GimpRGB *data,
gsize length)
{
g_return_if_fail (GIMP_VALUE_HOLDS_RGB_ARRAY (value));
gimp_value_take_array (value, (guint8 *) data,
length * sizeof (GimpRGB));
}
/* /*
* GIMP_TYPE_OBJECT_ARRAY * GIMP_TYPE_OBJECT_ARRAY
*/ */

View file

@ -294,52 +294,6 @@ void gimp_color_array_free (GimpColorArray array);
gint gimp_color_array_get_length (GimpColorArray array); gint gimp_color_array_get_length (GimpColorArray array);
/*
* GIMP_TYPE_RGB_ARRAY
*/
#define GIMP_TYPE_RGB_ARRAY (gimp_rgb_array_get_type ())
#define GIMP_VALUE_HOLDS_RGB_ARRAY(value) (G_TYPE_CHECK_VALUE_TYPE ((value), GIMP_TYPE_RGB_ARRAY))
GType gimp_rgb_array_get_type (void) G_GNUC_CONST;
/*
* GIMP_TYPE_PARAM_RGB_ARRAY
*/
#define GIMP_TYPE_PARAM_RGB_ARRAY (gimp_param_rgb_array_get_type ())
#define GIMP_PARAM_SPEC_RGB_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), GIMP_TYPE_PARAM_RGB_ARRAY, GimpParamSpecRGBArray))
#define GIMP_IS_PARAM_SPEC_RGB_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), GIMP_TYPE_PARAM_RGB_ARRAY))
typedef struct _GimpParamSpecRGBArray GimpParamSpecRGBArray;
struct _GimpParamSpecRGBArray
{
GParamSpecBoxed parent_instance;
};
GType gimp_param_rgb_array_get_type (void) G_GNUC_CONST;
GParamSpec * gimp_param_spec_rgb_array (const gchar *name,
const gchar *nick,
const gchar *blurb,
GParamFlags flags);
const GimpRGB * gimp_value_get_rgb_array (const GValue *value);
GimpRGB * gimp_value_dup_rgb_array (const GValue *value);
void gimp_value_set_rgb_array (GValue *value,
const GimpRGB *data,
gsize length);
void gimp_value_set_static_rgb_array (GValue *value,
const GimpRGB *data,
gsize length);
void gimp_value_take_rgb_array (GValue *value,
GimpRGB *data,
gsize length);
/* /*
* GIMP_TYPE_OBJECT_ARRAY * GIMP_TYPE_OBJECT_ARRAY
*/ */

View file

@ -330,11 +330,6 @@ gimp_config_param_spec_duplicate (GParamSpec *pspec)
copy = gimp_param_spec_float_array (name, nick, blurb, copy = gimp_param_spec_float_array (name, nick, blurb,
flags); flags);
} }
else if (GIMP_IS_PARAM_SPEC_RGB_ARRAY (pspec))
{
copy = gimp_param_spec_rgb_array (name, nick, blurb,
flags);
}
} }
else if (GIMP_IS_PARAM_SPEC_OBJECT_ARRAY (pspec)) else if (GIMP_IS_PARAM_SPEC_OBJECT_ARRAY (pspec))
{ {

View file

@ -293,8 +293,7 @@ marshal_returned_PDB_values (scheme *sc,
/* In some cases previous value is array_length. */ /* In some cases previous value is array_length. */
if ( GIMP_VALUE_HOLDS_INT32_ARRAY (value) if ( GIMP_VALUE_HOLDS_INT32_ARRAY (value)
|| GIMP_VALUE_HOLDS_FLOAT_ARRAY (value) || GIMP_VALUE_HOLDS_FLOAT_ARRAY (value))
|| GIMP_VALUE_HOLDS_RGB_ARRAY (value))
{ {
array_length = GIMP_VALUES_GET_INT (values, i); array_length = GIMP_VALUES_GET_INT (values, i);
} }
@ -549,37 +548,6 @@ marshal_returned_PDB_value (scheme *sc,
result = temp_val; result = temp_val;
} }
else if (GIMP_VALUE_HOLDS_RGB_ARRAY (value))
{
const GimpRGB *v = gimp_value_get_rgb_array (value);
pointer vector = sc->vptr->mk_vector (sc, array_length);
for (j = 0; j < array_length; j++)
{
/* FIXME this is duplicated in scheme_marshal.c
* Refactor so our repr of pixels is always the same.
* OR ... this is not needed because RGB_ARRAY is no longer in the API?
*/
guchar r, g, b;
pointer temp_val;
gimp_rgb_get_uchar (&v[j], &r, &g, &b);
temp_val = sc->vptr->cons
(sc,
sc->vptr->mk_integer (sc, r),
sc->vptr->cons
(sc,
sc->vptr->mk_integer (sc, g),
sc->vptr->cons
(sc,
sc->vptr->mk_integer (sc, b),
sc->NIL)));
sc->vptr->set_vector_elem (vector, j, temp_val);
}
result = vector;
}
else if (GIMP_VALUE_HOLDS_COLOR_ARRAY (value)) else if (GIMP_VALUE_HOLDS_COLOR_ARRAY (value))
{ {
/* unlike RBG_ARRAY, gimp_value_get_color_array (value) is not defined */ /* unlike RBG_ARRAY, gimp_value_get_color_array (value) is not defined */

View file

@ -1262,14 +1262,16 @@ script_fu_marshal_procedure_call (scheme *sc,
/* Transfer ownership. */ /* Transfer ownership. */
g_value_take_object (&value, color); g_value_take_object (&value, color);
} }
else if (GIMP_VALUE_HOLDS_RGB_ARRAY (&value)) else if (GIMP_VALUE_HOLDS_COLOR_ARRAY (&value))
{ {
vector = sc->vptr->pair_car (a); vector = sc->vptr->pair_car (a);
if (! sc->vptr->is_vector (vector)) if (! sc->vptr->is_vector (vector))
return script_type_error (sc, "vector", i, proc_name); {
return script_type_error (sc, "vector", i, proc_name);
}
else else
{ {
GimpRGB *array; GeglColor **colors;
if (i == 0) if (i == 0)
return script_error (sc, "The first argument cannot be an array", a); return script_error (sc, "The first argument cannot be an array", a);
@ -1281,20 +1283,20 @@ script_fu_marshal_procedure_call (scheme *sc,
if (n_elements > sc->vptr->vector_length (vector)) if (n_elements > sc->vptr->vector_length (vector))
return script_length_error_in_vector (sc, i, proc_name, n_elements, vector); return script_length_error_in_vector (sc, i, proc_name, n_elements, vector);
array = g_new0 (GimpRGB, n_elements); colors = g_new0 (GeglColor *, n_elements + 1);
for (j = 0; j < n_elements; j++) for (j = 0; j < n_elements; j++)
{ {
pointer v_element = sc->vptr->vector_elem (vector, j); pointer v_element = sc->vptr->vector_elem (vector, j);
pointer color_list; pointer color_list;
guchar r, g, b; guchar rgb[3];
if (! (sc->vptr->is_list (sc, if (! (sc->vptr->is_list (sc,
sc->vptr->pair_car (v_element)) && sc->vptr->pair_car (v_element)) &&
sc->vptr->list_length (sc, sc->vptr->list_length (sc,
sc->vptr->pair_car (v_element)) == 3)) sc->vptr->pair_car (v_element)) == 3))
{ {
g_free (array); gimp_color_array_free (colors);
g_snprintf (error_str, sizeof (error_str), g_snprintf (error_str, sizeof (error_str),
"Item %d in vector is not a color " "Item %d in vector is not a color "
"(argument %d for function %s)", "(argument %d for function %s)",
@ -1303,19 +1305,20 @@ script_fu_marshal_procedure_call (scheme *sc,
} }
color_list = sc->vptr->pair_car (v_element); color_list = sc->vptr->pair_car (v_element);
r = CLAMP (sc->vptr->ivalue (sc->vptr->pair_car (color_list)), rgb[0] = CLAMP (sc->vptr->ivalue (sc->vptr->pair_car (color_list)),
0, 255); 0, 255);
color_list = sc->vptr->pair_cdr (color_list); color_list = sc->vptr->pair_cdr (color_list);
g = CLAMP (sc->vptr->ivalue (sc->vptr->pair_car (color_list)), rgb[1] = CLAMP (sc->vptr->ivalue (sc->vptr->pair_car (color_list)),
0, 255); 0, 255);
color_list = sc->vptr->pair_cdr (color_list); color_list = sc->vptr->pair_cdr (color_list);
b = CLAMP (sc->vptr->ivalue (sc->vptr->pair_car (color_list)), rgb[2] = CLAMP (sc->vptr->ivalue (sc->vptr->pair_car (color_list)),
0, 255); 0, 255);
gimp_rgba_set_uchar (&array[i], r, g, b, 255); colors[j] = gegl_color_new (NULL);
gegl_color_set_pixel (colors[j], babl_format ("R'G'B' u8"), rgb);
} }
gimp_value_take_rgb_array (&value, array, n_elements); g_value_take_boxed (&value, colors);
g_debug ("color vector has %ld elements", sc->vptr->vector_length (vector)); g_debug ("color vector has %ld elements", sc->vptr->vector_length (vector));
} }