summaryrefslogtreecommitdiffstats
path: root/pdb/groups/image_guides.pdb
diff options
context:
space:
mode:
Diffstat (limited to 'pdb/groups/image_guides.pdb')
-rw-r--r--pdb/groups/image_guides.pdb270
1 files changed, 270 insertions, 0 deletions
diff --git a/pdb/groups/image_guides.pdb b/pdb/groups/image_guides.pdb
new file mode 100644
index 0000000..d066e46
--- /dev/null
+++ b/pdb/groups/image_guides.pdb
@@ -0,0 +1,270 @@
+# 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_add_hguide {
+ $blurb = 'Add a horizontal guide to an image.';
+
+ $help = <<HELP;
+This procedure adds a horizontal guide to an image. It takes the input
+image and the y-position of the new guide as parameters. It returns
+the guide ID of the new guide.
+HELP
+
+ &adam_pdb_misc('1998');
+
+ @inargs = (
+ { name => 'image', type => 'image',
+ desc => 'The image' },
+ { name => 'yposition', type => '0 <= int32',
+ desc => "The guide's y-offset from top of image" }
+ );
+
+ @outargs = (
+ { name => 'guide', type => 'guide',
+ desc => 'The new guide' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ if (yposition <= gimp_image_get_height (image))
+ {
+ GimpGuide *g;
+
+ g = gimp_image_add_hguide (image, yposition, TRUE);
+ guide = gimp_aux_item_get_ID (GIMP_AUX_ITEM (g));
+ }
+ else
+ success = FALSE;
+}
+CODE
+ );
+}
+
+sub image_add_vguide {
+ $blurb = 'Add a vertical guide to an image.';
+
+ $help = <<HELP;
+This procedure adds a vertical guide to an image. It takes the input
+image and the x-position of the new guide as parameters. It returns
+the guide ID of the new guide.
+HELP
+
+ &adam_pdb_misc('1998');
+
+ @inargs = (
+ { name => 'image', type => 'image',
+ desc => 'The image' },
+ { name => 'xposition', type => '0 <= int32',
+ desc => "The guide's x-offset from left of image" }
+ );
+
+ @outargs = (
+ { name => 'guide', type => 'guide',
+ desc => 'The new guide' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ if (xposition <= gimp_image_get_width (image))
+ {
+ GimpGuide *g;
+
+ g = gimp_image_add_vguide (image, xposition, TRUE);
+ guide = gimp_aux_item_get_ID (GIMP_AUX_ITEM (g));
+ }
+ else
+ success = FALSE;
+}
+CODE
+ );
+}
+
+sub image_delete_guide {
+ $blurb = 'Deletes a guide from an image.';
+
+ $help = <<'HELP';
+This procedure takes an image and a guide ID as input and removes the specified
+guide from the specified image.
+HELP
+
+ &adam_pdb_misc('1998');
+
+ @inargs = (
+ { name => 'image', type => 'image',
+ desc => 'The image' },
+ { name => 'guide', type => 'guide',
+ desc => 'The ID of the guide to be removed' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ GimpGuide *g = gimp_pdb_image_get_guide (image, guide, error);
+
+ if (g)
+ gimp_image_remove_guide (image, g, TRUE);
+ else
+ success = FALSE;
+}
+CODE
+ );
+}
+
+sub image_find_next_guide {
+ $blurb = 'Find next guide on an image.';
+
+ $help = <<'HELP';
+This procedure takes an image and a guide ID as input and finds the guide ID of
+the successor of the given guide ID in the image's guide list. If the supplied
+guide ID is 0, the procedure will return the first Guide. The procedure will
+return 0 if given the final guide ID as an argument or the image has no guides.
+HELP
+
+ &adam_pdb_misc('1998');
+
+ @inargs = (
+ { name => 'image', type => 'image',
+ desc => 'The image' },
+ { name => 'guide', type => 'guide', no_validate => 1,
+ desc => 'The ID of the current guide (0 if first invocation)' }
+ );
+
+ @outargs = (
+ { name => 'next_guide', type => 'guide',
+ desc => "The next guide's ID" }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ GimpGuide *g = gimp_image_get_next_guide (image, guide, &success);
+
+ if (g)
+ next_guide = gimp_aux_item_get_ID (GIMP_AUX_ITEM (g));
+
+ if (! success)
+ g_set_error (error, GIMP_PDB_ERROR, GIMP_PDB_ERROR_INVALID_ARGUMENT,
+ _("Image '%s' (%d) does not contain guide with ID %d"),
+ gimp_image_get_display_name (image),
+ gimp_image_get_ID (image),
+ guide);
+}
+CODE
+ );
+}
+
+sub image_get_guide_orientation {
+ $blurb = 'Get orientation of a guide on an image.';
+
+ $help = <<'HELP';
+This procedure takes an image and a guide ID as input and returns the
+orientations of the guide.
+HELP
+
+ &adam_pdb_misc('1998');
+
+ @inargs = (
+ { name => 'image', type => 'image',
+ desc => 'The image' },
+ { name => 'guide', type => 'guide',
+ desc => 'The guide' }
+ );
+
+ @outargs = (
+ { name => 'orientation',
+ type => 'enum GimpOrientationType (no GIMP_ORIENTATION_UNKNOWN)',
+ desc => "The guide's orientation",
+ libdef => 'GIMP_ORIENTATION_UNKNOWN' }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ GimpGuide *g = gimp_pdb_image_get_guide (image, guide, error);
+
+ if (g)
+ orientation = gimp_guide_get_orientation (g);
+ else
+ success = FALSE;
+}
+CODE
+ );
+}
+
+sub image_get_guide_position {
+ $blurb = 'Get position of a guide on an image.';
+
+ $help = <<'HELP';
+This procedure takes an image and a guide ID as input and returns the position
+of the guide relative to the top or left of the image.
+HELP
+
+ &adam_pdb_misc('1998');
+
+ @inargs = (
+ { name => 'image', type => 'image',
+ desc => 'The image' },
+ { name => 'guide', type => 'guide',
+ desc => 'The guide' }
+ );
+
+ @outargs = (
+ { name => 'position', type => 'int32',
+ libdef => 'G_MININT /* GIMP_GUIDE_POSITION_UNDEFINED */',
+ desc => "The guide's position relative to top or left of image" }
+ );
+
+ %invoke = (
+ code => <<'CODE'
+{
+ GimpGuide *g = gimp_pdb_image_get_guide (image, guide, error);
+
+ if (g)
+ position = gimp_guide_get_position (g);
+ else
+ success = FALSE;
+}
+CODE
+ );
+}
+
+
+@headers = qw("cairo.h"
+ "core/gimpguide.h"
+ "core/gimpimage-guides.h"
+ "core/gimpimage-undo-push.h"
+ "gimppdb-utils.h"
+ "gimppdberror.h"
+ "gimp-intl.h");
+
+@procs = qw(image_add_hguide image_add_vguide
+ image_delete_guide
+ image_find_next_guide
+ image_get_guide_orientation
+ image_get_guide_position);
+
+%exports = (app => [@procs], lib => [@procs]);
+
+$desc = 'Image Guide procedures';
+$doc_title = 'gimpimageguides';
+$doc_short_desc = 'Functions for manipulating an image\'s guides.';
+$doc_long_desc = 'Functions for manipulating an image\'s guides.';
+
+1;