diff options
Diffstat (limited to 'pdb/groups/selection_tools.pdb')
-rw-r--r-- | pdb/groups/selection_tools.pdb | 419 |
1 files changed, 419 insertions, 0 deletions
diff --git a/pdb/groups/selection_tools.pdb b/pdb/groups/selection_tools.pdb new file mode 100644 index 0000000..b71f86d --- /dev/null +++ b/pdb/groups/selection_tools.pdb @@ -0,0 +1,419 @@ +# GIMP - The GNU Image Manipulation Program +# Copyright (C) 1995 Spencer Kimball and Peter Mattis + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# This program 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 General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <https://www.gnu.org/licenses/>. + +# "Perlized" from C source by Manish Singh <yosh@gimp.org> + +sub by_color_select { + &std_pdb_deprecated ('gimp-image-select-color'); + + @inargs = ( + { name => 'drawable', type => 'drawable', + desc => 'The affected drawable' }, + { name => 'color', type => 'color', + desc => 'The color to select' }, + { name => 'threshold', type => '0 <= int32 <= 255', + desc => 'Threshold in intensity levels' }, + { name => 'operation', type => 'enum GimpChannelOps', + desc => 'The selection operation' }, + { name => 'antialias', type => 'boolean', + desc => 'Antialiasing' }, + { name => 'feather', type => 'boolean', + desc => 'Feather option for selections' }, + { name => 'feather_radius', type => '0 <= float', + desc => 'Radius for feather operation' }, + { name => 'sample_merged', type => 'boolean', + desc => 'Use the composite image, not the drawable' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpImage *image = gimp_item_get_image (GIMP_ITEM (drawable)); + + gimp_channel_select_by_color (gimp_image_get_mask (image), drawable, + sample_merged, + &color, + threshold / 255.0, + FALSE /* don't select transparent */, + GIMP_SELECT_CRITERION_COMPOSITE, + operation, + antialias, + feather, + feather_radius, + feather_radius); +} +CODE + ); +} + + +sub by_color_select_full { + &std_pdb_deprecated ('gimp-image-select-color'); + &david_pdb_misc('2006','2.4'); + + @inargs = ( + { name => 'drawable', type => 'drawable', + desc => 'The affected drawable' }, + { name => 'color', type => 'color', + desc => 'The color to select' }, + { name => 'threshold', type => '0 <= int32 <= 255', + desc => 'Threshold in intensity levels' }, + { name => 'operation', type => 'enum GimpChannelOps', + desc => 'The selection operation' }, + { name => 'antialias', type => 'boolean', + desc => 'Antialiasing' }, + { name => 'feather', type => 'boolean', + desc => 'Feather option for selections' }, + { name => 'feather_radius_x', type => '0 <= float', + desc => 'Radius for feather operation in X direction' }, + { name => 'feather_radius_y', type => '0 <= float', + desc => 'Radius for feather operation in Y direction' }, + { name => 'sample_merged', type => 'boolean', + desc => 'Use the composite image, not the drawable' }, + { name => 'select_transparent', type => 'boolean', + desc => "Whether to consider transparent pixels for selection. + If TRUE, transparency is considered as a unique selectable + color." }, + { name => 'select_criterion', type => 'enum GimpSelectCriterion', + desc => "The criterion used to determine color similarity. + SELECT_CRITERION_COMPOSITE is the standard choice. + " }, + ); + + %invoke = ( + code => <<'CODE' +{ + GimpImage *image = gimp_item_get_image (GIMP_ITEM (drawable)); + + gimp_channel_select_by_color (gimp_image_get_mask (image), drawable, + sample_merged, + &color, + threshold / 255.0, + select_transparent, + select_criterion, + operation, + antialias, + feather, + feather_radius_x, + feather_radius_y); +} +CODE + ); +} + + +sub ellipse_select { + &std_pdb_deprecated ('gimp-image-select-ellipse'); + + @inargs = ( + { name => 'image', type => 'image', + desc => 'The image' }, + { name => 'x', type => 'float', + desc => 'x coordinate of upper-left corner of ellipse bounding box' }, + { name => 'y', type => 'float', + desc => 'y coordinate of upper-left corner of ellipse bounding box' }, + { name => 'width', type => '0 < float', + desc => 'The width of the ellipse' }, + { name => 'height', type => '0 < float', + desc => 'The height of the ellipse' }, + { name => 'operation', type => 'enum GimpChannelOps', + desc => 'The selection operation' }, + { name => 'antialias', type => 'boolean', + desc => 'Antialiasing' }, + { name => 'feather', type => 'boolean', + desc => 'Feather option for selections' }, + { name => 'feather_radius', type => '0 <= float', + desc => 'Radius for feather operation' } + ); + + %invoke = ( + code => <<'CODE' +{ + gimp_channel_select_ellipse (gimp_image_get_mask (image), + (gint) x, (gint) y, + (gint) width, (gint) height, + operation, + antialias, + feather, + feather_radius, + feather_radius, + TRUE); +} +CODE + ); +} + + +sub free_select { + &std_pdb_deprecated ('gimp-image-select-polygon'); + + @inargs = ( + { name => 'image', type => 'image', + desc => 'The image' }, + { name => 'segs', type => 'floatarray', + desc => 'Array of points: { p1.x, p1.y, p2.x, p2.y, ..., + pn.x, pn.y}', + array => { type => '2 <= int32', + desc => 'Number of points (count 1 coordinate as two + points)' } }, + { name => 'operation', type => 'enum GimpChannelOps', + desc => 'The selection operation' }, + { name => 'antialias', type => 'boolean', + desc => 'Antialiasing' }, + { name => 'feather', type => 'boolean', + desc => 'Feather option for selections' }, + { name => 'feather_radius', type => '0 <= float', + desc => 'Radius for feather operation' } + ); + + %invoke = ( + code => <<'CODE' +{ + gimp_channel_select_polygon (gimp_image_get_mask (image), + _("Free Select"), + num_segs / 2, + (GimpVector2 *) segs, + operation, + antialias, + feather, + feather_radius, + feather_radius, + TRUE); +} +CODE + ); +} + + +sub fuzzy_select { + &std_pdb_deprecated ('gimp-image-select-contiguous-color'); + + @inargs = ( + { name => 'drawable', type => 'drawable', + desc => 'The affected drawable' }, + { name => 'x', type => 'float', + desc => 'x coordinate of initial seed fill point: (image + coordinates)' }, + { name => 'y', type => 'float', + desc => 'y coordinate of initial seed fill point: (image + coordinates)' }, + { name => 'threshold', type => '0 <= int32 <= 255', + desc => 'Threshold in intensity levels' }, + { name => 'operation', type => 'enum GimpChannelOps', + desc => 'The selection operation' }, + { name => 'antialias', type => 'boolean', + desc => 'Antialiasing' }, + { name => 'feather', type => 'boolean', + desc => 'Feather option for selections' }, + { name => 'feather_radius', type => '0 <= float', + desc => 'Radius for feather operation' }, + { name => 'sample_merged', type => 'boolean', + desc => 'Use the composite image, not the drawable' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpImage *image = gimp_item_get_image (GIMP_ITEM (drawable)); + + gimp_channel_select_fuzzy (gimp_image_get_mask (image), + drawable, + sample_merged, + x, y, + threshold / 255.0, + FALSE /* don't select transparent */, + GIMP_SELECT_CRITERION_COMPOSITE, + FALSE /* no diagonal neighbors */, + operation, + antialias, + feather, + feather_radius, + feather_radius); +} +CODE + ); +} + + +sub fuzzy_select_full { + &std_pdb_deprecated ('gimp-image-select-contiguous-color'); + &david_pdb_misc("2006","2.4"); + + @inargs = ( + { name => 'drawable', type => 'drawable', + desc => 'The affected drawable' }, + { name => 'x', type => 'float', + desc => 'x coordinate of initial seed fill point: (image + coordinates)' }, + { name => 'y', type => 'float', + desc => 'y coordinate of initial seed fill point: (image + coordinates)' }, + { name => 'threshold', type => '0 <= int32 <= 255', + desc => 'Threshold in intensity levels' }, + { name => 'operation', type => 'enum GimpChannelOps', + desc => 'The selection operation' }, + { name => 'antialias', type => 'boolean', + desc => 'Antialiasing' }, + { name => 'feather', type => 'boolean', + desc => 'Feather option for selections' }, + { name => 'feather_radius_x', type => '0 <= float', + desc => 'Radius for feather operation in X direction' }, + { name => 'feather_radius_y', type => '0 <= float', + desc => 'Radius for feather operation in Y direction' }, + { name => 'sample_merged', type => 'boolean', + desc => 'Use the composite image, not the drawable' }, + { name => 'select_transparent', type => 'boolean', + desc => "Whether to consider transparent pixels for selection. + If TRUE, transparency is considered as a unique selectable + color." }, + { name => 'select_criterion', type => 'enum GimpSelectCriterion', + desc => "The criterion used to determine color similarity. + SELECT_CRITERION_COMPOSITE is the standard choice. + " }, + ); + + %invoke = ( + code => <<'CODE' +{ + GimpImage *image = gimp_item_get_image (GIMP_ITEM (drawable)); + + gimp_channel_select_fuzzy (gimp_image_get_mask (image), + drawable, + sample_merged, + x, y, + threshold / 255.0, + select_transparent, + select_criterion, + FALSE /* no diagonal neighbors */, + operation, + antialias, + feather, + feather_radius_x, + feather_radius_y); +} +CODE + ); +} + + +sub rect_select { + &std_pdb_deprecated ('gimp-image-select-rectangle'); + + @inargs = ( + { name => 'image', type => 'image', + desc => 'The image' }, + { name => 'x', type => 'float', + desc => 'x coordinate of upper-left corner of rectangle' }, + { name => 'y', type => 'float', + desc => 'y coordinate of upper-left corner of rectangle' }, + { name => 'width', type => '0 < float', + desc => 'The width of the rectangle' }, + { name => 'height', type => '0 < float', + desc => 'The height of the rectangle' }, + { name => 'operation', type => 'enum GimpChannelOps', + desc => 'The selection operation' }, + { name => 'feather', type => 'boolean', + desc => 'Feather option for selections' }, + { name => 'feather_radius', type => '0 <= float', + desc => 'Radius for feather operation' } + ); + + %invoke = ( + code => <<'CODE' +{ + gimp_channel_select_rectangle (gimp_image_get_mask (image), + (gint) x, (gint) y, + (gint) width, (gint) height, + operation, + feather, + feather_radius, + feather_radius, + TRUE); +} +CODE + ); +} + + +sub round_rect_select { + &std_pdb_deprecated ('gimp-image-select-round-rectangle'); + &martin_pdb_misc("2006","2.4"); + + @inargs = ( + { name => 'image', type => 'image', + desc => 'The image' }, + { name => 'x', type => 'float', + desc => 'x coordinate of upper-left corner of rectangle' }, + { name => 'y', type => 'float', + desc => 'y coordinate of upper-left corner of rectangle' }, + { name => 'width', type => '0 < float', + desc => 'The width of the rectangle' }, + { name => 'height', type => '0 < float', + desc => 'The height of the rectangle' }, + { name => 'corner_radius_x', type => '0 < float < GIMP_MAX_IMAGE_SIZE', + desc => 'The corner radius in X direction' }, + { name => 'corner_radius_y', type => '0 < float < GIMP_MAX_IMAGE_SIZE', + desc => 'The corner radius in Y direction' }, + { name => 'operation', type => 'enum GimpChannelOps', + desc => 'The selection operation' }, + { name => 'antialias', type => 'boolean', + desc => 'Antialiasing' }, + { name => 'feather', type => 'boolean', + desc => 'Feather option for selections' }, + { name => 'feather_radius_x', type => '0 <= float', + desc => 'Radius for feather operation in X direction' }, + { name => 'feather_radius_y', type => '0 <= float', + desc => 'Radius for feather operation in Y direction' } + ); + + %invoke = ( + code => <<'CODE' +{ + gimp_channel_select_round_rect (gimp_image_get_mask (image), + (gint) x, (gint) y, + (gint) width, (gint) height, + corner_radius_x, + corner_radius_y, + operation, + antialias, + feather, + feather_radius_x, + feather_radius_y, + TRUE); +} +CODE + ); +} + + +@headers = qw("libgimpbase/gimpbase.h" + "core/gimpchannel-select.h" + "gimp-intl.h"); + +@procs = qw(by_color_select by_color_select_full + ellipse_select + free_select + fuzzy_select fuzzy_select_full + rect_select round_rect_select); + +%exports = (app => [@procs], lib => [@procs]); + +$desc = 'Selection Tool procedures'; +$doc_title = 'gimpselectiontools'; +$doc_short_desc = 'Access to toolbox selection tools.'; +$doc_long_desc = 'Functions giving access to toolbox selection tools.'; + +1; |