From 8e6fb3d0e4b5e0939955bfbcb4c4473213d828f7 Mon Sep 17 00:00:00 2001 From: Alx Sa Date: Sat, 6 Jul 2024 21:28:53 +0000 Subject: [PATCH] pdb: Remove uchar type Resolves #10855 Replaces the uchar arguments in plug_in_exchange () with floats to better match gegl:color-exchange's arguments. Since this was the last plug-in that used uchar, we also remove the datatype from PDB. --- app/pdb/plug-in-compat-cmds.c | 140 +++++++++++++++++----------------- pdb/app.pl | 22 ------ pdb/groups/plug_in_compat.pdb | 34 ++++----- pdb/pdb.pl | 10 --- 4 files changed, 87 insertions(+), 119 deletions(-) diff --git a/app/pdb/plug-in-compat-cmds.c b/app/pdb/plug-in-compat-cmds.c index acd3eed14c..bbb8d363ab 100644 --- a/app/pdb/plug-in-compat-cmds.c +++ b/app/pdb/plug-in-compat-cmds.c @@ -1768,26 +1768,26 @@ plug_in_exchange_invoker (GimpProcedure *procedure, { gboolean success = TRUE; GimpDrawable *drawable; - guchar from_red; - guchar from_green; - guchar from_blue; - guchar to_red; - guchar to_green; - guchar to_blue; - guchar red_threshold; - guchar green_threshold; - guchar blue_threshold; + gdouble from_red; + gdouble from_green; + gdouble from_blue; + gdouble to_red; + gdouble to_green; + gdouble to_blue; + gdouble red_threshold; + gdouble green_threshold; + gdouble blue_threshold; drawable = g_value_get_object (gimp_value_array_index (args, 2)); - from_red = g_value_get_uchar (gimp_value_array_index (args, 3)); - from_green = g_value_get_uchar (gimp_value_array_index (args, 4)); - from_blue = g_value_get_uchar (gimp_value_array_index (args, 5)); - to_red = g_value_get_uchar (gimp_value_array_index (args, 6)); - to_green = g_value_get_uchar (gimp_value_array_index (args, 7)); - to_blue = g_value_get_uchar (gimp_value_array_index (args, 8)); - red_threshold = g_value_get_uchar (gimp_value_array_index (args, 9)); - green_threshold = g_value_get_uchar (gimp_value_array_index (args, 10)); - blue_threshold = g_value_get_uchar (gimp_value_array_index (args, 11)); + from_red = g_value_get_double (gimp_value_array_index (args, 3)); + from_green = g_value_get_double (gimp_value_array_index (args, 4)); + from_blue = g_value_get_double (gimp_value_array_index (args, 5)); + to_red = g_value_get_double (gimp_value_array_index (args, 6)); + to_green = g_value_get_double (gimp_value_array_index (args, 7)); + to_blue = g_value_get_double (gimp_value_array_index (args, 8)); + red_threshold = g_value_get_double (gimp_value_array_index (args, 9)); + green_threshold = g_value_get_double (gimp_value_array_index (args, 10)); + blue_threshold = g_value_get_double (gimp_value_array_index (args, 11)); if (success) { @@ -1799,18 +1799,18 @@ plug_in_exchange_invoker (GimpProcedure *procedure, GeglColor *gegl_to = gegl_color_new (NULL); GeglNode *node; - gegl_color_set_rgba (gegl_from, from_red / 255.0, from_green / 255.0, - from_blue / 255.0, 1.0); - gegl_color_set_rgba (gegl_to, to_red / 255.0, to_green / 255.0, - to_blue / 255.0, 1.0); + gegl_color_set_rgba (gegl_from, from_red, from_green, + from_blue, 1.0); + gegl_color_set_rgba (gegl_to, to_red, to_green, + to_blue, 1.0); node = gegl_node_new_child (NULL, "operation", "gegl:color-exchange", "from-color", gegl_from, "to-color", gegl_to, - "red-threshold", red_threshold / 255.0, - "green-threshold", green_threshold / 255.0, - "blue-threshold", blue_threshold / 255.0, + "red-threshold", red_threshold, + "green-threshold", green_threshold, + "blue-threshold", blue_threshold, NULL); g_object_unref (gegl_from); @@ -6328,59 +6328,59 @@ register_plug_in_compat_procs (GimpPDB *pdb) FALSE, GIMP_PARAM_READWRITE)); gimp_procedure_add_argument (procedure, - g_param_spec_uchar ("from-red", - "from red", - "Red value (from)", - 0, G_MAXUINT8, 0, - GIMP_PARAM_READWRITE)); + g_param_spec_double ("from-red", + "from red", + "Red value (from)", + 0.0, 1.0, 0.0, + GIMP_PARAM_READWRITE)); gimp_procedure_add_argument (procedure, - g_param_spec_uchar ("from-green", - "from green", - "Green value (from)", - 0, G_MAXUINT8, 0, - GIMP_PARAM_READWRITE)); + g_param_spec_double ("from-green", + "from green", + "Green value (from)", + 0.0, 1.0, 0.0, + GIMP_PARAM_READWRITE)); gimp_procedure_add_argument (procedure, - g_param_spec_uchar ("from-blue", - "from blue", - "Blue value (from)", - 0, G_MAXUINT8, 0, - GIMP_PARAM_READWRITE)); + g_param_spec_double ("from-blue", + "from blue", + "Blue value (from)", + 0.0, 1.0, 0.0, + GIMP_PARAM_READWRITE)); gimp_procedure_add_argument (procedure, - g_param_spec_uchar ("to-red", - "to red", - "Red value (to)", - 0, G_MAXUINT8, 0, - GIMP_PARAM_READWRITE)); + g_param_spec_double ("to-red", + "to red", + "Red value (to)", + 0.0, 1.0, 0.0, + GIMP_PARAM_READWRITE)); gimp_procedure_add_argument (procedure, - g_param_spec_uchar ("to-green", - "to green", - "Green value (to)", - 0, G_MAXUINT8, 0, - GIMP_PARAM_READWRITE)); + g_param_spec_double ("to-green", + "to green", + "Green value (to)", + 0.0, 1.0, 0.0, + GIMP_PARAM_READWRITE)); gimp_procedure_add_argument (procedure, - g_param_spec_uchar ("to-blue", - "to blue", - "Blue value (to)", - 0, G_MAXUINT8, 0, - GIMP_PARAM_READWRITE)); + g_param_spec_double ("to-blue", + "to blue", + "Blue value (to)", + 0.0, 1.0, 0.0, + GIMP_PARAM_READWRITE)); gimp_procedure_add_argument (procedure, - g_param_spec_uchar ("red-threshold", - "red threshold", - "Red threshold", - 0, G_MAXUINT8, 0, - GIMP_PARAM_READWRITE)); + g_param_spec_double ("red-threshold", + "red threshold", + "Red threshold", + 0.0, 1.0, 0.0, + GIMP_PARAM_READWRITE)); gimp_procedure_add_argument (procedure, - g_param_spec_uchar ("green-threshold", - "green threshold", - "Green threshold", - 0, G_MAXUINT8, 0, - GIMP_PARAM_READWRITE)); + g_param_spec_double ("green-threshold", + "green threshold", + "Green threshold", + 0.0, 1.0, 0.0, + GIMP_PARAM_READWRITE)); gimp_procedure_add_argument (procedure, - g_param_spec_uchar ("blue-threshold", - "blue threshold", - "Blue threshold", - 0, G_MAXUINT8, 0, - GIMP_PARAM_READWRITE)); + g_param_spec_double ("blue-threshold", + "blue threshold", + "Blue threshold", + 0.0, 1.0, 0.0, + GIMP_PARAM_READWRITE)); gimp_pdb_register_procedure (pdb, procedure); g_object_unref (procedure); diff --git a/pdb/app.pl b/pdb/app.pl index 18309617e4..62b0c35663 100644 --- a/pdb/app.pl +++ b/pdb/app.pl @@ -489,28 +489,6 @@ g_param_spec_int ("$name", "$blurb", $min, $max, $default, $flags) -CODE - } - elsif ($pdbtype eq 'uchar') { - if (defined $typeinfo[0]) { - $min = ($typeinfo[1] eq '<') ? ($typeinfo[0] + 1) : $typeinfo[0]; - } - else { - $min = 0; - } - if (defined $typeinfo[2]) { - $max = ($typeinfo[3] eq '<') ? ($typeinfo[2] - 1) : $typeinfo[2]; - } - else { - $max = G_MAXUINT8; - } - $default = exists $arg->{default} ? $arg->{default} : defined $typeinfo[0] ? $typeinfo[0] : 0; - $pspec = < 'drawable', type => 'drawable', desc => 'Input drawable' }, - { name => 'from_red', type => 'uchar', + { name => 'from_red', type => '0.0 <= float <= 1.0', desc => 'Red value (from)' }, - { name => 'from_green', type => 'uchar', + { name => 'from_green', type => '0.0 <= float <= 1.0', desc => 'Green value (from)' }, - { name => 'from_blue', type => 'uchar', + { name => 'from_blue', type => '0.0 <= float <= 1.0', desc => 'Blue value (from)' }, - { name => 'to_red', type => 'uchar', + { name => 'to_red', type => '0.0 <= float <= 1.0', desc => 'Red value (to)' }, - { name => 'to_green', type => 'uchar', + { name => 'to_green', type => '0.0 <= float <= 1.0', desc => 'Green value (to)' }, - { name => 'to_blue', type => 'uchar', + { name => 'to_blue', type => '0.0 <= float <= 1.0', desc => 'Blue value (to)' }, - { name => 'red_threshold', type => 'uchar', + { name => 'red_threshold', type => '0.0 <= float <= 1.0', desc => 'Red threshold' }, - { name => 'green_threshold', type => 'uchar', + { name => 'green_threshold', type => '0.0 <= float <= 1.0', desc => 'Green threshold' }, - { name => 'blue_threshold', type => 'uchar', + { name => 'blue_threshold', type => '0.0 <= float <= 1.0', desc => 'Blue threshold' } ); @@ -1579,18 +1579,18 @@ HELP GeglColor *gegl_to = gegl_color_new (NULL); GeglNode *node; - gegl_color_set_rgba (gegl_from, from_red / 255.0, from_green / 255.0, - from_blue / 255.0, 1.0); - gegl_color_set_rgba (gegl_to, to_red / 255.0, to_green / 255.0, - to_blue / 255.0, 1.0); + gegl_color_set_rgba (gegl_from, from_red, from_green, + from_blue, 1.0); + gegl_color_set_rgba (gegl_to, to_red, to_green, + to_blue, 1.0); node = gegl_node_new_child (NULL, "operation", "gegl:color-exchange", "from-color", gegl_from, "to-color", gegl_to, - "red-threshold", red_threshold / 255.0, - "green-threshold", green_threshold / 255.0, - "blue-threshold", blue_threshold / 255.0, + "red-threshold", red_threshold, + "green-threshold", green_threshold, + "blue-threshold", blue_threshold, NULL); g_object_unref (gegl_from); @@ -5582,4 +5582,4 @@ $doc_title = 'gimpplugincompat'; $doc_short_desc = 'Compatibility for removed plug-ins.'; $doc_long_desc = 'Functions that perform the operation of removed plug-ins using GEGL operations or other GIMP internal functions.'; -1; +1; \ No newline at end of file diff --git a/pdb/pdb.pl b/pdb/pdb.pl index cfd3ee89da..80bc2dfbc9 100644 --- a/pdb/pdb.pl +++ b/pdb/pdb.pl @@ -27,16 +27,6 @@ package Gimp::CodeGen::pdb; set_value_func => 'g_value_set_int ($value, $var)', take_value_func => 'g_value_set_int ($value, $var)' }, - uchar => { name => 'UCHAR', - gtype => 'G_TYPE_UCHAR', - type => 'guchar ', - const_type => 'guchar ', - init_value => '0', - get_value_func => '$var = g_value_get_uchar ($value)', - dup_value_func => '$var = GIMP_VALUES_GET_UCHAR ($value)', - set_value_func => 'g_value_set_uchar ($value, $var)', - take_value_func => 'g_value_set_uchar ($value, $var)' }, - float => { name => 'FLOAT', gtype => 'G_TYPE_DOUBLE', type => 'gdouble ',