++ed by:
EMAZEP ILUX DELON ZMUGHAL

4 PAUSE users
2 non-PAUSE users.

Marc A. Lehmann

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(...)

etc. Of course, your fingers will suffer from severe typing as well.

A solution to this situation is to use OO-syntax. Gimp plays some dirty tricks and provides a number of classes, like Gimp::Image and Gimp::Palette (please note that all these classes 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::OO tries to find a gimp function by prepending a number of prefixes until it finds a valid function:

 $image = Image::new(...);      # calls gimp_image_new(...)
 $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.

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 Image;                    # will quit the Gimp, not an Image.

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).

Layer
 gimp_layer_
 gimp_drawable_
 gimp_
Image
 gimp_image_
 gimp_drawable_
 gimp_
Drawable
 gimp_drawable_
 gimp_
Selection
 gimp_selection_
Channel
 gimp_channel_
 gimp_drawable_
 gimp_
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_drawable_

AUTHOR

Marc Lehmann <pcg@goof.com>

SEE ALSO

perl(1), Gimp,