NAME
Gimp::OO - Pseudo-OO for Gimp functions.
SYNOPSIS
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 (all these appear with the Gimp::
prefix as well as without, i.e. Gimp::Palette
is the same class as Palette
).
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
= Image->new(...);
# calls gimp_image_new as well
$image
= new Image(...);
# the same in green
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 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 class argument ($image
in the above examples) is prepended to the argument list.
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 Image;
# will call gimp_patterns_list
quit Plugin;
# will quit the Gimp, not an Plugin.
there is no image involved here whatsoever...
AVAILABLE CLASSES
The following classes (with and without Gimp::) 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_
- Layer
-
gimp_layer_
gimp_drawable_
gimp_floating_sel_
gimp_image_
gimp_
plug_in_
perl_fu_
- Image
-
gimp_image_
gimp_drawable_
gimp_
plug_in_
perl_fu_
- Drawable
-
gimp_drawable_
gimp_layer_
gimp_image_
gimp_
plug_in_
perl_fu_
- Selection
-
gimp_selection_
- Channel
-
gimp_channel_
gimp_drawable_
gimp_selection_
gimp_image_
gimp_
plug_in_
perl_fu_
- Display
-
gimp_display_
gimp_
- Palette
-
gimp_palette_
- Plugin
-
plug_in_
- Gradients
-
gimp_gradients_
- Edit
-
gimp_edit_
- Progress
-
gimp_progress_
- Region
-
(none except the implicit null prefix)
- Tile
-
gimp_tile_
- PixelRgn
-
gimp_pixel_rgn_
- GDrawable
-
gimp_gdrawable_
- Brushes
-
gimp_brushes_
- Patterns
-
gimp_patterns_
AUTHOR
Marc Lehmann <pcg@goof.com>
SEE ALSO
perl(1), Gimp.