NAME
Gimp::OO - Pseudo-OO for Gimp functions.
SYNOPSIS
use Gimp; # Gimp::OO is now part of Gimp.
DESCRIPTION
As you might have noticed, you can sort most gimp functions fall into three groups, depending on the name-prefix: gimp_
, plug_in_
, extension_
etc..
Whats more, there are functions groups like gimp_image_
or gimp_selection_
, operating on a common object, Images and Selection in this case.
If you only had the plain syntax, your scripts would quickly aquire the "vertical gimp syndrome":
gimp_palette_set_foreground(...)
gimp_layer_new(...)
gimp_palette_set_background(...)
gimp_image_add_layer(...)
etc. Of course, your fingers will suffer from severe injuries as well.
A solution to this situation is to use OO-syntax. Gimp plays some (very) dirty tricks and provides a number of classes, like Gimp::Image
and Gimp::Palette
that allow shorter identifiers to be used.
If you call a method, Gimp
tries to find a gimp function by prepending a number of prefixes until it finds a valid function:
$image = Gimp->image_new(...); # calls gimp_image_new(...)
$image = Gimp::Image->new(...); # calls gimp_image_new as well
$image = new Gimp::Image(...); # the same in green
Gimp::Palette->set_foreground(...) # calls gimp_palette_set_foreground(..)
Return values from functions are automatically blessed (through The Magic Autobless feature ;) to their corresponding classes, i.e.
$image = new Gimp::Image(...); # $image is now blessed to Gimp::Image
$image->height; # calls gimp_image_height($image)
$image->flatten; # likewise gimp_flatten($image)
$image->histogram(...); # calls gimp_histogram($image,...), since
# gimp_image_histogram does not exist
The object argument ($image
in the above examples) is prepended to the argument list - this is how Perl does OO.
Another shortcut: many functions want a (redundant) image argument, like
$image->shear ($layer, ...)
Since all you want is to shear the $layer
, not the $image
, this is confusing as well. In cases like this, Gimp allows you to write:
$layer->shear (...)
And automatically infers the additional IMAGE-type argument.
As the (currently) last goodie, if the first argument is of type INT32, its name is "run_mode" and there are no other ambiguties, you can omit it, i.e. these three calls are equivalent:
plug_in_gauss_rle (RUN_NONINTERACTIVE, $image, $layer, 8, 1, 1);
plug_in_gauss_rle ($image, $layer, 8, 1, 1);
plug_in_gauss_rle ($layer, 8, 1, 1);
You can call all sorts of sensible and not-so-sensible functions, so this feature can be abused:
patterns_list Gimp::Image; # will call gimp_patterns_list
quit Gimp::Plugin; # will quit the Gimp, not an Plugin.
there is no image involved here whatsoever...
AVAILABLE CLASSES
The following classes are available. The prefixes that are checked are shown as well (the null prefix "" is implicit).
- Gimp (there is no Gimp::Gimp, only Gimp::)
-
gimp_
- Gimp::Layer
-
gimp_layer_ gimp_drawable_ gimp_floating_sel_ gimp_image_ gimp_ plug_in_ perl_fu_
- Gimp::Image
-
gimp_image_ gimp_drawable_ gimp_ plug_in_ perl_fu_
- Gimp::Drawable
-
gimp_drawable_ gimp_layer_ gimp_image_ gimp_ plug_in_ perl_fu_
- Gimp::Selection
-
gimp_selection_
- Gimp::Channel
-
gimp_channel_ gimp_drawable_ gimp_selection_ gimp_image_ gimp_ plug_in_ perl_fu_
- Gimp::Display
-
gimp_display_ gimp_
- Gimp::Palette
-
gimp_palette_
- Gimp::Plugin
-
plug_in_ perl_fu_
- Gimp::Gradients
-
gimp_gradients_
- Gimp::Edit
-
gimp_edit_
- Gimp::Progress
-
gimp_progress_
- Gimp::Region
-
(none except the implicit null prefix)
- Gimp::Tile
-
gimp_tile_
- Gimp::PixelRgn
-
gimp_pixel_rgn_
- Gimp::GimpDrawable
-
gimp_gdrawable_
- Gimp::Brushes
-
gimp_brushes_
- Gimp::Patterns
-
gimp_patterns_
AUTHOR
Marc Lehmann <pcg@goof.com>
SEE ALSO
perl(1), Gimp.