diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 03:13:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 03:13:10 +0000 |
commit | 3c57dd931145d43f2b0aef96c4d178135956bf91 (patch) | |
tree | 3de698981e9f0cc2c4f9569b19a5f3595e741f6b /pdb/groups/image_undo.pdb | |
parent | Initial commit. (diff) | |
download | gimp-3c57dd931145d43f2b0aef96c4d178135956bf91.tar.xz gimp-3c57dd931145d43f2b0aef96c4d178135956bf91.zip |
Adding upstream version 2.10.36.upstream/2.10.36
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'pdb/groups/image_undo.pdb')
-rw-r--r-- | pdb/groups/image_undo.pdb | 306 |
1 files changed, 306 insertions, 0 deletions
diff --git a/pdb/groups/image_undo.pdb b/pdb/groups/image_undo.pdb new file mode 100644 index 0000000..cd22cba --- /dev/null +++ b/pdb/groups/image_undo.pdb @@ -0,0 +1,306 @@ +# 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_undo_group_start { + $blurb = 'Starts a group undo.'; + + $help = <<'HELP'; +This function is used to start a group undo--necessary for logically combining +two or more undo operations into a single operation. This call must be used in +conjunction with a gimp_image_undo_group_end() call. +HELP + + &std_pdb_misc; + $date = '1997'; + + @inargs = ( + { name => 'image', type => 'image', + desc => 'The ID of the image in which to open an undo group' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpPlugIn *plug_in = gimp->plug_in_manager->current_plug_in; + const gchar *undo_desc = NULL; + + if (plug_in) + { + success = gimp_plug_in_cleanup_undo_group_start (plug_in, image); + + if (success) + undo_desc = gimp_plug_in_get_undo_desc (plug_in); + } + + if (success) + gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_MISC, undo_desc); +} +CODE + ); +} + +sub image_undo_group_end { + $blurb = 'Finish a group undo.'; + + $help = <<'HELP'; +This function must be called once for each gimp_image_undo_group_start() call +that is made. +HELP + + &std_pdb_misc; + $date = '1997'; + + @inargs = ( + { name => 'image', type => 'image', + desc => 'The ID of the image in which to close an undo group' } + ); + + %invoke = ( + code => <<'CODE' +{ + GimpPlugIn *plug_in = gimp->plug_in_manager->current_plug_in; + + if (plug_in) + success = gimp_plug_in_cleanup_undo_group_end (plug_in, image); + + if (success) + gimp_image_undo_group_end (image); +} +CODE + ); +} + +sub image_undo_is_enabled { + $blurb = "Check if the image's undo stack is enabled."; + + $help = <<'HELP'; +This procedure checks if the image's undo stack is currently enabled or +disabled. This is useful when several plug-ins or scripts call each other +and want to check if their caller has already used gimp_image_undo_disable() +or gimp_image_undo_freeze(). +HELP + + &raphael_pdb_misc('1999'); + + @inargs = ( + { name => 'image', type => 'image', + desc => 'The image' } + ); + + @outargs = ( + { name => 'enabled', type => 'boolean', + desc => 'TRUE if undo is enabled for this image' } + ); + + %invoke = ( + code => <<'CODE' +{ + enabled = gimp_image_undo_is_enabled (image); +} +CODE + ); +} + +sub image_undo_disable { + $blurb = "Disable the image's undo stack."; + + $help = <<'HELP'; +This procedure disables the image's undo stack, allowing subsequent operations +to ignore their undo steps. This is generally called in conjunction with +gimp_image_undo_enable() to temporarily disable an image undo stack. This is +advantageous because saving undo steps can be time and memory intensive. +HELP + + &std_pdb_misc; + + @inargs = ( + { name => 'image', type => 'image', + desc => 'The image' } + ); + + @outargs = ( + { name => 'disabled', type => 'boolean', + desc => 'TRUE if the image undo has been disabled' } + ); + + %invoke = ( + code => <<'CODE' +{ +#if 0 + GimpPlugIn *plug_in = gimp->plug_in_manager->current_plug_in; + + if (plug_in) + success = gimp_plug_in_cleanup_undo_disable (plug_in, image); +#endif + + if (success) + disabled = gimp_image_undo_disable (image); +} +CODE + ); +} + +sub image_undo_enable { + $blurb = "Enable the image's undo stack."; + + $help = <<'HELP'; +This procedure enables the image's undo stack, allowing subsequent operations +to store their undo steps. This is generally called in conjunction with +gimp_image_undo_disable() to temporarily disable an image undo stack. +HELP + + &std_pdb_misc; + + @inargs = ( + { name => 'image', type => 'image', + desc => 'The image' } + ); + + @outargs = ( + { name => 'enabled', type => 'boolean', + desc => 'TRUE if the image undo has been enabled' } + ); + + %invoke = ( + code => <<'CODE' +{ +#if 0 + GimpPlugIn *plug_in = gimp->plug_in_manager->current_plug_in; + + if (plug_in) + success = gimp_plug_in_cleanup_undo_enable (plug_in, image); +#endif + + if (success) + enabled = gimp_image_undo_enable (image); +} +CODE + ); +} + +sub image_undo_freeze { + $blurb = "Freeze the image's undo stack."; + + &adam_pdb_misc('1999'); + + $help = <<'HELP'; +This procedure freezes the image's undo stack, allowing subsequent +operations to ignore their undo steps. This is generally called in +conjunction with gimp_image_undo_thaw() to temporarily disable an +image undo stack. This is advantageous because saving undo steps can +be time and memory intensive. gimp_image_undo_freeze() / +gimp_image_undo_thaw() and gimp_image_undo_disable() / +gimp_image_undo_enable() differ in that the former does not free up +all undo steps when undo is thawed, so is more suited to interactive +in-situ previews. It is important in this case that the image is back +to the same state it was frozen in before thawing, else 'undo' +behaviour is undefined. +HELP + + @inargs = ( + { name => 'image', type => 'image', + desc => 'The image' } + ); + + @outargs = ( + { name => 'frozen', type => 'boolean', + desc => 'TRUE if the image undo has been frozen' } + ); + + %invoke = ( + code => <<'CODE' +{ +#if 0 + GimpPlugIn *plug_in = gimp->plug_in_manager->current_plug_in; + + if (plug_in) + success = gimp_plug_in_cleanup_undo_freeze (plug_in, image); +#endif + + if (success) + frozen = gimp_image_undo_freeze (image); +} +CODE + ); +} + +sub image_undo_thaw { + $blurb = "Thaw the image's undo stack."; + + &adam_pdb_misc('1999'); + + $help = <<'HELP'; +This procedure thaws the image's undo stack, allowing subsequent +operations to store their undo steps. This is generally called in +conjunction with gimp_image_undo_freeze() to temporarily freeze an +image undo stack. gimp_image_undo_thaw() does NOT free the undo stack +as gimp_image_undo_enable() does, so is suited for situations where +one wishes to leave the undo stack in the same state in which one +found it despite non-destructively playing with the image in the +meantime. An example would be in-situ plug-in previews. Balancing +freezes and thaws and ensuring image consistency is the responsibility +of the caller. +HELP + + @inargs = ( + { name => 'image', type => 'image', + desc => 'The image' } + ); + + @outargs = ( + { name => 'thawed', type => 'boolean', + desc => 'TRUE if the image undo has been thawed' } + ); + + %invoke = ( + code => <<'CODE' +{ +#if 0 + GimpPlugIn *plug_in = gimp->plug_in_manager->current_plug_in; + + if (plug_in) + success = gimp_plug_in_cleanup_undo_thaw (plug_in, image); +#endif + + if (success) + thawed = gimp_image_undo_thaw (image); +} +CODE + ); +} + + +@headers = qw("core/gimp.h" + "core/gimpimage-undo.h" + "plug-in/gimpplugin.h" + "plug-in/gimpplugin-cleanup.h" + "plug-in/gimppluginmanager.h"); + +@procs = qw(image_undo_group_start image_undo_group_end + image_undo_is_enabled + image_undo_disable image_undo_enable + image_undo_freeze image_undo_thaw); + +%exports = (app => [@procs], lib => [@procs]); + +$desc = 'Image Undo'; +$doc_title = 'gimpimageundo'; +$doc_short_desc = 'Control of image undo/redo.'; +$doc_long_desc = 'Control of image undo/redo.'; + +1; |