NAME
Gimp::Fu - "easy to use" framework for Gimp scripts
SYNOPSIS
use Gimp;
use Gimp::Fu;
(this module uses Gtk, so make sure it's correctly installed)
DESCRIPTION
Currently, there are only three functions in this module. This fully suffices to provide a professional interface and the ability to run this script from within the Gimp and standalone from the commandline.
Dov Grobgeld has written an excellent tutorial for Gimp-Perl. While not finished, it's definitely worth a look! You can find it at http://imagic.weizmann.ac.il/~dov/gimp/perl-tut.html
.
INTRODUCTION
In general, a Gimp::Fu script looks like this:
#!/path/to/your/perl
use Gimp;
use Gimp::Fu;
register <many arguments>, sub {
your code;
}
exit main;
(This distribution comes with example scripts. One is examples/example-fu.pl
, which is small Gimp::Fu-script you can take as starting point for your experiments)
THE REGISTER FUNCTION
register
"function_name",
"blurb", "help",
"author", "copyright",
"date",
"menu path",
"image types",
[
[PF_TYPE,name,desc,default],
[PF_TYPE,name,desc,default],
etc...
],
sub { code };
- function name
-
The pdb name of the function, i.e. the name under which is will be registered in the Gimp database. If it doesn't start with "perl_fu_", it will be prepended (so all function names registered via Gimp::Fu begin with "perl_fu_")
- blurb
-
A small description of this script/plug-in.
- help
-
A help text describing this script. Should be longer and more verbose than
blurb
. - copyright
-
The copyright designation for this script. Important! Safe your intellectual rights!
- date
-
The "last modified" time of this script. There is no strict syntax here, but I recommend ISO format (yyyymmdd or yyyy-mm-dd).
-
The menu entry Gimp should create. It should start either with <Image>, meaning this script is an image-plug-in, or <Xtns>, for scripts creating new images.
- image types
-
The types of images your script will accept. Examples are "RGB", "RGB*", "GRAY, RGB" etc... Most scripts will want to use "*", meaning "any type".
- the parameter array
-
An array ref containing parameter definitions. These are similar to the parameter definitions used for
gimp_install_procedure
, but include an additional default value used when the caller doesn't supply one.Each array element has the form [type, name, description, default_value].
<Image>-type plugins get two additional parameters, image (
PF_IMAGE
) and drawable (PF_DRAWABLE
). Do not specify these yourself. Also, therun_mode
argument is never given to the script, but its value canm be accessed in the package-global$run_mode
. The name is used in the dialog box as a hint, the description will be used as a tooltip.See the section PARAMETER TYPES for the supported types.
- the code
-
This is either a anonymous sub declaration (
sub { your code here; }
, or a coderef, which is called when the script is run. Arguments (including the image and drawable for <Image> plug-ins) are supplied automatically.It is good practise to return an image, if the script creates one, or
undef
, since the return value is interpreted by Gimp::Fu (like displaying the image or writing it to disk). If your script creates multiple pictures, return an array.
PARAMETER TYPES
- PF_INT8, PF_INT16, PF_INT32, PF_FLOAT, PF_STRING, PF_VALUE
-
Are all mapped to a string entry, since perl doesn't really distinguish between all these datatypes. The reason they exist is to help other scripts (possibly written in other languages! really!). It's nice to be able to specify a float as 13.45 instead of "13.45" in C!
PF_VALUE
is synonymous toPF_STRING
. - PF_COLOR, PF_COLOUR
-
Will accept a colour argument. In dialogs, a colour preview will be created which will open a colour selection box when clicked.
- PF_IMAGE
-
A gimp image. Not yet supported in dialogs :(
- PF_DRAWABLE
-
A gimp drawable (image, channel or layer). Not yet supported in dialogs :(
- PF_FONT
-
An experimental value used to denote fonts. At the moment, this is just a
PF_STRING
. It might be replaced by a font selection dialog in the future.Please note that the Gimp has no value describing a font, so the format of this string is undefined (and will usually contain only the family name of the selected font).
- PF_TOGGLE
-
A boolean value (anything perl would accept as true or false). The description will be used for the toggle-button label!
MISC. FUNCTIONS
save_image(img,options_and_path)
-
This is the internal function used to save images. As it does more than just gimp_file_save, I thought it would be handy in other circumstances as well.
The
img
is the image you want to save (which might get changed during the operation!),options_and_path
denotes the filename and optinal options. If there are no options,save_image
tries to deduce the filetype from the extension. The syntax for options is[IMAGETYPE[OPTIONS...]:]filespec
IMAGETYPE is one of GIF, JPG, JPEG, PNM or PNG, options include
options valid for all images +F flatten the image (default depends on the image) -F do not flatten the image options for GIF and PNG images +I do save as interlaced (GIF only) -I do not save as interlaced (default) options for PNG images -Cn use compression level n options for JPEG images -Qn use quality "n" to save file (JPEG only) -S do not smooth (default) +S smooth before saving
some examples:
test.jpg save the image as a simple jpeg JPG:test.jpg same JPG-Q70:test.jpg the same but force a quality of 70 GIF-I-F:test.jpg save a gif image(!) named test.jpg non-inerlaced and without flattening
STATUS
This module is experimental and unfinished.
AUTHOR
Marc Lehmann <pcg@goof.com>
SEE ALSO
perl(1), Gimp,
3 POD Errors
The following errors were encountered while parsing the POD:
- Around line 18:
=cut found outside a pod block. Skipping to next block.
- Around line 301:
=cut found outside a pod block. Skipping to next block.
- Around line 506:
=cut found outside a pod block. Skipping to next block.