OO(3pm)

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 (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.
Copyright © 2010-2025 Platon Technologies, s.r.o.           Index | Man stránky | tLDP | Dokumenty | Utilitky | O projekte
Design by styleshout