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.