Gimp::OO.3pm

Langue: en

Version: 2004-07-22 (mandriva - 22/10/07)

Section: 3 (Bibliothèques de fonctions)

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.