Gimp::Fu man page on Mageia

Man page or keyword search:  
man Server   17783 pages
apropos Keyword Search (all sections)
Output format
Mageia logo
[printable version]

Fu(3)		      User Contributed Perl Documentation		 Fu(3)

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.  You can
       find it at "http://imagic.weizmann.ac.il/~dov/gimp/perl-tut-2.0/".

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,optional-default,optional-extra-args],
	      [PF_TYPE,name,desc,optional-default,optional-extra-args],
	      # etc...
	    ],
	    [
	      # like above, but for return values (optional)
	    ],
	    ['feature1', 'feature2'...], # optionally check for features
	    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_",
	 "file_", "plug_in_" or "extension_", it will be prepended. If you
	 don't want this, prefix your function name with a single "+". The
	 idea here is that every Gimp::Fu plug-in will be found under the
	 common "perl_fu_"-prefix.

       blurb
	 A small description of this script/plug-in. Defaults to "=pod(NAME)"
	 (see the section on EMBEDDED POD DOCUMENTATION for an explanation of
	 this string).

       help
	 A help text describing this script. Should be longer and more verbose
	 than "blurb". Default is "=pod(HELP)".

       author
	 The name (and also the e-mail address if possible!) of the script-
	 author. Default is "=pod(AUTHOR)".

       copyright
	 The copyright designation for this script. Important! Safe your
	 intellectual rights! The default is "=pod(AUTHOR)".

       date
	 The "last modified" time of this script. There is no strict syntax
	 here, but I recommend ISO format (yyyymmdd or yyyy-mm-dd). Default
	 value is "=pod(DATE)".

       menu path
	 The menu entry Gimp should create. It should start either with
	 <Image>, if you want an entry in the image menu (the one that opens
	 when clicking into an image), <Toolbox>/Xtns, for the Xtns menu or
	 <None> for none.

       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, and optional extra arguments describing some types like
	 "PF_SLIDER".

	 Each array element has the form "[type, name, description,
	 default_value, extra_args]".

	 <Image>-type plugins get two additional parameters, image
	 ("PF_IMAGE") and drawable ("PF_DRAWABLE"). Do not specify these
	 yourself. Also, the "run_mode" argument is never given to the script,
	 but its value can 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 return values
	 This is just like the parameter array, just that it describes the
	 return values. Of course, default values and the enhanced Gimp::Fu
	 parameter types don't make much sense here. (Even if they did, it's
	 not implemented anyway..). This argument is optional.

	 If you supply a parameter type (e.g. "PF_IMAGE") instead of a full
	 specification ("[PF_IMAGE, ...]"), Gimp::Fu might supply some default
	 values. This is only implemented for "PF_IMAGE" at the moment.

       the features requirements
	 See Gimp::Features for a description of which features can be checked
	 for. This argument is optional (but remember to specify an empty
	 return value array, "[]", if you want to specify it).

       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_INT, 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 to "PF_STRING", and <PF_INT> is
	 synonymous to <PF_INT32>.

       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.

       PF_DRAWABLE
	 A gimp drawable (image, channel or layer).

       PF_TOGGLE, PF_BOOL
	 A boolean value (anything perl would accept as true or false). The
	 description will be used for the toggle-button label!

       PF_SLIDER
	 Uses a horizontal scale. To set the range and stepsize, append an
	 array ref (see Gtk::Adjustment for an explanation) "[range_min,
	 range_max, step_size, page_increment, page_size]" as "extra argument"
	 to the description array.  Default values will be substitued for
	 missing entries, like in:

	  [PF_SLIDER, "alpha value", "the alpha value", 100, [0, 255, 1] ]

       PF_SPINNER
	 The same as PF_SLIDER, except that this one uses a spinbutton instead
	 of a scale.

       PF_RADIO
	 In addition to a default value, an extra argument describing the
	 various options must be provided. That extra argument must be a
	 reference to an array filled with "Option-Name =" Option-Value>
	 pairs. Gimp::Fu will then generate a horizontal frame with radio
	 buttons, one for each alternative. For example:

	  [PF_RADIO, "direction", "the direction to move to", 5, [Left => 5,  Right => 7]]]

	 draws two buttons, when the first (the default, "Left") is activated,
	 5 will be returned. If the second is activated, 7 is returned.

       PF_FONT
	 Lets the user select a font and returns a X Logical Font Descriptor
	 (XLFD).  The default argument, if specified, must be a full XLFD
	 specification, or a warning will be printed. Please note that the
	 gimp text functions using these fontnames (gimp_text_..._fontname)
	 ignore the size. You can extract the size and dimension by using the
	 "xlfd_size" function.

	 In older Gimp-Versions a user-supplied string is returned.

       PF_BRUSH, PF_PATTERN, PF_GRADIENT
	 Lets the user select a brush/pattern/gradient whose name is returned
	 as a string. The default brush/pattern/gradient-name can be preset.

       PF_CUSTOM
	 PF_CUSTOM is for those of you requiring some non-standard-widget. You
	 have to supply a code reference returning three values as the extra
	 argument:

	  (widget, settor, gettor)

	 "widget" is Gtk widget that should be used.

	 "settor" is a function that takes a single argument, the new value
	 for the widget (the widget should be updated accordingly).

	 "gettor" is a function that should return the current value of the
	 widget.

	 While the values can be of any type (as long as it fits into a
	 scalar), you should be prepared to get a string when the script is
	 started from the commandline or via the PDB.

       PF_FILE
	 This represents a file system object. It usually is a file, but can
	 be anything (directory, link). It might not even exist at all.

       PF_TEXT
	 Similar to PF_STRING, but the entry widget is much larger and has
	 Load, Save, and Edit (in external editor) buttons.

   EMBEDDED POD DOCUMENTATION
       The register functions expects strings (actually scalars) for
       documentation, and nobody wants to embed long parts of documentation
       into a string, cluttering the whole script.

       Therefore, Gimp::Fu utilizes the Gimp::Pod module to display the full
       text of the pod sections that are embedded in your scripts (see perlpod
       for an explanation of the POD documentation format) when the user hits
       the "Help" button in the dialog box.

       Since version 1.094, you can embed specific sections or the full pod
       text into any of the blurb, help, author, copyright and date arguments
       to the register functions. Gimp::Fu will look into all these strings
       for sequences of the form "=pod(section-name)". If found, they will be
       replaced by the text of the corresponding section from the pod
       documentation. If the named section is not found (or is empty, as in
       "=pod()"), the full pod documentation is embedded.

       Most of the mentioned arguments have default values (see THE REGISTER
       FUNCTION) that are used when the arguments are either undefined or
       empty strings, making the register call itself much shorter and, IMHO,
       more readable.

   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
	    -I	   do not save as interlaced (default)

	    options for GIF animations (use with -F)
	    +L	   save as looping animation
	    -L	   save as non-looping animation (default)
	    -Dn	   default frame delay (default is 0)
	    -Pn	   frame disposal method: 0=don't care, 1 = combine, 2 = replace

	    options for PNG images
	    -Cn	   use compression level n
	    -E	   Do not skip ancillary chunks (default)
	    +E	   Skip ancillary chunks

	    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	   the 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-interlaced and without flattening

AUTHOR
       Marc Lehmann <pcg@goof.com>

SEE ALSO
       perl(1), Gimp.

POD ERRORS
       Hey! The above document had some coding errors, which are explained
       below:

       Around line 375:
	   =cut found outside a pod block.  Skipping to next block.

       Around line 780:
	   =cut found outside a pod block.  Skipping to next block.

perl v5.18.1			  2004-07-22				 Fu(3)
[top]

List of man pages available for Mageia

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net