# 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 . # "Perlized" from C source by Manish Singh 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;