Spracherkennung für: .pdb vermutete Sprache: Abap {ABAP[74] Masm[44] Cobol[43]} [Methode: maximale Elemente, drei Dimensionen]
# 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 image_select_color {
$blurb = <<
'BLURB';
Create a selection
by selecting all pixels (
in the
specified drawable)
with the same (
or similar)
color to that
specified.
BLURB
$help = <<
'HELP';
This tool creates a selection over the
specified image. A
by-
color
selection
is determined
by the supplied
color under the constraints
of
the current context settings. Essentially, all pixels (
in the drawable)
that have
color sufficiently
close to the
specified color (
as
determined
by the threshold
and criterion context values) are included
in the selection.
To select transparent regions, the
color specified
must also have minimum alpha.
This procedure
is affected
by the following context setters:
gimp_context_set_antialias(), gimp_context_set_feather(),
gimp_context_set_feather_radius(), gimp_context_set_sample_merged(),
gimp_context_set_sample_criterion(), gimp_context_set_sample_threshold(),
gimp_context_set_sample_transparent().
In the
case of a merged sampling, the supplied drawable
is ignored.
HELP
&david_pdb_misc(
'2010',
'2.8');
@inargs = (
{ name =>
'image',
type =>
'image',
desc =>
'The affected image' },
{ name =>
'operation',
type =>
'enum GimpChannelOps',
desc =>
'The selection operation' },
{ name =>
'drawable',
type =>
'drawable',
desc =>
'The affected drawable' },
{ name =>
'color',
type =>
'geglcolor',
desc =>
'The color to select' }
);
%invoke = (
code => <<
'CODE'
{
GimpPDBContext
*pdb_context = GIMP_PDB_CONTEXT (context);
if (pdb_context->sample_merged ||
gimp_pdb_item_is_attached (GIMP_ITEM (drawable), image,
0, error))
{
GList
*drawables = g_list_prepend (NULL, drawable);
gimp_channel_select_by_color (gimp_image_get_mask (image), drawables,
pdb_context->sample_merged,
color,
pdb_context->sample_threshold,
pdb_context->sample_transparent,
pdb_context->sample_criterion,
operation,
pdb_context->antialias,
pdb_context->feather,
pdb_context->feather_radius_x,
pdb_context->feather_radius_y);
g_list_free (drawables);
}
else
success = FALSE;
}
CODE
);
}
sub image_select_contiguous_color {
$blurb = <<
'BLURB';
Create a selection
by selecting all pixels around
specified coordinates
with the same (
or similar)
color to that
at the coordinates.
BLURB
$help = <<
'HELP';
This tool creates a contiguous selection over the
specified image. A
contiguous
color selection
is determined
by a seed fill
under the
constraints
of the current context settings. Essentially, the
color
at the
specified coordinates (
in the drawable)
is measured
and the
selection expands outwards
from that point
to any adjacent pixels
which are not significantly different (
as determined
by the threshold
and criterion context settings). This process continues until no more
expansion
is possible.
If antialiasing
is turned
on, the final
selection
mask will contain intermediate values based
on close misses
to the threshold bar
at pixels along the seed fill boundary.
This procedure
is affected
by the following context setters:
gimp_context_set_antialias(), gimp_context_set_feather(),
gimp_context_set_feather_radius(), gimp_context_set_sample_merged(),
gimp_context_set_sample_criterion(), gimp_context_set_sample_threshold(),
gimp_context_set_sample_transparent(), gimp_context_set_diagonal_neighbors().
In the
case of a merged sampling, the supplied drawable
is ignored.
If the sample
is merged, the
specified coordinates are relative
to the
image origin; otherwise, they are relative
to the drawable
's origin.
HELP
&david_pdb_misc(
'2010',
'2.8');
@inargs = (
{ name =>
'image',
type =>
'image',
desc =>
'The affected image' },
{ name =>
'operation',
type =>
'enum GimpChannelOps',
desc =>
'The selection operation' },
{ name =>
'drawable',
type =>
'drawable',
desc =>
'The affected drawable' },
{ name =>
'x',
type =>
'double',
desc =>
'x coordinate of initial seed fill point: (image
coordinates)
' },
{ name =>
'y',
type =>
'double',
desc =>
'y coordinate of initial seed fill point: (image
coordinates)
' }
);
%invoke = (
code => <<
'CODE'
{
GimpPDBContext
*pdb_context = GIMP_PDB_CONTEXT (context);
if (pdb_context->sample_merged ||
gimp_pdb_item_is_attached (GIMP_ITEM (drawable), image,
0, error))
{
gimp_channel_select_fuzzy (gimp_image_get_mask (image),
drawable,
pdb_context->sample_merged,
x, y,
pdb_context->sample_threshold,
pdb_context->sample_transparent,
pdb_context->sample_criterion,
pdb_context->diagonal_neighbors,
operation,
pdb_context->antialias,
pdb_context->feather,
pdb_context->feather_radius_x,
pdb_context->feather_radius_y);
}
else
success = FALSE;
}
CODE
);
}
sub image_select_rectangle {
$blurb =
'Create a rectangular selection over the specified image;';
$help = <<
'HELP';
This tool creates a rectangular selection over the
specified
image. The rectangular region can be either added
to, subtracted
from,
or replace the contents
of the previous selection
mask.
This procedure
is affected
by the following context setters:
gimp_context_set_feather(), gimp_context_set_feather_radius().
HELP
&mitch_pdb_misc(
'2010',
'2.8');
@inargs = (
{ name =>
'image',
type =>
'image',
desc =>
'The image' },
{ name =>
'operation',
type =>
'enum GimpChannelOps',
desc =>
'The selection operation' },
{ name =>
'x',
type =>
'double',
desc =>
'x coordinate of upper-left corner of rectangle' },
{ name =>
'y',
type =>
'double',
desc =>
'y coordinate of upper-left corner of rectangle' },
{ name =>
'width',
type =>
'0 < double',
desc =>
'The width of the rectangle' },
{ name =>
'height',
type =>
'0 < double',
desc =>
'The height of the rectangle' }
);
%invoke = (
code => <<
'CODE'
{
GimpPDBContext
*pdb_context = GIMP_PDB_CONTEXT (context);
gimp_channel_select_rectangle (gimp_image_get_mask (image),
(gint) x, (gint) y,
(gint) width, (gint) height,
operation,
pdb_context->feather,
pdb_context->feather_radius_x,
pdb_context->feather_radius_y,
TRUE);
}
CODE
);
}
sub image_select_round_rectangle {
$blurb =
'Create a rectangular selection with round corners over the specified image;';
$help = <<
'HELP';
This tool creates a rectangular selection with
round corners over the
specified image. The rectangular region can be either added
to,
subtracted
from,
or replace the contents
of the previous selection
mask.
This procedure
is affected
by the following context setters:
gimp_context_set_antialias(), gimp_context_set_feather(),
gimp_context_set_feather_radius().
HELP
&martin_pdb_misc(
'2010',
'2.8');
@inargs = (
{ name =>
'image',
type =>
'image',
desc =>
'The image' },
{ name =>
'operation',
type =>
'enum GimpChannelOps',
desc =>
'The selection operation' },
{ name =>
'x',
type =>
'double',
desc =>
'x coordinate of upper-left corner of rectangle' },
{ name =>
'y',
type =>
'double',
desc =>
'y coordinate of upper-left corner of rectangle' },
{ name =>
'width',
type =>
'0 < double',
desc =>
'The width of the rectangle' },
{ name =>
'height',
type =>
'0 < double',
desc =>
'The height of the rectangle' },
{ name =>
'corner_radius_x',
type =>
'0 < double < GIMP_MAX_IMAGE_SIZE',
desc =>
'The corner radius in X direction' },
{ name =>
'corner_radius_y',
type =>
'0 < double < GIMP_MAX_IMAGE_SIZE',
desc =>
'The corner radius in Y direction' }
);
%invoke = (
code => <<
'CODE'
{
GimpPDBContext
*pdb_context = GIMP_PDB_CONTEXT (context);
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,
pdb_context->antialias,
pdb_context->feather,
pdb_context->feather_radius_x,
pdb_context->feather_radius_y,
TRUE);
}
CODE
);
}
sub image_select_ellipse {
$blurb =
'Create an elliptical selection over the specified image.';
$help = <<
'HELP';
This tool creates an elliptical selection over the
specified
image. The elliptical region can be either added
to, subtracted
from,
or replace the contents
of the previous selection
mask.
This procedure
is affected
by the following context setters:
gimp_context_set_antialias(), gimp_context_set_feather(),
gimp_context_set_feather_radius().
HELP
&mitch_pdb_misc(
'2010',
'2.8');
@inargs = (
{ name =>
'image',
type =>
'image',
desc =>
'The image' },
{ name =>
'operation',
type =>
'enum GimpChannelOps',
desc =>
'The selection operation' },
{ name =>
'x',
type =>
'double',
desc =>
'x coordinate of upper-left corner of ellipse bounding box' },
{ name =>
'y',
type =>
'double',
desc =>
'y coordinate of upper-left corner of ellipse bounding box' },
{ name =>
'width',
type =>
'0 < double',
desc =>
'The width of the ellipse' },
{ name =>
'height',
type =>
'0 < double',
desc =>
'The height of the ellipse' }
);
%invoke = (
code => <<
'CODE'
{
GimpPDBContext
*pdb_context = GIMP_PDB_CONTEXT (context);
gimp_channel_select_ellipse (gimp_image_get_mask (image),
(gint) x, (gint) y,
(gint) width, (gint) height,
operation,
pdb_context->antialias,
pdb_context->feather,
pdb_context->feather_radius_x,
pdb_context->feather_radius_y,
TRUE);
}
CODE
);
}
sub image_select_polygon {
$blurb =
'Create a polygonal selection over the specified image.';
$help = <<
'HELP';
This tool creates a polygonal selection over the
specified image. The
polygonal region can be either added
to, subtracted
from,
or replace
the contents
of the previous selection
mask. The polygon
is specified
through an array
of floating point numbers
and its length. The length
of array must be
2n,
where n
is the number
of points. Each point
is
defined
by 2 floating point values which correspond
to the x
and y
coordinates.
If the final point does not connect
to the starting
point, a connecting segment
is automatically added.
This procedure
is affected
by the following context setters:
gimp_context_set_antialias(), gimp_context_set_feather(),
gimp_context_set_feather_radius().
HELP
&mitch_pdb_misc(
'2010',
'2.8');
@inargs = (
{ name =>
'image',
type =>
'image',
desc =>
'The image' },
{ name =>
'operation',
type =>
'enum GimpChannelOps',
desc =>
'The selection operation' },
{ name =>
'segs',
type =>
'doublearray',
desc =>
'Array of points: { p1.x, p1.y, p2.x, p2.y, ...,
pn.x, pn.y}
',
array => {
type =>
'2 <= size',
desc =>
'Number of points (count 1 coordinate as two
points)
' } }
);
%invoke = (
code => <<
'CODE'
{
GimpPDBContext
*pdb_context = GIMP_PDB_CONTEXT (context);
gimp_channel_select_polygon (gimp_image_get_mask (image),
_(
"Free Select"),
num_segs /
2,
(GimpVector2
*) segs,
operation,
pdb_context->antialias,
pdb_context->feather,
pdb_context->feather_radius_x,
pdb_context->feather_radius_y,
TRUE);
}
CODE
);
}
sub image_select_item {
$blurb =
'Transforms the specified item into a selection';
$help = <<
'HELP';
This procedure renders the item
's outline into the current selection
of the image the item belongs
to. What exactly the item
's outline is
depends
on the item
type:
for layers, it
's the layer's alpha channel,
for paths the path
's shape.
This procedure
is affected
by the following context setters:
gimp_context_set_antialias(), gimp_context_set_feather(),
gimp_context_set_feather_radius().
HELP
&mitch_pdb_misc(
'2010',
'2.8');
@inargs = (
{ name =>
'image',
type =>
'image',
desc =>
'The image' },
{ name =>
'operation',
type =>
'enum GimpChannelOps',
desc =>
'The desired operation with current selection' },
{ name =>
'item',
type =>
'item',
desc =>
'The item to render to the selection' }
);
%invoke = (
code => <<
'CODE'
{
if (gimp_pdb_item_is_attached (item, image,
0, error))
{
GimpPDBContext
*pdb_context = GIMP_PDB_CONTEXT (context);
gimp_item_to_selection (item, operation,
pdb_context->antialias,
pdb_context->feather,
pdb_context->feather_radius_x,
pdb_context->feather_radius_y);
}
else
success = FALSE;
}
CODE
);
}
sub images_popup {
$blurb =
'Invokes the image selection dialog.';
$help =
'Opens a dialog letting a user choose an image.';
&alxsa_pdb_misc(
'2025');
@inargs = (
{ name =>
'callback',
type =>
'string', non_empty =>
1,
desc =>
'The callback PDB proc to call when user chooses an image' },
{ name =>
'popup_title',
type =>
'string',
desc =>
'Title of the image selection dialog' },
{ name =>
'initial_image',
type =>
'image', none_ok =>
1, no_validate =>
1,
desc =>
'The image to set as the initial choice' },
{ name =>
'parent_window',
type =>
'bytes', none_ok =>
1,
desc =>
'An optional parent window handle for the popup to be set transient to' }
);
%invoke = (
code => <<
'CODE'
{
if (gimp->no_interface ||
! gimp_pdb_lookup_procedure (gimp->pdb, callback) ||
! gimp_pdb_dialog_new (gimp, context, progress,
GIMP_TYPE_IMAGE,
parent_window, popup_title, callback,
GIMP_OBJECT (initial_image),
NULL))
success = FALSE;
}
CODE
);
}
sub images_close_popup {
$blurb =
'Close the image selection dialog.';
$help =
'Closes an open image selection dialog.';
&alxsa_pdb_misc(
'2025');
@inargs = (
{ name =>
'callback',
type =>
'string', non_empty =>
1,
desc =>
'The name of the callback registered for this pop-up' }
);
%invoke = (
code => <<
'CODE'
{
if (gimp->no_interface ||
! gimp_pdb_lookup_procedure (gimp->pdb, callback) ||
! gimp_pdb_dialog_close (gimp, GIMP_TYPE_IMAGE, callback))
success = FALSE;
}
CODE
);
}
sub images_set_popup {
$blurb =
'Sets the selected image in a image selection dialog.';
$help = $blurb;
&alxsa_pdb_misc(
'2025');
@inargs = (
{ name =>
'callback',
type =>
'string', non_empty =>
1,
desc =>
'The name of the callback registered for this pop-up' },
{ name =>
'image',
type =>
'image', no_validate =>
1,
desc =>
'The image to set as selected' }
);
%invoke = (
code => <<
'CODE'
{
if (gimp->no_interface ||
! gimp_pdb_lookup_procedure (gimp->pdb, callback) ||
! gimp_pdb_dialog_set (gimp, GIMP_TYPE_IMAGE, callback, GIMP_OBJECT (image), NULL))
success = FALSE;
}
CODE
);
}
@headers = qw(
"libgimpbase/gimpbase.h"
"core/gimp.h"
"core/gimpchannel-select.h"
"core/gimpdatafactory.h"
"gimppdb-utils.h"
"gimppdbcontext.h"
"gimp-intl.h");
@procs = qw(image_select_color
image_select_contiguous_color
image_select_rectangle
image_select_round_rectangle
image_select_ellipse
image_select_polygon
image_select_item
images_popup
images_close_popup
images_set_popup);
%exports = (app => [@procs], lib => [@procs]);
$desc =
'Selection procedures';
$doc_title =
'gimpimageselect';
$doc_short_desc =
"Modify the image's selection.";
$doc_long_desc =
"Functions to modify the image's selection.";
1;