ImageStudio, shareware image processing and conversion package for the
Amiga.

   Copyright (C) 1994,1995 Andy Dean, Graham Dean.

   Welcome to ImageStudio, shareware image processing and conversion
package for the Amiga.

   This document applies to version 2.3.x, written on 2nd October 1995,
Copyright (C) 1994,1995 Andy Dean, Graham Dean.

Introduction
************

   This chapter gives a brief introduction into the features offered by
the program.

Copyright and Disclaimer
========================

   No guarantee of any kind is given that the programs described in
this document are 100% reliable. You are using this material at your
own risk. The authors *can not* be made responsible for any damage
which is caused by using these programs.

   The unregistered package is freeware, but still copyright by Andy
Dean and Graham Dean. This means that you can copy it freely as long as
you don't ask for a more than nominal copying fee.

   The registered version of the program and its associated keyfile
*may not* be freely distributed.

   The GIF loader/saver module (gif.isio) remains freely-distributable
for both the registered and unregistered versions of the program. No
charge is made for this module.

   Permission is granted to include the unregistered package in
Public-Domain collections, especially in the excellent Fred Fish Amiga
Disk Library (including CD ROM versions of it). The distribution file
may be uploaded to Bulletin Board Systems or FTP servers. If you want
to distribute this package you must not remove or alter any of the
supplied files, although the files may be re-compressed using any Amiga
archiver program.

   This program (or parts of it) may not be included or used in
commercial programs unless by written permission from the authors.

   Installer and Installer project icon (c) Copyright 1991-93
Commodore-Amiga, Inc. All Rights Reserved. Reproduced and distributed
under license from Commodore.

   INSTALLER SOFTWARE IS PROVIDED "AS-IS" AND SUBJECT TO CHANGE; NO
WARRANTIES ARE MADE.  ALL USE IS AT YOUR OWN RISK. NO LIABILITY OR
RESPONSIBILITY IS ASSUMED.

   amigaguide.library (c) Copyright 1991-93 Commodore-Amiga, Inc. All
Rights Reserved. Reproduced and distributed under license from
Commodore.

   AMIGAGUIDE SOFTWARE IS PROVIDED "AS-IS" AND SUBJECT TO CHANGE; NO
WARRANTIES ARE MADE.  ALL USE IS AT YOUR OWN RISK. NO LIABILITY OR
RESPONSIBILITY IS ASSUMED.

   Jonathan Forbes, the author of LX, has granted permission to include
the unmodified Version 1.03 LX executable by itself (i.e. without
documentation) with any PUBLIC DOMAIN or SHAREWARE package, provided
that a brief credit note is included in the program's documentation
(see Credits).

Machine requirements
====================

   ImageStudio requires the following system to run:

   * Workbench 2.04 or above.

   * Around 1 megabyte of free memory.

   * Several megabytes of free hard disk space.

   If ImageStudio is run on an AGA machine (A1200 or A4000), it will
use the new display modes and palette routines to improve the quality
of the internal viewer images.

Brief description
=================

   ImageStudio is written for the casual graphics user who wishes to
convert or manipulate various graphics formats on a modest Amiga
system. There are several commercial offerings available, however the
casual user is paying a lot of money for many facilities and options
they would probably never use.

   Bitmap graphics, by their nature, usually require large amounts of
RAM. One of the main objectives of ImageStudio was to reduce this
burden by utilising virtual memory - most users have more spare hard
disk space than spare RAM.

   ImageStudio works with several buffers at any one time (dependant on
how many levels of undo are specified), each of these buffers can hold
either colour-mapped or 24-bit images. For a detailed description of
colour-mapped and 24-bit images, See Image types.

   ImageStudio comes with a fully featured ARexx port, which allows the
writing of macro scripts to automate repetative processes and also
allows communication with other ARexx aware programs. Again, ARexx has
the reputation of being "something pretty difficult", so we've
simplified the use of ARexx in ImageStudio by allowing the user to
create, edit and run scripts entirely within ImageStudio - ImageStudio
even provides a blank template as a starting point for each new script.

List of features
================

   General:
   * Full 24-bit image buffers, with optimizations for colour-mapped
     (palette based) images.

   * Up to 100 levels of undo / redo.

   * User configurable virtual memory.

   * Fully featured, easy to use, ARexx interface.

   * Fully font sensitive, style guide complient, user interface.

   * Fully CyberGraphX compatibility for both the viewers and the
     preview window.

   * Modular loaders and savers.

   * User saveable preferences.

   * Operations applicable to the whole image or a selected region.

   * Up to 256 greyshade preview window (with optional dither).

   * Zoom on preview window.

   * Internal / external viewers.

   * Loading / saving / manipulating of AGA image formats (e.g. 256
     colours, HAM8) on non-AGA machines.

   * Max image size of 32000 x 32000 (crops images to 512 x 512 in the
     unregistered version).

   * Copy / paste to / from the system clipboard.

   * Runs on all Workbench 2.04+ Amiga's - utilises AGA chipset if
     available.

   * Online AmigaGuide help, as well as ASCII, TeX `.dvi' and
     PostScript documentation.

   * Multi-level help error requesters.

   * Public screen.

   * Requires no third party libraries or utilities.

   Import:
   * IFF-ILBM formats (Standard palette based, HAM6, HAM8, extra half
     bright, ILBM24)

   * BMP

   * Datatypes (with Workbench3.0 and above)

   * GIF (conforming to GIF87a or GIF89a)

   * IFF-DEEP

   * JPEG (conforming to JFIF standard)

   * PCX

   * PNM (PBM, PGM, PPM, ASCII and binary)

   * QRT (DKB, POV)

   * SGI

   * Targa

   * TIFF

   * VMEM (internal virtual memory format)

   Export:
   * IFF-ILBM formats (Standard palette based, HAM6, HAM8, extra half
     bright, ILBM24)

   * BMP

   * EPS

   * GIF (conforming to GIF87a or GIF89a)

   * IFF-DEEP

   * JPEG (conforming to JFIF standard)

   * PCX

   * PNM (PBM, PGM, PPM, ASCII and binary)

   * QRT (DKB, POV)

   * SGI

   * Targa

   * TIFF

   * VMEM (internal virtual memory format)

   Colour Balance:
   * All operations are available to the R,G,B components separately.

   * Brightness ( upto 100%)

   * Contrast (non to full)

   * Gamma ( + and - )

   Convolution:
   * Many supplied convolution filters.

   * User definable convolutions, load and save to disk.

   Effects:
   * Built in effects: Dynamic range expansion, FlipX, FlipY, RollX,
     RollY, Negative, Greyscale, Highlight, Shadow, Random, Pixelize,
     Remove isolated pixels.

   Scale:
   * Crop to selected region.

   * Increase / decrease scale by percentage or absolute image size.

   * Simple scale or colour averaged.

   Colour reduction:
   * Increase colour mapped images to 24-bit.

   * Decrease number of colours in 24-bit or colour mapped images via
     Heckbert median cut algorithm.

   * Dithers available for colour reduction: None, Floyd-Steinberg,
     Burkes, Stucki, Sierra, Jarvis, Stevenson-Arce.

   Palette:
   * Edit palette colours and ranges.

   * Save current palette.

   * Force palette onto current image, dithering if necessary (all dith
     ers available).

Shareware version
=================

   To encourage users to register, the freely distributable version of
ImageStudio will crop images to 512x512 pixels. All other operations
are available.

   For details on how to register, See How to register.

Starting ImageStudio
====================

   ImageStudio can be started from either the Workbench or CLI. From
the Workbench it is simply a case of double-clicking on the icon.
ImageStudio supports shift-clicking on a file to start the program with
(see the Workbench manual for more information).

   To start ImageStudio from the CLI, simply type:

     run ImageStudio [filename]

   where `filename' is an optional file to load in at startup. The full
range of tooltypes is supported, and can be appended to the CLI
command. For example:

     run ImageStudio "SCREENNAME=Image2" "PREVIEWDITHER=YES" [filename]

   would start the program on a public screen named `Image2' with pre
view dithering on. See Tooltypes, for a full list of available
tooltypes.

Upgrading from version 1.x.x
============================

   All versions of ImageStudio from version 2.0.0 require a *keyfile*
to work fully.

   Users who have registered the ImageStudio package after v2.0.0 will
be provided with a unique keyfile that can be used immediately.

   Users who have registered v1.x.x of the ImageStudio package will
have to create their own keyfile using the `Create keyfile' option
under the `Project' menu. See Create_keyfile, for more details.

   The idea of the keyfile is that once a keyfile has been created, it
can be placed somewhere where all the programs in the ImageStudio
package can access it. This is typically either the ImageStudio drawer
or the `S:' directory. The user should never need to create another
keyfile, it should work with all future versions of the software; for
this reason, it is suggested that the keyfile is backed up and kept
somewhere safe, as we will be unwilling to give out replacements should
you loose it.

   It should also be noted that each keyfile is unique to each user,
and your keyfile should not be given to others. If the number of
registrations should drop due to people abusing the keyfile scheme and
distributing pirate versions of the program, we shall be forced to do
one or more of the following:

  1. Stop providing free upgrades. All programs will be individually
     stamped and all upgrades must be paid for.

  2. Remove online help and provide printed manuals instead. This will
     naturally raise the price substantially.

  3. Sell the software to a software publisher for commercial
     distribution. This is likely to lead to a large price increase.

  4. Stop developing ImageStudio and related products.

   We see no reason why we should have to resort to any of these
measures, but if you're using a pirated copy of ImageStudio now and you
refuse to register, you *WILL* force this upon us.

   If you are using a pirate copy of ImageStudio, so will hundreds of
others. A hundred orders to us is the difference between us writing the
next version of the program, and us abandoning it. It really is your
choice.

Configuring ImageStudio
=======================

   In order to benefit from ImageStudio's virtual memory, it is
recommended that the default location used for the storage of the
temporary files is changed. The default location for the storage of
these files is `T:' which is usually in RAM - we want to move this out
onto harddisk.

   To do this, select `Prefs' from the `Project' menu and open up the
prefs requester. Change the TEMPDIR preference to the desired location
for the temporary files. See Prefs, for more information on changing
preference variables.

   It is suggested that a drawer be made on a harddisk partition with
lots of space to store these files. For example, make a drawer in your
`Work:' partition called `tmp', and change the TEMPDIR preference to
read `Work:tmp'.

Tutorial
********

   This chapter introduces ImageStudio by way of a few tutorials
demonstrating commonly performed operations.

Changing the image format
=========================

   The simplest use of ImageStudio is just as a file format converter;
See File formats, for details about the supported file formats.

   In this example we will change the image format of the
`FW14B_250x250.gif' from GIF to IFF-ILBM.

  1. Load the file `FW14B_250x250.gif' from the `Pics' drawer.  To do
     this, select `Open' from the `Project' menu. When the file
     requester opens, select the file and it will load into ImageStudio.
     The greyscale preview will show the image.

  2. The Infobar at the bottom of the screen shows the current image
     size and number of colours, as well as a fuelgauge showing
     progress when applicable. The current co-ordinates of the pointer
     are also shown when the preview window is active.

  3. Open the save requester. To do this, select `Save' from the
     `Project' menu. A requester will open, containing (amongst other
     things) possible save formats.

  4. Select the file format to save. To do this, click on `IFF-ILBM' in
     the listview.

  5. Change the filename to avoid overwriting the original file. To do
     this, type the new filename - `FW14B_250x250.ilbm' into the
     `Filename' string gadget.

  6. Save out the file by clicking on the `Save' gadget.

   The file will now be saved out as a 256 colour IFF-ILBM onto the
disk.

   Note:

   * All time consuming operations show their progress in the Infobar's
     fuelgauge and can be aborted by clicking on the `Abort' gadget.

Changing the number of colours
==============================

   Often it is necessary to reduce the number of colours in an image,
either to reduce the file size or produce images compatible with
non-AGA software.

   In this example we will reduce the number of colours in the
`FW14B_250x250.gif' image from 256 colours to 16 colours.

  1. Load in the `FW14B_250x250.gif' from the `Pics' drawer, if it not
     already loaded.

  2. Open the colours requester by selecting `Colours...' from the
     `Process' menu.

  3. The gadgets in the requester will show that the image is a 256 col
     our colour-mapped image. Change the number of colours to 16 by
     clicking on the cycle gadget or sliding the `No. of colours'
     slider.

  4. Leave the `Colour choice' and `Dithering' gadgets for now.

  5. Click on `OK' to perform the operation.

  6. When the operation is complete, view the image with the internal
     viewer by selecting `View' from the `View' menu. A 16 colour Lores
     image will be displayed.

  7. Remove the internal viewer by clicking the right mouse button.

   The colour reduced image should contain all the main colours used in
the original image (blue, yellow, red and grey), but should contain
less shades of the colours. To give the impression of more colours,
dithering can be used to mix pixels of the chosen colours. To perform
the last operation with dithering:

  1. Undo the colour reduction operation to return to the original 256
     colour image. To do this, select `Undo' from the `Edit' menu.

  2. Bring up the colours requester as before and select 16 colours.
     Also change the `Dithering' gadget from `None' to
     `Floyd-Steinberg'.

  3. Click on `OK' to perform the operation.

  4. View as before.

   The image will now perform more gradual changes to colour changes.

Changing the colour balance
===========================

   When receiving images from external sources (scanners, frame grab
bers) it is ofter necessary to change to "colour balance" of the image.
Frame grabbers, for example, may have too much `red' in the image.

   In this example we shall see the effects on the
`ColourFace_200x250RED.ham6' image of altering the colour balance.

  1. Load in the `ColourFace_200x250RED.ham6' image from the `Pics'
     drawer. As the file is in HAM6 format, it is turned into 24-bit
     internally.

  2. View the image with the internal viewer. As the Amiga doesn't have
     true 24-bit screenmodes, the internal viewer will approximate the
     24-bit image with a HAM preview screen (HAM6 on ECS machines, HAM8
     on AGA machines). It should be obvious from the viewer that the
     image is too red.

  3. Open the balance floating palette if it is not already open. Do
     this by selecting `Show balance' from the `Tools' menu.

  4. To remove some of the red component, make sure that we are only
     dealing with the red component. To do this, make sure that only the
     `Red' checkbox at the bottom of the floating palette is checked.

  5. Reduce the brightness slider, by say 20%. The graph on the right of
     the floating palette will reflect the change (see Show_balance for
     more details on the graph).

  6. View the image again, this time the image should have lost much of
     its unnatural red tint.

   Brightness and contrast work in very much the same way as a TV set,
but gamma may need some explanation.

   When printing an image out, it is usual for light colours to be
resolved well and dark colours to be reduced to a dark mush. It is
therefore preferable to have some way boost the brightness of the
mid-dark colours whilst still leaving the very light colours light and
the very dark colours dark. Gamma is the operator to perform this
change. By applying a small amount of positive gamma, a much better
balanced image can be produced for printing out.

   See Show_balance, for more information on the balance floating
palette.

Applying an effect
==================

   ImageStudio has many built in effects for performing commonly used
operations.

   This example will remove some noise from a region of
`HappyFace_240x250.bmp', a simulated scanned image.

  1. Load in the `HappyFace_240x250.bmp' image from the `Pics' drawer.

  2. The image represents what may happen if you hand scan an image into
     the computer - lots of "noise".

  3. Open the effects floating palette if it is not already open. Do
     this by selecting `Show effects' from the `Tools' menu.

  4. Select `Remove isolated pixels' in the listview of the floating
     palette. If you clicked on the `Apply' button now, the effect
     would be applied to the whole image. To compare the image before
     and after the effect, we'll only apply the effect to the left hand
     side of the image.

  5. Open the `Region co-ords' requester by selecting `Region
     co-ords...' from the `Edit' menu. To select the left hand side of
     the image, set the following values in the gadgets: Min x = 0, Min
     y = 0, Width = 120, Height = 250. Make sure that the radio button
     on the left of the requester shows that the Width / Height are
     being used, not the Max values; click on `Ok'.

  6. A region of "crawling ants" will show the selected region.

  7. Click on `Apply' of the effects floating palette. The `Remove
     isolated pixels' effect will be applied to the selected region.

  8. The left of the image will have had a lot of the noise
     automatically removed. Clear the selected region by clicking in
     the preview window.

   Note:
   * Not all effects can be applied to regions and whole images.  See
     Effects, for a comprehensive description of all the available
     effects.

   See Show_effects, for more information on the ef fects floating
palette.

Applying a convolution
======================

   Convolution is a powerful image processing tool, ImageStudio allows
the user to define their own convolution filters.

   This example will apply a `Texture' filter to the
`CheetahFace_250x200.ilbm' image.

  1. Load in the `CheetahFace_250x200.ilbm' image from the `Pics'
     drawer.

  2. The `CheetahFace_250x200.ilbm' image is a 32 colour col our-mapped
     image and convolution only works in 24-bit (see Show_convolves for
     information on how convolves actually work). We therefore need to
     turn the image into a 24-bit.

  3. Open the colours requester and click on the `16 million colours'
     radio button on the left. Click on `OK'. The image in converted
     into 24-bit.

  4. Open the convolves floating palette if it is not already open. Do
     this by selecting `Show convolves' from the `Tools' menu.

  5. There should be many convolution filters in the list, click on
     `Texture'.

  6. Apply the convolution filter to the image by clicking on `Apply' at
     the bottom of the floating palette.

  7. After the filter has been applied, you could view the result with
     the internal viewer in 24-bit, but for a clearer image we'll
     convert it back to 32 colours.

  8. Open the colours requester, select `No. colours' = 32 and `Dither'
     = `None'. Click on `OK'.

  9. Now view the 32 colour image with the internal viewer. The image
     now has a rough paper(?) texture applied to it.

   Note:

   * There are many commonly used convolution filters available, it is
     up to the user to build a collection suitable filters for their own
     use.

   See Show_convolves, for more information on the convolves floating
palette.

Scaling the image
=================

   In this example we will scale the `CheetahFace_250x200.ilbm' image
from 250 x 200 pixels down to 80 x 40 (icon size).

  1. Load in the `CheetahFace_250x200.ilbm' image from the `Pics'
     drawer.

  2. Open the scale requester by selecting `Scale...' in the `Process'
     menu.

  3. Set the `Width' = 80 and `Height' = 40. Click on `OK'.

  4. The image is re-scaled to that of an icon.

   The finish the creation of the icon, we can load it into Commodore's
`IconEdit' program. Both ImageStudio and IconEdit support the
clipboard, so we can copy the image into the clipboard from ImageStudio
and paste it into IconEdit.

  1. Copy the image to the clipboard by selected `Copy' in the `Edit'
     menu of ImageStudio.

  2. Run IconEdit from the `Tools' drawer of your system partition.

  3. Select `Paste' from IconEdit's `Edit' menu. The image will be
     copied into IconEdit for final editing.

Menu options
************

   This chapter describes ImageStudio's menu options in detail.

   Selecting a main menu from the list below will give a list of
sub-menu options.

Project
=======

   Select the submenu you wish to investigate.

Open
----

   Keyboard shortcut - `Amiga - O'

   This is how the user loads in an image into the program.

   A file requester will appear, through which the user can select a
file to open. Upon selecting a file, ImageStudio will test the file
against its known file formats - loading the file if the image type is
recognised. If the image format is not recognised, an error will be
shown.

   In most cases the image will load directly into ImageStudio; however
in the case of HAM6 and HAM8 formats the image is converted into 24-bit
data as it is loaded in, as ImageStudio cannot work directly on HAM
images. For a detailed description of colour-mapped and 24-bit images,
See Image types.

Save
----

   Keyboard shortcut - `Amiga - S'

   The save requester allows the user to choose the filename for the
saved image as well as the image's format.

   To change the filename, either click in the string gadget and edit
the filename directly or click on the `Choose...' gadget to select the
filename with a file requester.

   To change the image format of the file to be saved, click in the
listview on the appropriate format. Depending on the format selected,
depends on whether the `Options...' button is available.  Some formats
(e.g. IFF-ILBM) have further options available by clicking on the
`Options...' button.

   When the user has selected the filename and the image format, the
file can be saved by clicking on `OK' or no action can be performed by
clicking on `Cancel'. If the currently selected filename already
exists, the user will be warned that they are about to overwrite it.

Screen
------

   The user may select the current screen's resolution, number of
colours and font.

Screen mode
     The screenmode requester allows the user to change the properties
     of the current screen. Click on the desired screenmode as well as
     the size, number of colours and overscan settings. To bring the
     changes into effect, click on `OK' else to perform no action click
     on `Cancel'.

Screen font
     The screenfont requester allows the user to choose the font to be
     used in all the ImageStudio windows and menus. Any Amiga font can
     be used, although if a font which is too large to allow some of the
     windows to fit on the screen is chosen, the program will default
     back to using topaz 8.

     Under Workbench2.04, not all gadgets will scale properly with dif
     ferent sized fonts. Checkbox gadgets and mutual exclude (radio but
     ton) gadgets will remain a constant size, which may cause some
     windows to look slightly strange with very large or very small font
     sizes.

Prefs
-----

   The user may configure the program to their own needs with the prefs
requester. The requester consists of a scrolling list with all the
available preferences, several gadgets that show the current tooltype
value whilst allowing the user to change it, and a couple of checkboxes
for saving the current screenmode and window positions. When the user
is happy with the current values, they may save them as defaults by
clicking `Save', use them for the current session by clicking `Use' or
discard the changes by clicking `Cancel'.

   The preferences in the list are separated into string values (e.g.
filenames, ARexx port name etc...), numeric values (e.g. virtual memory
pagesize, number of undo buffers etc...) and boolean, or ON / OFF
values (e.g. Online AmigaGuide help, splash window on startup etc...).
A short description of the preference is shown on the left of the list,
the tooltype (see Tooltypes) name is shown below.

   To change a preference value, click on its name in the list. The
current value will be copied to the text or numeric value below; the
exception to this is a boolean preference, see below. The value is
changed by changing the displayed value in the gadget, it will be
stored as this value if another preference is selected or the user
presses `Save' or `Use'. If a string preference is selected that
requires a filename to be chosen, the `Choose...' gadget can be used to
select the desired filename from a file requester.

   Boolean preferences are changed by double-clicking on their entries
in the list. The value will toggle between the two states.

   If the user wishes to save the current screenmode or window
positions to be the defaults next time the program is started, they may
click on the `Save screenmode' and / or the `Save window positions'
checkboxes.

   When changing any of the preferences that require the use of an
external program (e.g. the external text editor), the string must be
formatted to contain a `%s' placed where the filename should be placed.

   The default string of

     run sys:Tools/Memacs <NIL: >NIL: "%s"

   for the `TEXTEDITOR' preference would run Commodore's Micro-emacs
text editor to edit files. It is recommended that the "run" is added at
the start of the string to run the program in the background (i.e.
ImageStudio doesn't have to wait for the text editor to finish) and
that the double-quotes are placed around the `%s' to allow for
filenames containing spaces.

   The preferences values may also be read (see ARexx_PREF_GET) and
written (see ARexx_PREF_SET) from ARexx.

About
-----

   This brings up a small requester containing information about the
program version number and the user name (only in registered version).

Info
----

   This brings up an information requester containing memory and file
usage information.

   The `Memory' figures are the amount of RAM used by the buffers, the
`VMem' figures are the amount of disk space used by the virtual memory.

   At the bottom of the requester the amount of free RAM and ARexx port
name is shown.

Help
----

   Keyboard shortcut - `Amiga - H'

   This brings up the main page of the AmigaGuide document.

   In order for AmigaGuide help to work, the following must be
satisfied:

  1. Commodore's AmigaGuide help has to be installed on your system.
     This comes with Workbench3.0+ and can be freely obtained for
     earlier versions of Workbench.

  2. The preference `HELP' must be `ON' (see Prefs).

  3. The *full* filename of the AmigaGuide helpfile must be given in
     the `HELPFILE' preference (see Tooltype_HELPFILE).

   It is recommended that help be turned off if you are short of memory.

   Once help is running, it can either be accessed by selecting the
`Help' submenu in the `Project' menu or by performing a standard "help
menu pick" on a menu item. To do this, highlight the menu item you item
you wish to know more about, but instead of releasing the right mouse
button to select the item, press `Help' on the key board. To clarify,
perform the following steps:

  1. Press right mouse button.

  2. Highlight menu item you wish to find out help on.

  3. Press `Help' on the keyboard.

  4. Release right mouse button.

Create keyfile
--------------

   This allows registered users with v1.x.x of ImageStudio to create a
keyfile to `unlock' the freely distributable versions of ImageStudio.

   A file requester will open asking the user to select their regis
tered version of ImageStudio v1.x.x. If ImageStudio recognises this as
a registered copy, a keyfile with the name given by the `KEYFILE'
preference (see Tooltype_KEYFILE) will created.

   If all is successful, when ImageStudio is next started it will be
fully operational.

   A plea:

     Please do not give your keyfile to anyone else. Each keyfile is
     individual to each user, so should your keyfile get into
     distribution it can be traced back to you. Don't try altering your
     keyfile, it won't work.

     Many thanks for your co-operation in this matter.

Iconify
-------

   Keyboard shortcut - `Amiga - !'

   This reduces the program to a small icon on the Workbench screen. To
reopen the program, simply double-click on the icon. In order to re
duce the amount of memory used by the program when it is iconified,
some of the working memory used by the program is purged; this could
lead to a freeing of several hundred K of memory, depending on the
virtual memory page size and data in internal caches.

Quit
----

   This quits the program. If any changes remain unsaved, the user is
warned before the program quits.

Edit
====

   Select the submenu you wish to investigate.

Undo
----

   Keyboard shortcut - `Amiga - U'

   Undos last operation.

   The maximum number of undos is set in the preferences requester, See
Prefs.

Redo
----

   Keyboard shortcut - `Amiga - R'

   Redos last undo.

   The maximum number of redos is set in the preferences requester, See
Prefs.

Copy
----

   Keyboard shortcut - `Amiga - C'

   Copies the current image to the clipboard.

   Once the image has been copied to the clipboard it can be used by
any other program that supports the Amiga clipboard.

Paste
-----

   Keyboard shortcut - `Amiga - V'

   Reads in image from the clipboard.

Flush buffers
-------------

   Flushing the buffers will free any memory and diskspace used by undo
/ redo buffers. The user is warned that once the buffers have been
freed, the data cannot be recovered. The current buffer (i.e. the image
in the preview window) is not affected.

Region co-ords
--------------

   Keyboard shortcut - `Amiga - D'

   Allows the user to select a region by typing the co-ordinates.

   The region co-ords requester allow the user to specify the selected
region by either typing in the co-ordinates of the minimum and maximum
corners of the rectangle or the minimum co-ordinates and the
rectangle's width and height. A radio button on the left of the
requester shows whether the maximum co-ords or the width and height are
to be used to select the region.

   If there is already a selected region, these values are copied into
the requester when it is opened.

Region clear
------------

   Removes any selected region from the preview window.

   As well as this menu item, the region can be cleared by simply
clicking in the preview window.

Select all
----------

   Keyboard shortcut - `Amiga - A'

   Makes the selected region the whole of the displayed image in the
preview window.

   Note:

   If the user has zoomed in on a region of the image (see Zoom_in),
`Select all' will not select the whole image but just the displayed
image in the preview window.

View
====

   Select the submenu you wish to investigate.

Full image
----------

   Keyboard shortcut - `Amiga - F'

   Displays the whole image in the preview window.

Zoom in
-------

   Keyboard shortcut - `Amiga - <'

   Zooms in to make the currently selected region fill the preview
window.

Zoom out
--------

   Keyboard shortcut - `Amiga - >'

   Zooms out by a factor of 3 times.

Internal viewer
---------------

   Keyboard shortcut - `Amiga - I'

   Views the current image with the internal viewer.

   The user may choose the viewer module to be used via the
INTERNALVIEWER preference (see Tooltype_INTERNALVIEWER) to adapt the
view er's capablities based on the Amiga on which it is being used.

   In general, if the image is colour-mapped, the viewer will try and
open a screen with the same number of colours as the image. Viewing
24-bit images is done by using the HAM screenmodes (HAM6 under ECS,
HAM8 under AGA) to approximate the 24-bit image. In order to keep the
viewer reasonably fast, the HAM image sometimes suffers from `colour
fringing' as the approximation is relatively crude (especially under
ECS).

   If the CyberGraphX retargetable system is being run on the Amiga
with a compatible graphics card, the image can be viewed using any of
the supplied viewers directly on a 15/16 or 24bit screen.

   If the image originated as an IFF-ILBM, the viewer screen will try
and open up in the same screen mode as the image. If this is not
possible, the user may change to a more suitable screenmode with the
`View screenmode' menu option, See View_screenmode.

   If the internal viewer won't display the current image, check the
following:

  1. If the image was loaded in as an IFF-ILBM, the saved screenmode may
     not be supported by your machine. For example, the screenmode may
     be `Productivity' and your machine doesn't have a multiscan
     monitor.  Simply change the screenmode to one your machine does
     support - e.g.  `Hires Laced'

  2. A colour-mapped image contains more colours than it is possible to
     show on a ECS machine. Either reduce the number of colours in the
     image to a number that can be displayed or use the `amigaplus.isio'
     internal viewer to display an approximation in a HAM screen.

  3. Make sure you have enough CHIP RAM free to open the screen. Large
     256 colour and 16 million colours images take lots of CHIP RAM.

   To stop the viewer at any time, press the right mouse button or
click on `Abort' in the infobar.

   The following internal viewer modules causes slight differences in
the behaviour in the way the image is handled in certain cases:

amiga.isio
     This module will work with both ECS and AGA Amigas. Colour-mapped
     images are displayed directly (upto 16 or 32 colours on ECS
     machines, 256 colours on AGA Amigas) and 24 bit images are shown on
     HAM6 screens. If the viewer cannot open the desired colour mapped
     screen, it fails.

amiga-aga.isio
     This module will only work with AGA Amigas. It functions exactly
     the same as the `amiga.isio' module, only it displays 24 bit
     images in HAM8.

amigaplus.isio
     This module is aimed at the ECS Amiga, essentially being the
     `amiga.isio' module but with the automatic capability of being able
     to display colour mapped images as HAM6 if the colour mapped image
     has too many image for the ECS chipset to display directly. This is
     useful for viewing the many 256 colour images on an ECS Amiga.

View screenmode
---------------

   This allows the user to set the screenmode of the image, and there
fore of the internal viewer.

   Click on the desired screenmode for the image in the screenmode
requester. The current screenmode is highlighted in the listview.

External viewer
---------------

   Uses an external viewer program to view the image.

   This calls up the external viewer program to view the current image.
If a third party 24-bit graphics card is installed, a viewer can be
used to view the image on that.

   To specify the external viewer to use, See Prefs.

Process
=======

   Select the submenu you wish to investigate.

Crop
----

   Keyboard shortcut - `Amiga - W'

   Crops the current image to the selected region.

   This reduces the image to only that which is in the selected region.
A region must be selected in order for this operation to work.

Scale
-----

   Keyboard shortcut - `Amiga - L'

   Reduces / increases the size of the image.

   The scale requester allows the user to change the image's width /
height by either selecting the absolute size of the new image or the
percentage by which to scale. A radio gadget to the left shows which
operation will be performed.

   The percentage value may also be changed by sliding the width and
height sliders to achieve the desired final size; divide and multiply
by 2 buttons are provided to quickly scale the image by common amounts.

   Finally, two methods of scaling are supported: fast and colour
average. Fast scaling works with both colour-mapped and 24-bit images
and produces results adequate for most needs. If the image is to be
scaled up by a large amount the image may become very `blocky' and if
the image is scaled down a large amount, information in the image may
be lost. To reduce this, colour average scaling is available on 24-bit
images which reduces blockiness when increasing the scale and reduces
information loss when reducing the scale. Colour average rescale can
take significantly longer than a fast rescale.

Colours
-------

   Keyboard shortcut - `Amiga - K'

   Allows increasing / decreasing of the number of colours in the im
age, with various dithers.

   The colours requester allows the user control over the number of
colours in the image. A radio button on the left hand side shows
whether the current image is colour-mapped or 24-bit.

   To increase the number of colours in a colour-mapped image, simply
select the new number of colours with the top cycle gadget or the `No.
colours' slider. Although the number of colours need not be a power of
2 (2, 4, 8, 16, 32, 64, 128 or 256), internally the number will be
rounded up to the nearest power of 2. If, for example, a 16 colour
picture was increased to 20 colours then the image would be come a 32
colour image.

   Colour-mapped images can also be turned into 24-bit images by click
ing on the `16 million colours' radio button on the left hand side of
the requester. This is useful if the user wishes to perform an
operation on a colour-mapped image that can only be performed on a
24-bit image. The resultant 24-bit image can then be turned back into a
colour-mapped image after the operation is complete.

   To reduce the number of colours in an image, the same process is
followed as above with a few differences. Whereas increasing the number
of colours in an image does not lose any image information, it is
enevitable that reducing the number of colours must lose some of the
colour information. In order to help reduce the effect of this, two
other aids are used: dithering and palette choice.

   The result of colour reduction is always a colour-mapped image. The
user may select the number of colours in the final image with the top
cycle gadget or the `No. colours' slider. Again, although the number of
colours need not be a power of  2 (2, 4, 8, 16, 32, 64, 128 or 256),
internally the number will be rounded up to the nearest power of 2.
This though can be useful, as the user may want to re duce a 24-bit
image down to 30 colours - leaving 2 spare for his / her own use.

   In order to give the impression of more colours in the reduced col
our image, dithering can be employed to smoothly distribute colours
over areas of high colour change. `Floyd-Steinberg' is the most common
method and works well in most cases. For larger images, better contrast
can be obtained by using a more computationally intensive dither
(`Burkes', `Stucki', `Sierra', `Jarvis') and for the user with large
images and lots of time to spare, `Stevenson-Arce'.  Again, there is no
hard and fast rule which method of dithering is best; if you're not
happy with the result, try a different method.

Palette
-------

   Allows the saving of the current palette and loading of new palette
onto the current image.

   Palettes can either be loaded, saved and edited in ImageStudio:

Palette load
     This is used to force a palette onto an image. The requester allows
     the user to choose the palette to load and any dithering to be
     applied to the image, See Colours. Various sample palettes are
     given with the distribution to map the image to the Workbench
     colours or a general purpose palette. New palettes can be generated
     with any popular paint package(1).

Palette save
     Saves the current palette out to the filename chosen by the user in
     the requester. The palette file is compatible with the popular
     paint packages. This option has no relevance for 24-bit images, as
     they have no palette.

Palette edit
     This brings up the palette edit requester. Here the user may edit
     each colour individually or move the colours around with the `Copy'
     and `Swap' operations. Colour ranges can be created and ranges may
     be sorted into order of increasing or decreasing luminosity.

     To edit a colour, simply click on the colour in the scrolling
     viewer and edit the R,G,B or H,S,V colour values (see Colour
     representations).

     To copy or swap two colours, click on the first one in the
     scrolling viewer then click on either `Copy' or `Swap'. The
     pointer will change to a "To" pointer to allow you to click on
     another colour to swap or copy to.

     To create a colour spread, alter one colour to be the start of the
     spread and alter another colour to be the end of the spread. Click
     ing on the first colour, then on `Spread', the on the end colour
     will cause a smooth transition of colours between the start and end
     colours.

     Sorting the colours is like a colour spread, only no colour values
     are actually changed. Simply click on the start of the sort,
     followed by either of the `Sort' buttons and finally on the end
     colour.  The colours between these values will be sorted into
     either an in creasing or decreasing order of luminosity.

     Finally, to apply the new colour palette to the image click on
     `OK'.  To remap the image to the new palette (swap the old colours
     with their nearest match in the new palette), click on `Remap'.

     Whilst changing the colours in the scrolling viewer, the colours in
     the preview window will change. *This is not a representation of
     what is happening to the image!*.

   ---------- Footnotes ----------

   (1)  Except Brilliance, which seems to save all 384 colours of its
palette.

Tools
=====

   Select the submenu you wish to investigate.

Command shell
-------------

   Keyboard shortcut - `Amiga - 0'

   Opens the ARexx command shell.

   The command shell allows the user to enter ARexx commands directly,
without having to write a script file (see Show_scripts). This means
that the effect of the ARexx command may be seen directly, allowing the
commands to be experimented with before adding them to a script.

   The values returned by a command are displayed in a readable form in
the command shell.

   It should be noted that the command shell differs from executing an
actual ARexx script in the following ways:

  1. Each entered command is passed directly to ImageStudio without
     going through ARexx first. This means that no ARexx statements can
     be used (e.g. loops) and no variables may be defined.

  2. The string entered in the command shell is *exactly* what is seen
     by the ImageStudio command parser - nothing is evaluated. It is
     not neccessary therefore to enclose strings in both single and
     double quotes to stop them from being evaluated. For example, the
     following line is valid in the command shell, but invalid in an
     ARexx script as the string would have its quotes removed (see
     Common ARexx problems):

          REQUEST_MESSAGE TEXT "A string with spaces in it"


   Help on a particular command's template (see Command templates) can
be obtained by typing:

     help <command>

   in the command shell. The command's template for the input and
return values will be show.

Show balance
------------

   Keyboard shortcut - `Amiga - 1'

   Opens / closes the balance floating palette.

   The balance floating palette is used to control the brightness,
contrast and gamma of the current image. On 24-bit images, the colour
balance can be altered on selected regions as well as the whole image
whereas colour-mapped images only allow alterations to the whole image.

   The colour balance effects are usually applied to all the red /
green / blue components simultaneously, but each component can be
altered individually by checking the `Red', `Green' or `Blue' check
boxes at the bottom of the floating palette.

   The effect of changing either the brightness, contrast or gamma can
be seen in the graph on the right hand side of the floating palette.
The graph shows the input RGB component along the X-axis and the output
RGB component along the Y-axis.

     	 output
      Light RGB ^
     	   |
     	   |
     	   |
     	   |
     	   |
       Dark RGB |
     	   +-------> input
            Dark RGB  Light RGB

   No operation is shown therefore with a straight diagonal line - the
input value is mapped to the same output value.

     	 output
     	   ^
     	   |     /
     	  x|____/
     	   |   /|
     	   |  / |
     	   | /  |
     	   |/   |
     	   +-------> input
     		x

Brightness
     Altering the brightness is achieved by mutliplying up / down the
     RGB components by the specified amount. The range of the slider is
     from -100% (everything becomes black) to +100% (everything is
     twice as bright).

Contrast
     Altering the contrast forces dark colours darker and light colours
     lighter. The range of the slider is from -100% (everything becomes
     mid grey) to +100% (RGB components are either on/off).

     Note: 100% contrast on a colour image doesn't produce a black and
     white image as may be expected. As each RGB component is treated
     individually, it leaves you with an 8 colour image - the 8 colours
     being composed of combinations of the RGB components as below:

    Black
          0% Red, 0% Green, 0% Blue

    Red
          100% Red, 0% Green, 0% Blue

    Green
          0% Red, 100% Green, 0% Blue

    Blue
          0% Red, 0% Green, 100% Blue

    Yellow
          100% Red, 100% Green, 0% Blue

    Magenta
          100% Red, 0% Green, 100% Blue

    Cyan
          0% Red, 100% Green, 100% Blue

    White
          100% Red, 100% Green, 100% Blue

     If you wish to turn a colour image into 2 colour black and white,
     greyscale the image first with the greyscale effect, See Effects.

Gamma
     Adjusting the gamma of an image has the effect of lightening some
     of the mid-dark colours, whilst leaving the dark colours dark.
     This can often enhance the eye's perception of the image, as the
     eye is more responsive to light colours. Gamma correction can also
     be useful when printing an image out, as mid-dark colours tend to
     get printed too dark.

     Only small alterations are usually needed with this operator (-20%
     to +20%).

Show effects
------------

   Keyboard shortcut - `Amiga - 2'

   Opens / closes the effects floating palette.

   The effects floating palette contains a list of ImageStudio's built
in effects. Not all types of effect can be applied to all types of
buffer, the details are given below. Any numerical values required by
the individual effects are set using the slider on the effect floating
palette.

   An effect can be applied by clicking on the `Apply' button or
double-clicking on the list entry.

   See Effects, for details of all available effects.

Show convolves
--------------

   Keyboard shortcut - `Amiga - 3'

   Opens / closes the convolves floating palette.

   The convolves floating palette allows the user to apply their own
convolution effects to a 24-bit image; convolution will not work on
colour-mapped images.

   To create a new convolution filter, select `New' and then `Edit'
from the floating palette. The convolve grid requester contains the
convolution filter's name at the top as well as gadgets for the filter,
divisor and bias values. When the user has set the filter values, click
on `OK' to return to the convolve floating palette.

   To apply a filter, select it in the listview and click on `Apply'.
To delete a filter from the list, click on `Del'. This will not delete
the file from the disk, this has to be done from the Workbench.

   To scan a new drawer for convolution filters, click on `Load' and
select a directory to scan. To save the current list's convolution
filters, click on `Save' and select a drawer to save to.

   The default drawer to scan at startup is set in the preferences, See
Prefs.

   A convolve can be applied by clicking on the `Apply' button or
double-clicking on the list entry.

   What follows is a quick description of convolution, it is not
necessary to understand this to use the filters.

   It is convenient think of the convolution filter as an array of
numbers that "slides" over the image a pixel at a time. To find the new
colour value of the pixel at the centre of the filter, multiply the
filter values by the values of the colours under the array then divide
the result by the `Div' value, then add the `Bias' value.

   If we take the example of 3 x 3 `blur low' filter being applied to
the pixels below:

     filter                  pixels
     
     0 1 0                   a b c
     1 2 1  convolved with   d e f   gives:
     0 1 0                   g h i

   ((0 x a) + (1 x b) + (0 x c) + (1 x d) + (2 x e) + (1 x f) + (0 x g)
+ (1 x h) + (0 x i)) / Div + Bias

   which would be applied to the new pixel in the position of the `e'
pixel.

   Although the pixels shown above are shown as `a', `b' etc...  they
are actually the 3 red, green and blue values that comprise the colour.

   Examples:

  1.      0 0 0
          0 1 0
          0 0 0
          Div = 3, Bias = 0
     would make each pixel one third of its original brightness.

  2.      0 0 0
          0 0 0
          0 1 0
          Div = 1, Bias = 0
     would move each pixel up by one.

  3.      0 0 0
          0 1 0
          0 0 0
          Div = 1, Bias = 50
     would add 50 onto each of the red, green, blue components of the
     centre pixel.

   Note:

   * The red, green, blue components of a pixel can have values in the
     range 0 to 255. If a convolution value is greater than 255 it is
     made equal to 255. Similarly if a convolution value is less than 0
     it is made equal to 0.

   * ImageStudio has optimized routines for 1x1, 3x3 and 5x5 filters. If
     the program detects that only values in a 3x3 filter are being
     used, only calculations for a 3x3 filter are performed.

Show scripts
------------

   Keyboard shortcut - `Amiga - 4'

   Opens / closes the scripts floating palette.

   The scripts floating palette gives a list of easily available ARexx
scripts for the user to apply.

   To execute a script in the list, select the desired script and click
on `Apply' or simply double-click on the list entry. The script can be
stopped by either clicking on `Abort' during any operation or choosing
`Cancel' on any given requester (if the script is written correctly,
that is). See Writing scripts, for more information on creating ARexx
scripts.

   New scripts can be created by clicking on `New...' button. The user
is requested to name the new script and it is placed in the listview.
By default, the script will already contain some ARexx commands to help
the user - the user simply adds what is neccessary.

   To edit the currently selected script, the `Edit...' button is used.
The text editor set in the preferences (see Prefs) is used to edit the
file.

   The `Load...' button allows the user to scan another directory for
ARexx script files. `Other...' will let the user select another ARexx
script file to run, without adding it to the list.

Show coords
-----------

   Keyboard shortcut - `Amiga - 5'

   Opens / closes co-ords floating palette.

   The co-ords floating palette shows the current position in the image
of the mouse pointer. When dragging box to select a region, the current
region width and height are shown.

ARexx
*****

   This chapter gives information about the program's interface to the
ARexx programming language.

Introduction to ARexx
=====================

   ARexx is the script language that is distributed with all Amigas
sporting Workbench 2.04 and above. It is used on the Amiga for two main
tasks:

  1. Providing an easy and consistent method of adding macro facilities
     to programs.

  2. To allow ARexx aware programs to communicate with each other.

   Most users are dissuaded from using ARexx with their programs be
cause of the learning curve involved in (i) learning ARexx and (ii)
using the functions provided with each program. With ImageStudio, we
have tried to simplify the process of creating an ARexx script by:

  1. Providing an easy interface for creating and running the scripts.

  2. Providing a ready-made script template which the user can just
     "fill in the blanks" to produce a fully working program.

  3. Providing many commands to perform commonly performed operations.
     This means the user needs to write less code in ARexx and doesn't
     need to rely on external utilities and libraries to perform the
     operations.

   Typical uses for ARexx in ImageStudio include:

   * Batch processing. ImageStudio can now be told to repeatedly perform
     the same operation on many images. The user could, for example,
     convert all PCX files in a given directory into IFF-ILBM files.

   * Background processing. ImageStudio can be told to watch a given di
     rectory and whenever a new file is generated to perform a set of op
     erations on it. This is useful for producing ray-traced animations,
     where each frame of the animation could be converted from 24bits to
     HAM6 (say) as each frame was generated by the ray tracer.

   * Adding additional image manipulation abilities to other programs.
     ImageStudio could be passed an image from another program, process
     it, then return it back to the original program. By using a desktop
     publishing package that supports ARexx, an image could be saved
     from the DTP program, gamma corrected by ImageStudio, then
     reloaded back into the DTP program all automatically.

   Many example files are given with ImageStudio (see Example scripts),
which can either be used directly or modified to perform the desired
operation.

   In order for ARexx to be available to ImageStudio, you must start
ARexx at startup time by including the line:

     rexxmast >NIL:

   in your `User-Startup' file in the `S:' directory. Normally this
line should be present in your User-Startup, but if you find no scripts
run from ImageStudio you must add this line manually.

Writing scripts
===============

   We have tried to simplify the process of writing an ARexx script as
much a possible to provide access to the power of ARexx scripts without
(too much(!)) pain.

   An ARexx script can be written and run without ever having to leave
ImageStudio. The only extra tool needed is a text editor; ImageStudio
can be configured to use your favourite text editor by changing the
program's preferences (see Prefs). The basic process of creating an
ARexx script is as follows:

  1. Open the `Scripts' floating palette.

  2. Create and name the new script by clicking on `New...'.

  3. Load the blank script template into your editor by clicking on
     `Edit...'.

  4. Add the desired commands to the template in the space provided.

  5. Save the file and exit the text editor.

  6. Run the script by clicking on the `Apply' button on the scripts
     floating palette.

   Any errors the script may generate will be displayed in a requester
on the ImageStudio screen.

   To try this process out, try the following:

  1. Open the `Scripts' floating palette.

  2. Click on `New...' and call the script "FirstScript".

  3. Edit the new script by clicking on `Edit...'.

  4. In the space provided in the script, type the following lines:

          OPEN "Pics/FW14B_250x250.gif"
          SCALE 80 40
          PALETTE_LOAD "Palettes/Workbench4.palette" DITHER FS
          VIEW

  5. Save the file and exit the text editor.

  6. Run the script by clicking on the `Apply' button on the scripts
     floating palette.

   The result of the above script should be a 4 colour icon sized image
of a Formula1 racing car. This could now be copied into the clip board
by selecting `Copy' in the `Edit' menu and pasted into Commodore's
IconEdit program for final conversion into an icon.  Alternatively, the
command to copy the image into the clipboard could be added to the end
of the script.

   See ARexx commands, for a full description of the ARexx commands
used in the above example.

   Note, please don't remove the "/* BEGIN PROGRAM ****" and corre
sponding "END PROGRAM" lines in the blank macro template - these will
be used to insert the recorded ARexx macros when they are implemented
(see Future additions).

Basic ARexx
===========

   This section is meant as a beginners guide to using ARexx with Imag
eStudio. We cannot hope to teach you the ARexx language, although it is
only neccessary to the know the very basics to start using ARexx
scripts with ImageStudio. It is assumed that the user is editing and
running their scripts from within ImageStudio (see Show_scripts).

   For further information on ARexx, we suggest reading Commodore's
ARexx user guide supplied with the A4000 or the Workbench2 and 3 up
grade packs. For A600 and A1200 users who don't get this manual, we
recommend the "ARexxGuide" AmigaGuide document by Robin Evans which is
a shareware document containing extensive information on the ARexx
language. The guide can be obtained from all good PD houses.

   The ARexx programming language is similar to many other programming
languages in its structure. Users who have BASIC, C, FORTRAN, Pascal,
Modula2 or Oberon experience will notice many similarites. It is not
similar to Assember language, Lisp or Prolog. An ARexx pro gram is, in
its simplest form, a list of instructions for ImageStudio to perform.
Here is a simple ARexx program:

     /* A simple ARexx program */
     
     REQUEST_MESSAGE TEXT '"Hello world!"'
     
     exit

   This shows some important things about an ARexx program:

  1. All ARexx programs *must* start with a comment line. A comment
     line is a line which starts with the `/*' sequence of characters
     and ends with the `*/' characters. Anything between these
     characters is ignored by ARexx.

  2. For clarity, all of ImageStudio's commands are shown CAPITALISED,
     ARexx commands are kept in lower case. REQUEST_MESSAGE is therefore
     an ImageStudio command that should be performed.

  3. The REQUEST_MESSAGE has some `arguments' or `parameters' following
     it. These tell the REQUEST_MESSAGE command how to behave, in this
     case they tell the command to pop up greeting message.

  4. To stop an ARexx program, use the command `exit'.

   OK, lets enhance our program a little:

     /* A better simple ARexx program */
     
     REQUEST_MESSAGE TEXT '"What do you think of\n'||,
        'the show so far?"',
        BUTTONTEXT "Great|Mediocre|Rubbish"
     
     exit

   From this example we learn:

  1. To separate a long command line, place a comma `,' as the last
     character on the line. This tells ARexx to treat the next line as a
     continuation of the previous. Two line breaks are used in the above
     example.

  2. ARexx loves to evaluate things. If we want to stop ARexx evaluating
     variables, the variable should be enclosed in single quotes ` ' '.

   See ARexx problem 1, if little explanation is needed as to the many
double and single quotes used above. If we now tell you that the `\n'
characters are used represent a newline and the `||' characters glue
string together, we should see that:

     '"What do you think of\n'||'the show so far?"'

   would be evaluated to:

     "What do you think of*the show so far?"

   where `*' represents a newline. The lesson to be learnt here is that
whenever you use a string (with or without spaces) it is best to
enclose the whole thing in single quotes outside the double quotes to
keep the whole thing together.

   On with the examples. The previous script isn't much use if we can't
test for which button the user pressed, so:

     /* A better simple ARexx program */
     
     options results
     
     REQUEST_MESSAGE TEXT '"What do you think of\n'||,
        'the show so far?"',
        BUTTONTEXT "Great|Mediocre|Rubbish"
     
     if RESULT == 0 then
        REQUEST_MESSAGE TEXT '"Sorry, I was trying very hard."'
     else if RESULT == 2 then
        REQUEST_MESSAGE TEXT '"It gets better."'
     else do
        REQUEST_MESSAGE TEXT '"We like happy users."'
        REQUEST_MESSAGE TEXT '"Treat yourself to a coffee."'
        end
     
     exit

   This shows:

  1. Normally ARexx ignores the values returned by commands. To allow
     commands to return values, use "options results"; this is done for
     you in the blank ARexx script.

  2. Unless otherwise specified (see Return values) commands return the
     results of their operation in a variable called "RESULT". The
     command REQUEST_MESSAGE returns the value of the button that the
     user pressed.  It is this value that we can test for.

  3. The `if' tests are shown above. Note that if you only want to
     perform one operation as part of the `if', you can just place it
     after the `then'. If you wish to perform more operations, they
     must be placed in  a `do / end' set.

   OK, that's about it for the introduction to ARexx. We really suggest
now that you look at the example scripts provided with ImageStudio (see
Example scripts) to learn more examples. Have fun!

   Note, if you use any ARexx command which prints text out (e.g.
"say"), this text is printed to the file given by the tooltype
REXXOUTPUT (see Tooltype_REXXOUTPUT). After the script has been
executed, this file can be examined.

Command templates
=================

   The parameters passed to the ARexx commands closely follow
Commodore's style guidelines. The parsing of the arguments follows the
standard template format described below.

   Commands are always of the form:

     command [options]

   The command may be something like `OPEN' or `SCALE' and the options
may be filenames, numbers etc... A typical command template may look
like:

     OPEN FILE/A,FORMAT,ARGS,FORCE/S

   The commands and options are not case sensitive, therefore `OPEN',
`Open' or `open' can be used to open a file. The options after the
command name are separated by commas, and are named (e.g. FILE or FORCE
are option names). After the name, follows an optional modi fier (e.g.
/A or /S are modifiers) which describes what type of in formation the
option specifies.

   	When using the command, the option names may be ommitted if the
parameters for the command are given in the same order as the options
in the template, but for clarity it is recommended that the option
names be used.

   The following modifiers are used:

No modifier
     If the option has no modifier, the option is expecting a string.
     Strings are lines of text with no spaces; to use a string with a
     space, place the string in double-quotes (").

Multiple strings (/M)
     Many strings can be specified if an option uses this modifier.

Numeric (/N)
     Numeric options allow both positive and negative integers. Floating
     point numbers are not yet used by ImageStudio.

Boolean (/S)
     Some options can be specified to "switch" that option on. By
     leaving the option out, the option is switched off.

Keyword (/K)
     A keyword option shows that the option name must be used to set
     this option.

Always (/A)
     This option must always be included in this command.

   In practice, it soon becomes very easy to interpret command
templates - some examples with explanations are given below:

     OPEN FILE/A,FORMAT,ARGS,FORCE/S

   The command `OPEN' is used to open a file and load it into
ImageStudio. OPEN requires a filename (FILE/A is a string, and is
always required), an optional FORMAT string, an optional ARGS string
and and optional FORCE switch. The following are valid OPEN commands:

   The following would load a file called
`Pics/CheetahFace250x200.ilbm', forcing the old project to be over
written:

     OPEN FILE "Pics/CheetahFace250x200.ilbm" FORCE

   The following would load a file called `Ram Disk:Tulip.jpg', asking
first if the current project has changed:

     OPEN '"Ram Disk:Tulip.jpg"'

   The following is an error, if the filename has spaces in it, it
should be enclosed in single and double-quotes:

     OPEN "Ram Disk:Tulip.jpg"

     SCALE X/N,Y/N,PERCENT/S,METHOD

   `SCALE' is used to change the size of the image (see ARexx_SCALE).
SCALE expects two numerical values (X/N,Y/N are numbers but neither are
required), can be used to scale either to an absolute size or by a
given percentage (adding the PER CENT switch specifies percentage
scaling) and can use a variety of methods (METHOD is used to specify a
description string of the method to be used - again, if this is not
specified a default method is used). The following are valid SCALE
commands:

   The following scales the image to 640x480 pixels:

     SCALE X 640 Y 480

   The following makes the image 50 percent of its original height:

     SCALE Y 50 PERCENT

   The following scales the image to 800x600 pixels using the colour
averaging method:

     SCALE 800 600 METHOD AVERAGE

   The following is an error, no X or Y values given:

     SCALE X PERCENT

   The following is an error, floating point values are not allowed:

     SCALE Y 127.5

   See ARexx commands, for more detailed descriptions of each of the
individual ARexx commands.

Return values
=============

   The return values for the ARexx commands are specified in the same
notation as the input parameters, although the types of returned values
is more limited than the input parameter types. In order for results to
be returned from ARexx commands, it is essential that the line:

     options results

   be placed near the start of the ARexx script.

   Commands may return either strings, numbers or arrays of either. By
default, all ARexx commands return their values in a variable called
"RESULT". This is fine if the command returns a single number or
string. For example, the following call to the FILE_JOIN command (see
ARexx_FILE_JOIN) would return the string "T:Image.ilbm" in the RESULT
variable:

     FILE_JOIN PATHPART "T:" FILEPART "Image.ilbm"

   If the user wishes to return the result in another variable other
than RESULT, they may specify the VAR keyword. For example, the
following would perform the same action as above, only putting the
result in the varible called "FULLNAME"

     FILE_JOIN PATHPART "T:" FILEPART "Image.ilbm" VAR FULLNAME

   Some ARexx commands return multiple values, and these to can be re
turned in a single variable - each returned value in the variable is
seperated with a space. The following returns information about the
current image (see ARexx_IMAGEINFO_GET):

     IMAGEINFO_GET

   and the RESULT variable might look something like:

     640 400 8 Pics/Zebra.ilbm 32772

   It is possible then to extract the desired information using ARexx's
built in parsing routines. A neater way to return multiple values
though is through a "stem" variable. Here, a base name for a variable
is given and the returned values' names get added to it. It is clearer
with an example:

     IMAGEINFO_GET STEM IMAGEINFO.

   would return the same information as previously, only it would
create the following variables:

     IMAGEINFO.WIDTH = 640
     IMAGEINFO.HEIGHT = 400
     IMAGEINFO.DEPTH = 8
     IMAGEINFO.FILE = Pics/Zebra.ilbm
     IMAGEINFO.MODEID = 32772

   Now you can refer easily to the returned values.

   If an ARexx function returns an array of results, they are named as
follows:

     STEMNAME.RESULTNAME.NUMBER

   with the variable STEMNAME.RESULTNAME.COUNT holding the number of
returned results. Again, an example being the following which gets all
the ".ilbm" images in the "Pics" dirctory:

     FILES_MATCH PATHPART "Pics" PATTERN "#?.ilbm" STEM MATCHED.

   which might return the following:

     MATCHED.FILEPARTS.COUNT = 4
     MATCHED.FILEPARTS.0 = Zebra.ilbm
     MATCHED.FILEPARTS.1 = WilliamsFW14B.ilbm
     MATCHED.FILEPARTS.2 = Spitfire.ilbm
     MATCHED.FILEPARTS.3 = Brightside.ilbm

   See ARexx tips, for more information on how to turn array stem
variables into string variables.

Error checking
==============

   ImageStudio uses the standard ARexx method of returning errors, with
a further extension.

   Whenever a command is executed, a variable called "RC" has its value
set by ARexx. If the command executed normally, RC is set to zero.  If
any failure happened, RC is set to either 5 (warning), 10 (failure) or
20 (serious failure).

   ImageStudio also sets the value of a further variable called "RC2",
which either contains a text description of the reason for failure or a
standard AmigaDos error code.

   A description string is returned in RC2 if a failure occurs within
the execution of a command. RC2 will be an AmigaDos error number if
there is an error with the command syntax (e.g. mis-spelled command
name or missing quotes).

   If, for example the user was to try to use the scale command when
there was no image in the buffer, RC and RC2 would be set to the
following:

     RC = 10
     RC2 = "SCALE, No image"

   If the scale operation were to be performed with the command:

     SCLAE 80 40

   the following values would be set:

     RC = 10
     RC2 = 236

   where AmigaDos error 236 represents `not implemented', i.e. unknown
command. The default blank script template will convert the most common
likely AmigaDos error codes into description strings (see Commodore's
AmigaDos manual for a full description of AmigaDos errors).

   By default, the blank script template turns on automatic error
checking. The line:

     signal on error

   tells ImageStudio to jump to the ERROR: label whenever a command
fails. The blank script then puts up a requester showing the error.

   The user may wish to turn off the automatic error checking to
perform error checking themselves. This is neccessary, for example, if
the user wishes to trap the user pressing `Cancel' on a requester (this
returns an error). The following checks when the user cancels the file
requester:

     /* Turn off automatic error checking */
     
     signal off error
     
     /* Open the requester */
     
     REQUEST_FILE
     
     /* Check for the error condition */
     
     if RC ~= 0 then do
        REQUEST_MESSAGE TEXT '"An error occurred (user\n'||,
           'probably pressed Cancel)"'
        end
     else do
        REQUEST_MESSAGE TEXT '"You chose: '||RESULT||'"'
        end

Common ARexx problems
=====================

ARexx problem 1
---------------

     "I can't use strings with spaces in them."

   Care must be taken when specifying string paramters when the string
contains space characters. Single quotes must be used around double
quotes to stop the string from being seen as many different strings.

   Consider the following example:

     REQUEST_MESSAGE TEXT "Hello"

   ARexx would evaluate the string "Hello" and give ImageStudio the
following command to execute:

     REQUEST_MESSAGE TEXT Hello

   i.e. without the double quotes. In this example, REQUEST_MESSAGE
would do as expected. The problems start when strings have spaces in
them; consider the following:

     REQUEST_MESSAGE TEXT "Hello world"

   ARexx would evaluate the string "Hello world" and give ImageStudio
the following command to execute:

     REQUEST_MESSAGE TEXT Hello world

   which is not what is desired. The Hello becomes the TEXT value and
the world becomes the value of the next parameter (BUTTONTEXT in this
case). The result would be a requester with the text of "Hello" and a
button called "world". Now we must use the single quotes to stop ARexx
from evaluating the string:

     REQUEST_MESSAGE TEXT '"Hello world"'

   would send ImageStudio the following command:

     REQUEST_MESSAGE TEXT "Hello world"

   which shows that the whole string "Hello world" belongs to the TEXT
parameter.

ARexx problem 2
---------------

     "I can't use AmigaDos commands in a script."

   There is a bug which causes ImageStudio to sometimes crash the
machine if the output from AmigaDos command is not properly
re-directed. The stdin and stdout for all external CLI commands should
be redirected to the NIL: device.

   For example:

     address command 'rename ram:foo ram:bar'

   could crash the machine if the rename fails (e.g. the file "ram:foo"
doesn't exist). To avoid this, use:

     address command 'rename <NIL: >NIL: ram:foo ram:bar'

   The failure will still be trapped by ARexx and sets RC to 10.

ARexx problem 3
---------------

     "I can't run scripts from the ram disk."

   This is due to ARexx scripts being treated by ARexx as external
commands. Command names may not contain spaces, and scripts in the ram
disk will be called something like `Ram Disk:MyScript.isrx', which is
not allowed.

   To work around this, either move the script to a location without a
space in its filename or specify the ram disk as `ram:' rather than
`Ram Disk:'.

ARexx problem 4
---------------

     "I can't set the same variable twice with VAR"

   If you are able to return a value from a command into a given
variable name once in a program, but unable to do it again it's probably
due to ARexx evaluating your variable the second time it is used.

   For example, the following won't work:

     FILE_JOIN FILEPART '"Work:"' '"MyFile"' VAR fullname
     
     FILE_JOIN FILEPART '"Work:"' '"MyOtherFile"' VAR fullname

   because ARexx will evaluate `fullname' in the second FILE_JOIN, i.e.
ARexx will see the second FILE_JOIN as:

     FILE_JOIN FILEPART "Work:" "MyFile" VAR Work:MyFile

   The solution is to enclose the variable name in single quotes to
stop it from being evaluated, i.e. our second FILE_JOIN is written as:

     FILE_JOIN FILEPART '"Work:"' '"MyOtherFile"' VAR 'fullname'

ARexx problem 5
---------------

     "I can't get any ARexx script to run."

   In order for ARexx to be available to ImageStudio, you must start
ARexx at startup time by including the line:

     rexxmast >NIL:

   in your `User-Startup' file in the `S:' directory. Normally this
line should be present in your User-Startup, but if you find no scripts
run from ImageStudio you must add this line manually.

ARexx tips
==========

ARexx tip 1
-----------

     "How to turn stem arrays into strings."

   It usually desirable for commands that return arrays to return the
values in a stem, making the return values easier to deal with. In some
cases it is neccessary to pass these values back to ImageStudio after
reading or altering them. As ImageStudio commands can't accept stems
directly, these stems have to be converted back into strings.

   We suggest the following method, using the PALETTE_GET and
PALETTE_SET commands as examples of getting and setting an array of
values:

     /* Get the current palette */
     
     PALETTE_GET STEM OLDPALETTE.
     
     /* Convert the stem to a parameter list */
     
     NEWPALETTE = ''
     
     do l = 0 to (OLDPALETTE.PALETTE.COUNT - 1)
        NEWPALETTE = NEWPALETTE||' '||OLDPALETTE.PALETTE.l
        end
     
     /* Force the new palette back onto the image */
     
     PALETTE_SET PALETTE NEWPALETTE REMAP

ARexx tip 2
-----------

     "Shortening command names"

   Using the current ARexx command interpreter within ImageStudio, it
is possible to specify a shorter version of each ARexx command. For
example, `OP' could be used as a synonym for `OPEN' and `RG' is a
synonym for `RGB_TO_HSV'. The following should be noted however:

   * This behaviour may be removed in a future version of ImageStudio.
     Therefore we recommend that this feature only be used to reduce
     typing in the command shell (see Command_shell) and not be used in
     ARexx scripts.

   * If the shortened command name is ambiguous, the first matching com
     mand will be executed. For example, if the shortened command
     `REQUEST' is used, `REQUEST_DIR' will be executed.

Example scripts
===============

BalanceTest
-----------

Description
     This script allows the user to see the result of changing the
     brightness, contrast and gamma values over their full ranges.

     An image is loaded in if one is not present already. The image is
     then divided into 3 strips - the top, middle and bottom
     representing changes to the balance, contrast and gamma
     respectively. Depending on the number of divisions the user
     chooses, each of the 3 strips is divided further horizontally and
     each of the brightness, contrast and  gamma values are applied
     starting from -100 on the left to +100 on the right. An odd number
     of horizontal divisions are used to leave a central, vertical area
     of the image which remains unchanged.

Known bugs
     None.

BatchConvert
------------

Description
     This scripts allows the conversion of multiple images to be output
     as one image format.

     The script allows the following:

       1. Saving of the converted image into a different location as the
          source.

       2. Choose any of the available image formats to save, with
          controls over their subformat.

       3. Automatic file renaming.

       4. Automatic deleting of source images if different from the
          destination image.

Known bugs
     If the source and destination files are the same, but have
     different filenames (e.g. `T:Bud2.gif' and `Ram:T/Bud2.gif') the
     script will delete the source file (which will be the destination
     file). To avoid this, make sure both filenames are both specified
     in the same manner.

BatchProcess
------------

Description
     This scripts allows the processing of multiple images to be output
     as one image format. The script is based on `BatchConvert' (see
     BatchConvert).

     The commands to control the processing should be typed in to the
     appropriate requester as though they were ARexx commands to be
     executed in a script. For example:

          SCALE 640 480

     would scale each image to 640x480 pixels before saving out.
     Multiple commands can be separated with a semi-colon `;', for
     example:

          SCALE 800 600;COLOURS 256 DITHER FS

     would scale the image to 800x600 and then reduce to 256 colours
     with Floyd-Steinberg dithering before saving out. Commands are
     executed from left to right.

     The script allows the following:

       1. Saving of the processed image into a different location as the
          source.

       2. Choose any of the available image formats to save, with
          controls over their subformat.

       3. Automatic file renaming.

       4. Application of multiple commands to process the image before
          saving.

       5. Automatic deleting of source images if different from the
          destination image.

Known bugs
     If the source and destination files are the same, but have
     different filenames (e.g. `T:Bud2.gif' and `Ram:T/Bud2.gif') the
     script will delete the source file (which will be the destination
     file). To avoid this, make sure both filenames are both specified
     in the same manner.

BatchProcessNotify
------------------

Description
     This script starts a batch lot of processing to be performed when a
     given file is changed or created; the script is based on
     `BatchConvert' (see BatchProcess).

     This is useful if you wish to convert the output from a program
     that has generated multiple frames (e.g. a raytracer or landscape
     renderer) into a format that can be compiled into an animation
     (e.g.  ILBM24 to HAM6).

     The first thing the user must select is the filename of the final
     file in the sequence. When this file has been created, ImageStudio
     will start the processing of the images. This file may not of
     course have been created yet, so the user will have to type the
     name into the file requester.

     After the user has specified the output format (see BatchProcess),
     the script will wait for the specified file be created before
     proceeding with the processing on all the files in the chosen
     directory with the same basename as the selected final filename.

Known bugs
     If the source and destination files are the same, but have
     different filenames (e.g. `T:Bud2.gif' and `Ram:T/Bud2.gif') the
     script will delete the source file (which will be the destination
     file). To avoid this, make sure both filenames are both specified
     in the same manner.

Example
     The user wishes to convert the 24bit output files created by a
     raytracer into HAM6 format, ready for compiling into an animation.
     The animation is 200 frames and the files are numbered `pic.0001',
     `pic.0002' etc... and are located in the `Work:Render' direc tory.
     No extra processing is to be performed on the images.

     Upon running the BatchProcessNotify script, the user enters
     `Work:Render/pic.0200' as the final frame in the sequence and sets
     the output file format to be IFF-ILBM, HAM6.

     The script now waits for the final file to be created, and upon do
     ing so, matches all files in the `Work:Render' directory that start
     with the basename `pic.'. 200 files should be found. Each of these
     files are loaded and saved as HAM6, before the script ends.

ConvolveTest
------------

Description
     Applies a chosen set of convolution filters to an image.

     A number of convolution filters are chosen and the image is tiled
     depending on the number of filters chosen, each filter is applied
     to each of the tiles.

Known bugs
       1. The convolution filters chosen to apply *must* be taken from
          the directory currently shown in the `Convolves' floating
          palette.  This is because convolution filters with the
          CONVOLVE command are chosen by name, not filename (see
          ARexx_CONVOLVE).

       2. The tiling algorithm used isn't very smart, the number of
          tiles vertically is the same as the number horizontally. This
          can lead to almost half of the image being unaffected if the
          number of chosen filters is just above the nearest square
          number.

       3. The maximum number of filters to be applied to the image is
          100.

Crop512x512
-----------

Description
     Removes blank area from unregistered images.

     When a large image in loaded into the unregistered version of
     ImageStudio, the actual image is only contained in the top-left
     512x512 pixels of the buffer. This script crops away the blank
     buffer to leave a buffer of only 512x512 pixels in size.

Known bugs
     None.

Demo
----

Description
     Demonstrates some of the features of the ImageStudio ARexx inter
     face.

     Simply follow the prompts to see the features being explained.

Known bugs
     None.

RegionRecall
------------

Description
     Sets a previously remembered region.

     This script allows the region that was set with RegionStore (see
     RegionStore) to be recalled as the active region for the current
     image. The user is warned if there is already a currently selected
     region which will be lost if the remembered region is recalled.

Known bugs
     None.

RegionStore
-----------

Description
     Remembers a region for future recall.

     The region maybe recalled by using the RegionRecall (see
     RegionRecall) script.

Known bugs
     None.

ToIcon
------

Description
     Resizes and remaps the image to that suitable as an icon.

     The script allows the following:

       1. Choosing of an alternative palette other than the default 4
          colour Workbench palette.

       2. Copying of the image into the clipboard, ready to be pasted
          into IconEdit.

Known bugs
     None.

ARexx commands
==============

   More detailed information on each of the individual ARexx commands
can be found below.

BALANCE
-------

Command
     BALANCE

Parameters template
     BRIGHTNESS/N, CONTRAST/N, GAMMA/N, NORED/S, NOGREEN/S,
     NOBLUE/S

Return template
     None.

Description
     This command allows the user to change the colour balance of the im
     age.  The user may select specify one of the BRIGHTNESS, CONTRAST
     or GAMMA values to adjust - specifying more than one will only
     result in the first operation being acted upon.

     By default, the operation is applied to all the red, green and blue
     values of the image. The user may stop any of the RGB channels
     being affected by selecting any of the NORED, NOGREEN or NOBLUE
     switches.  Multiple switches may be used, but not all three
     together.

     See Show_balance, for a full description of altering the image's
     colour balance.

Parameters
    BRIGHTNESS
          This adjusts the brightness / darkness of the image. Valid
          values are between -100 (make everything black) to 100 (make
          everything twice as bright).

    CONTRAST
          This adjusts the relative difference between dark and light
          colours.  Valid values are -100 (everything to mid-grey) to
          100 (everything to extreme contrast).

    GAMMA
          This adjusts the gamma response of the image. Valid values
          are -100 to 100.

Returns
     Nothing.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following adjusts the gamma of the image by 10:

          BALANCE GAMMA 10

     The following darkens the green componant of the image by -20:

          BALANCE BRIGHTNESS -20 NORED NOBLUE

Known bugs
     None.

COLOURS
-------

Command
     COLOURS

Parameters template
     NUMCOLOURS/N, SIXTEENMILLION/S, COLOURCHOICE, DITHER

Return template
     None.

Description
     Allows the user to change the number of colours of the current im
     age. The image can be changed to either 2-256 colours or 16 million
     colours (24bit). Methods of colour choice and dithering are
     available when reducing the number of colours in the image.

     See Colours, for a full description of changing the number of
     colours in the image.

Parameters
    NUMCOLOURS/N
          The number of colours desired for the image. Valid values are
          2 to 256, the result will always be a colour-mapped image.

    SIXTEENMILLION/S
          In order to increase the number of possible colours in the
          image to the maximum possible (16 million), the user should
          specify this switch. The user may not specify this switch as
          well as the NUMCOL OURS option.

    COLOURCHOICE
          This is a string which determines which method of colour
          choice should be used to reduce the number of colours in an
          image. At the present time, HECKBERT is the only available
          option and will be used by default if no COLOURCHOICE is
          specified.

    DITHER
          This string determines which method of dithering should be
          used when reducing the number of colours in an image. Valid
          strings are: NONE, FLOYD-STEINBERG or FS, STUCKI, JARVIS,
          BURKES, SIERRA and STEVEN SON-ARCE. By default, no dithering
          is used.

Returns
     Nothing.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following reduces the image to 16 colours with Floyd-Steinberg
     dithering:

          COLOURS NUMCOLOURS 16 DITHER "FS"

     The following increases the image to 24bits, allowing 16 million
     possible colours:

          COLOURS SIXTEENMILLION

Known bugs
     None.

CONVOLVE
--------

Command
     CONVOLVE

Parameters template
     NAME/A

Return template
     None.

Description
     Applies the named convolution to the 24bit image. Convolution can
     only be applied to 16 million colour (24bit) images.

     See Show_convolves, for a full description of convolution filters.

Parameters
    NAME/A
          The name of the convolution filter as it appears in the "Show
          convolves" floating palette.

Returns
     Nothing.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following applies the "Blur high" convolution filter to the
     current image:

          CONVOLVE NAME '"Blur high"'

     The following increases the image to 24bits if necessary, then
     applies the "Edge detect" convolution filter:

          IMAGEINFO_GET STEM IMAGEINFO.
          
          if IMAGEINFO.DEPTH ~= 24 then do
             COLOURS SIXTEENMILLION
             end
          
          CONVOLVE NAME '"Edge detect"'

Known bugs
     None.

COPY
----

Command
     COPY

Parameters template
     None.

Return template
     None.

Description
     Copies the current image into the clipboard buffer.

     See Copy, for a full description of copying images to the clip
     board.

Parameters
     None.

Returns
     Nothing.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following copies the current image to the clipboard:

          COPY

Known bugs
     None.

CROP
----

Command
     CROP

Parameters template
     None.

Return template
     None.

Description
     Crops the image to the currently selected region. A region must be
     selected for this command to work.

     See Crop, for a full description of cropping images.

Parameters
     None.

Returns
     Nothing.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following crops the current image to the currently selected
     region:

          CROP

     The following crops the current image to the currently selected
     region only if a region exists:

          REGION_GET STEM REGIONINFO.
          
          if REGIONINFO.MINX ~= -1 then do
             CROP
             end

Known bugs
     None.

EFFECT
------

Command
     EFFECT

Parameters template
     NAME/A, ARGS

Return template
     None.

Description
     Applies the named effect to the image. Optional arguments that the
     effect may require can be passed via the ARGS parameter.

     See Effects, for a full description of the available effects.

Parameters
    NAME/A
          The name of the effect to apply, as it appears in the
          "Effects" floating palette.

    ARGS
          Any optional arguments that the desired effect may require.

Returns
     Nothing.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following applies the "Negative" effect to the image:

          EFFECT NAME "Negative"

     The following pixelizes the image to a size of 4 pixels:

          EFFECT NAME "Pixelize" ARGS '"PIXELSIZE 4"'

Known bugs
     None.

FILES_MATCH
-----------

Command
     FILES_MATCH

Parameters template
     PATHPART/A, PATTERN

Return template
     FILEPARTS/M

Description
     Returns a list of files in a directory matching an optional
     pattern.

Parameters
    PATHPART/A
          The path (directory) name from which the filenames should be
          taken.

    PATTERN
          Optional file matching pattern, to allow the inclusion of
          only spe cific filenames. By default, all the files in a
          directory are returned.

Returns
    FILEPARTS/M
          An array of strings containing the matching filenames in the
          given PATH.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following gets all the filenames from the "Pics" directory and
     returns them in the stem FILENAMES.:

          FILES_MATCH PATHPART "Pics" STEM FILENAMES.

     The following gets all the filenames in the current directory with
     a ".ilbm" or ".iff" filename extension:

          FILES_MATCH PATHPART '""' PATTERN "#?.(ilbm|iff)" STEM FILENAMES.

     The following gets all the filenames in the "S:" directory that
     start with an "S" and puts them in pop up requesters:

          FILES_MATCH PATHPART "S:" PATTERN "S#?" STEM FILENAMES.
          
          do l = 0 to (FILENAMES.FILEPARTS.COUNT - 1)
             REQUEST_MESSAGE BUTTONTEXT "More|Cancel" AUTOCANCEL,
                TEXT '"'FILENAMES.FILEPARTS.l'"'
             end

Known bugs
     None.

FILE_JOIN
---------

Command
     FILE_JOIN

Parameters template
     PATHPART/A, FILEPART/A

Return template
     FILE

Description
     Joins the path part of a filename to the file part of a filename,
     returning the full filename. Adds `/' and `:' where appropriate to
     create a full filename.

Parameters
    PATHPART/A
          The path (directory) part of the filename to be created.

    FILEPART/A
          The file part of the filename to be created.

Returns
    FILE
          The full filename created from the path and file parts.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following creates the filename "Pics/HappyFace_240x250.bmp"
     from the seperate path and fileparts - the result is put in a pop
     up requester:

          FILE_JOIN PATHPART "Pics" FILEPART "HappyFace_240x250.bmp"
          
          REQUEST_MESSAGE TEXT '"'RESULT'"'

     The following creates the filename "T:TempImage.jpg" from the
     seperate path and fileparts (note how the '/' seperater is not
     needed) - the result is put in a pop up requester:

          FILE_JOIN PATHPART "T:" FILEPART "TempImage.jpg"
          
          REQUEST_MESSAGE TEXT '"'RESULT'"'

Known bugs
     None.

FILE_RENAME
-----------

Command
     FILE_RENAME

Parameters template
     FILE/A, FROM/A, TO/A

Return template
     FILE

Description
     Replaces the last occurrance of a given string in a filename with
     another string. Useful for renaming filename extensions.

     Note: *This command doesn't actually rename the file*, it simply
     returns what the new filename should be.

     Hint: To rename *any* filename extension to a chosen extension,
     you can set "FROM ." and "TO .newextension". This removes any old
     extension and replaces it with the given new extension. This can be
     useful if you are converting a large number of different format
     files to one format (see BatchConvert).

Parameters
    FILE/A
          The original filename to be renamed.

    FROM/A
          The string to remove from the old filename.

    TO/A
          The string to replace the FROM string in the filename.

Returns
    FILE
          The renamed filename. If no FROM string was found in the
          original filename, the original filename is returned with the
          new TO string appended.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following renames the filename "Zebra_250x250.pcx" to
     "Zebra_250x250.ilbm", the final filename is placed in RESULT:

          FILE_RENAME FILE "Zebra_250x250.pcx" FROM ".pcx" TO ".ilbm"

     The following appends ".out" to the filename "pic.0001":

          FILE_RENAME FILE "pic.0001" FROM "XXX" TO ".out"

Known bugs
     None.

FILE_SPLIT
----------

Command
     FILE_SPLIT

Parameters template
     FILE/A

Return template
     PATHPART, FILEPART

Description
     Splits the given filename into seperate path and file parts.

Parameters
    FILE/A
          The full filename to be split.

Returns
    PATHPART
          The path (directory) part of the filename.

    FILEPART
          The file part of the filename.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following seperates the filename "Pics/HappyFace_240x250.bmp"
     into seperate path and fileparts - the result is put in a pop up
     requester:

          FILE_SPLIT FILE "Pics/HappyFace_240x250.bmp" STEM FILENAME.
          
          REQUEST_MESSAGE TEXT '"Path:'FILENAME.PATHPART,
             'File:'FILENAME.FILEPART'"'

     The following seperates the filename "T:TempImage.jpg" into
     seperate path and fileparts - the result is put into the default
     settings of a file requester:

          FILE_SPLIT FILE "T:TempImage.jpg" STEM FILENAME.
          
          REQUEST_FILE PATHPART '"'FILENAME.PATHPART'"',
             FILE '"'FILENAME.PATHPART'"'

Known bugs
     None.

FULL_IMAGE
----------

Command
     FULL_IMAGE

Parameters template
     None.

Return template
     None.

Description
     Displays the full image in the preview window.

     See Full_image, for a full description of this command.

Parameters
     None.

Returns
     Nothing.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following displays the full image in the preview window:

          FULL_IMAGE

Known bugs
     None.

GUI_BLOCK
---------

Command
     GUI_BLOCK

Parameters template
     None.

Return template
     None.

Description
     Blocks all input to any open ImageStudio windows. This command is
     used to stop the user from entering any more input into the
     ImageStudio windows whilst an ARexx script is running. If the
     script has been started from ImageStudio (i.e. from the "Scripts"
     floating palette), all the GUI blocking / unblocking is handled
     automatically - the GUI is blocked when the script starts and
     unblocked when it finishes.

     If the script is started externally (i.e. from another ARexx
     program or from the CLI using `rx'), the user should block the GUI
     if they think the ARexx is going to spend a long time processing
     some in formation. The GUI is still automatically blocked when a
     requester is opened however.

Parameters
     None.

Returns
     Nothing.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following blocks all input to the ImageStudio GUI:

          GUI_BLOCK

Known bugs
     None.

GUI_UNBLOCK
-----------

Command
     GUI_UNBLOCK

Parameters template
     None.

Return template
     None.

Description
     Unblocks all input to any open ImageStudio windows after a
     GUI_BLOCK command. If the script has been started from ImageStudio
     (i.e. from the "Scripts" floating palette), all the GUI blocking /
     unblocking is handled automatically - the GUI is blocked when the
     script starts and unblocked when it finishes.

     If the scripts is started externally (i.e. from another ARexx pro
     gram or from the CLI using `rx'), the user should unblock the GUI
     after a GUI_BLOCK command has been issued. The GUI is still
     automatically unblocked after a requester has been satisfied
     however.

Parameters
     None.

Returns
     Nothing.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following unblocks all input to the ImageStudio GUI:

          GUI_UNBLOCK

Known bugs
     None.

HELP
----

Command
     HELP

Parameters template
     COMMAND

Return template
     COMMANDDESC, COMMANDLIST/M

Description
     Returns help on a given ARexx command. This command is meant mainly
     for use with the command shell (see Command_shell), as it is of
     very little use within a script. Both the command's parameter and
     return templates are returned.

Parameters
    COMMAND
          The ARexx command to obtain help on.

Returns
    COMMANDDESC
          The parameter template.

    COMMANDLIST/M
          The result template.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following gets help on the ARexx OPEN command:

          HELP OPEN

     The following gets help on the HELP command:

          HELP HELP

Known bugs
     None.

HSV_TO_RGB
----------

Command
     HSV_TO_RGB

Parameters template
     H/N/A, S/N/A, V/N/A

Return template
     R/N, G/N, B/N

Description
     Converts a HSV colour value into a RGB colour value.

     See Colour representations, for more details on RGB and HSV colour
     representations.

Parameters
    H/N/A
          The hue value of the colour to convert. Valid values are 0 to
          360.

    S/N/A
          The saturation value of the colour to convert. Valid values
          are 0 to 100.

    V/N/A
          The value of the colour to convert. Valid values are 0 to 100.

Returns
    R/N
          The red componant value of the colour.

    G/N
          The green componant value of the colour.

    B/N
          The blue componant value of the colour.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following converts yellow from HSV to RGB representation,
     putting the result in RESULT:

          HSV_TO_RGB 60 100 100

     The following converts mid-grey from HSV to RGB representation,
     putting the result in the stem COLOUR.:

          HSV_TO_RGB 0 0 49 STEM COLOUR.

Known bugs
     None.

IMAGEINFO_GET
-------------

Command
     IMAGEINFO_GET

Parameters template
     None.

Return template
     WIDTH/N, HEIGHT/N, DEPTH/N, FILE, MODEID/N, CHANGED/N

Description
     Returns information about the current image. If no image is
     currently loaded, -1 is returned in all the numeric fields.

Parameters
     None.

Returns
    WIDTH/N
          The width of the image in pixels, -1 if no image is loaded.

    HEIGHT/N
          The height of the image in pixels, -1 if no image is loaded.

    DEPTH/N
          The colour depth of the image, -1 if no image is loaded.
          Returns 1 to 8 for 2 to 256 colour images, 24 for 16 million
          colour images.

    FILE
          The full filename of the current image.

    MODEID/N
          The current screenmode of the image. This number is not meant
          to be interpreted directly, but can be used to be passed to
          the screenmode requester (see ARexx_REQUEST_SCREENMODE).
          When the image loaded is a non IFF-ILBM image, this
          screenmode value is "guessed" at by ImageStudio to be the
          closest Amiga equivalent based on the image's dimensions.

    CHANGED/N
          A numeric value, taking the value 1 to represent a change in
          the current project or 0 for no change.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following gets the current image's information and returns it
     in the stem IMAGE.:

          IMAGEINFO_GET STEM IMAGE.

     The following gets the current image's info and opens a screenmode
     requester with the current screenmode if an image is loaded:

          IMAGEINFO_GET STEM IMAGE.
          
          if IMAGE.WIDTH ~= -1 then do
             REQUEST_SCREENMODE MODEID IMAGE.MODEID
             end

Known bugs
     None.

IMAGEINFO_SET
-------------

Command
     IMAGEINFO_SET

Parameters template
     MODEID/N

Return template
     None.

Description
     Sets information about the current image. Currently, only the
     image's screenmode can be set.

Parameters
    MODEID/N
          The current screenmode ID of the image.

Returns
     Nothing.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following sets the current image's screenmode to LoRes.

          IMAGEINFO_SET MODEID 0

     The following opens up a screenmode requester and allows the user
     to choose the screenmode of the current image:

          REQUEST_SCREENMODE STEM SCREENMODEINFO.
          
          IMAGEINFO_SET MODEID SCREENMODEINFO.MODEID

Known bugs
     None.

NOTIFY_DIR
----------

Command
     NOTIFY_DIR

Parameters template
     PATHPART/A

Return template
     FILEPART, ACTION

Description
     Monitors the specified directory and returns when a file is either
     updated or added to the directory. The affected filename is
     returned as well as the action that had been performed (either
     updated or added).

     Whilst the command is waiting for any change in the specified
     directory, the fuelgauge will flash and the user may press the
     `Abort' button on the infobar to cancel the operation.

Parameters
    PATHPART
          The path (directory) to be monitored.

Returns
    FILEPART
          The filename of the file that has been changed; the filename
          returned is without the full pathname.  See ARexx_FILE_JOIN,
          for information on how to add the path part of the filename
          to create a full filename.

    ACTION
          A string containing a descripion of the action performed on
          FILE, either "ADDED" if the file is new to the directory or
          "UPDATED" if the file has been updated since the notify
          started.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following monitors the ram disk for any change, returning any
     change in the NOTIFYINFO. stem:

          NOTIFY_DIR PATHPART "ram:" STEM NOTIFYINFO.

     The following monitors the "Pics" directory for any change and pops
     up a requester informing the user of what has happened:

          NOTIFY_DIR PATHPART "Pics" STEM NOTIFYINFO.
          
          REQUEST_MESSAGE TEXT '"'NOTIFYINFO.FILEPART||' has been '||,
             NOTIFYINFO.ACTION'"'

Known bugs
       1. AmigaDos won't notify us if a file is deleted from the
          directory.

       2. If many files are added / updated in the directory quickly,
          NOTIFY_DIR may not necessarily return the first changed file.
          The same is true if the a file is created with an icon,
          NOTIFY_DIR may return the name of the ".info" file.

       3. File notification is not implemented on all filesystems
          (notably some network filesystems). No problems occur with
          either the stand ard OFS or FFS filesystems.

NOTIFY_FILE
-----------

Command
     NOTIFY_FILE

Parameters template
     FILE/A

Return template
     None.

Description
     Waits for a change in the specified file. The function will return
     if either a new file by the given name is created, or if the file
     is updated. Unlike NOTIFY_DIR (see ARexx_NOTIFY_DIR), NOTIFY_FILE
     also returns if the specified file is deleted.

     Whilst the command is waiting for any change in the specified file,
     the fuelgauge will flash and the user may press the `Abort' button
     on the infobar to cancel the operation.

     This function can be used to trigger ImageStudio to perform a given
     set of operations when the specified file has been created. For
     example, if 50 frames of an animation were being rendered by a
     ray-tracer then ImageStudio could be told to wait for the last
     frame to be created an then convert them all to HAM format.

Parameters
    FILE
          The file to be monitored.

Returns
     Nothing.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following monitors the file "Pics/CheetahFace250x200.ilbm" for
     any change:

          NOTIFY_FILE "Pics/CheetahFace250x200.ilbm"

     The following waits for the 50th frame in the sequence "Render." to
     be created in the "Work:RayTrace":

          NOTIFY_FILE "Work:RayTrace/Render.050"

Known bugs
     File notification is not implemented on all filesystems (notably
     some network filesystems). No problems occur with either the stand
     ard OFS or FFS filesystems.

OPEN
----

Command
     OPEN

Parameters template
     FILE/A, FORMAT, ARGS, FORCE/S

Return template
     None.

Description
     Loads the specified file into ImageStudio. Most file formats are
     automatically recognised by the program, but it is possible to
     specify extra information with the FORMAT and ARGS parameters.

Parameters
    FILE
          The filename of the file to be loaded.

    FORMAT
          Most file formats are automatically recognised by
          ImageStudio, but some raw formats need to be specified. If
          the file to be loaded is known to be a raw format, this
          parameter should be used to specify the file format. See File
          formats, for more information on raw file formats.

    ARGS
          Some file formats require extra information to be specified a
          load time, this parameter should be used to specify more
          information.  See File formats, for more information on extra
          arguments allowed by the loaders.

    FORCE/S
          By default the user will be warned if they are about to
          overwrite the current project. By specifying FORCE, the user
          is not warned.

Returns
     Nothing.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following opens the file "Pics/CheetahFace250x200.ilbm":

          OPEN "Pics/CheetahFace250x200.ilbm"

Known bugs
     None.

PALETTE_GET
-----------

Command
     PALETTE_GET

Parameters template
     None.

Return template
     PALETTE/N/M

Description
     Gets the palette information from the current image.

Parameters
     None.

Returns
    PALETTE/N/M
          An array of the colours in the palette, ordered red, green
          then blue. Check PALETTE.COUNT for the number of entries in
          the array, divide this value by 3 to get the number of
          colours in the palette.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following gets the palette from the current image and returns
     it in the PALETTE. stem:

          PALETTE_GET STEM PALETTE.

     The following gets the palette from the current image (if possible)
     and puts the first colour value in a requester:

          IMAGEINFO_GET STEM IMAGEINFO.
          
          if IMAGEINFO.DEPTH ~= 24 then do
             PALETTE_GET STEM PALETTE.
          
             numcolours = PALETTE.PALETTE.COUNT / 3
          
             REQUEST_MESSAGE TEXT '"'numcolours||' colours, colour 0 = '||,
                PALETTE.PALETTE.0||','||PALETTE.PALETTE.1||','||,
                PALETTE.PALETTE.2||'"'
             end
          else do
             REQUEST_MESSAGE TEXT '"Image has no palette."'
             end

Known bugs
     None.

PALETTE_LOAD
------------

Command
     PALETTE_LOAD

Parameters template
     FILE/A, DITHER

Return template
     None.

Description
     Loads and remaps a palette onto the current image. Dithering is
     also allowed to get a better approximation with the new palette.

Parameters
    FILE/A
          The filename of the palette file to load.

    DITHER
          A string containing the name of the dither to apply when
          applying the new palette. The same dither names as the
          COLOURS command are used (see ARexx_COLOURS). By default, no
          dithering is applied.

Returns
     Nothing.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following loads a general 256 colour palette onto the image:

          PALETTE_LOAD FILE "Palettes/General256.palette"

     The following loads a general 16 colour palette with
     Floyd-Steinberg dithering onto the image:

          PALETTE_LOAD FILE "Palettes/General16.palette" DITHER "FS"

Known bugs
     None.

PALETTE_SAVE
------------

Command
     PALETTE_SAVE

Parameters template
     FILE/A

Return template
     None.

Description
     Saves the palette of the current image out to disk. The image must
     be colour-mapped for this operation to work.

Parameters
    FILE/A
          The filename of the palette file to save.

Returns
     Nothing.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following saves the current image's palette to the ram disk:

          PALETTE_SAVE FILE "ram:Image.palette"

     The following only saves out the palette of the current image if
     the current image is colour-mapped:

          IMAGEINFO_GET STEM IMAGEINFO.
          
          if IMAGEINFO.DEPTH ~= 24 then do
             PALETTE_SAVE FILE "Image.palette"
             end

Known bugs
     None.

PALETTE_SET
-----------

Command
     PALETTE_SET

Parameters template
     PALETTE/N/M/A, REMAP/S

Return template
     None.

Description
     Forces the array of numbers as the current palette for the image.
     The depth of the resultant image is taken from the number of
     entries in the array. This is useful for adding colours into the
     current image's palette.

Parameters
    PALETTE/N/M/A
          The array of numbers that will build the palette. The total
          number of elements in the array determines the number of
          palette entries and the depth of the resultant images. The
          entries in the array are arranged colour0_red, colour0_green,
          colour0_blue, colour1_red etc... The values of the red, green
          and blue values are 0 to 255.

    REMAP
          By default, the given palette is forced up on the current
          image. By specifying the REMAP switch, the image can be
          remapped to best fit the new palette.

Returns
     Nothing.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following sets the current image to black and white, remapping
     as best as possible:

          PALETTE_SET PALETTE "0 0 0 255 255 255" REMAP

     The following reduces the number of colours in the image to 29,
     then sets the top 3 colours to be red, white and blue. This is an
     example of how the returned stem value can be turned into a list of
     parameters for another command:

          /* Reduce the number of colours */
          
          COLOURS NUMCOLOURS 29 DITHER "FS"
          
          /* Get the current palette */
          
          PALETTE_GET STEM OLDPALETTE.
          
          /* Set the top 3 colours to red, white and blue */
          
          OLDPALETTE.PALETTE.87 = 255  /* Red */
          OLDPALETTE.PALETTE.88 = 0
          OLDPALETTE.PALETTE.89 = 0
          
          OLDPALETTE.PALETTE.90 = 255  /* White */
          OLDPALETTE.PALETTE.91 = 255
          OLDPALETTE.PALETTE.92 = 255
          
          OLDPALETTE.PALETTE.93 = 0    /* Blue */
          OLDPALETTE.PALETTE.94 = 0
          OLDPALETTE.PALETTE.95 = 255
          
          /* Convert the stem to a parameter list */
          
          NEWPALETTE = ''
          
          do l = 0 to (OLDPALETTE.PALETTE.COUNT - 1)
             NEWPALETTE = NEWPALETTE||' '||OLDPALETTE.PALETTE.l
             end
          
          /* Force the new palette onto the image */
          
          PALETTE_SET PALETTE NEWPALETTE REMAP

Known bugs
     None.

PALETTE_SORT
------------

Command
     PALETTE_SORT

Parameters template
     FROM/N, TO/N, LIGHTTODARK/S

Return template
     None.

Description
     Sorts the colours in the palette into ascending / descending order
     of brightness. The whole palette can be sorted or a selected range.

     The colours in the palette are numbered from zero, so a 32 colour
     image would have palette entries 0 to 31 inclusive.

     The image in automatically remapped to the new palette after the
     operation.

Parameters
    FROM/N
          The first colour in the palette to sort from. By default this
          is zero.

    TO/N
          The last colour in the palette to sort to. By default this is
          the last colour in the image's palette.

    LIGHTTODARK/S
          By default the palette is sorted from dark to light. This
          option allows the palette to be sorted light to dark.

Returns
     Nothing.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following sorts the colours in the image's palette dark through
     to light:

          PALETTE_SORT

     The following sorts the lower 32 colours in a 64 colour image from
     light to dark:

          PALETTE_SORT FROM 0 TO 31 LIGHTTODARK

Known bugs
     None.

PASTE
-----

Command
     PASTE

Parameters template
     FORCE/S

Return template
     None.

Description
     Pastes the image in the clipboard into the program.

Parameters
    FORCE/S
          By default the user is warned if the the current project is
          unsaved and they are about to overwrite it. This parameter
          will not warn the user and overwrite the project regardless.

Returns
     Nothing.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following pastes the image in the clipboard, warning the user
     if the current project isn't saved:

          PASTE

     The following pastes the image in the clipboard with no warning to
     the user if the current project isn't saved:

          PASTE FORCE

Known bugs
     With v2.0.x, if the user presses `Abort' when the file is being
     pasted, an error message is not returned and so the ARexx script as
     sumes the file pasted OK. This will be fixed when the loaders /
     savers become external modules.

PREF_GET
--------

Command
     PREF_GET

Parameters template
     NAME/A

Return template
     VALUE

Description
     Allows the user to read any of the preferences values currently in
     use by the program.

     See Prefs, for a full description of the available preference
     values.

Parameters
    NAME/A
          The name of the preference whose value should be returned. The
          tooltype name is given here, so to read the virtual memory
          pagesize for example, NAME would be PAGESIZE.

          If the preference name is not found, an error is returned.

Returns
    VALUE
          The value of the preference. If the preference is a string,
          VALUE is the string value, if the preference is numeric,
          VALUE is the number value and if the preference is boolean,
          VALUE is either the value 1 for a positive setting ("YES" or
          "ON") or 0 for a negative setting ("NO" or "OFF").

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following finds the current virtual memory pagesize:

          PREF_GET NAME "PAGESIZE"
          
          say 'The pagesize is 'RESULT * 1024' bytes'

     The following detects whether the preview dithering is being used:

          PREF_GET NAME "PREVIEWDITHER"
          
          if RESULT == 1 then do
             say 'Preview dithering is ON'
             end
          else do
             say 'Preview dithering is OFF'
             end

Known bugs
     None.

PREF_SET
--------

Command
     PREF_SET

Parameters template
     NAME/A, VALUE/A

Return template
     None.

Description
     Allows the user to set any of the preferences values currently in
     use by the program. Changing some preference variables may have no
     effect until the next time the program is run.

     See Prefs, for a full description of the available preference
     values.

Parameters
    NAME/A
          The name of the preference whose value should be changed. The
          tooltype name is given here, so to set the virtual memory
          pagesize for example, NAME would be PAGESIZE.

          If the preference name is not found, an error is returned.

    VALUE/A
          The desired value of the preference. If the preference is a
          string, VALUE should be a string value, if the preference is
          numeric, VALUE should be a number value. If the preference is
          boolean, VALUE can be either the strings "YES" or "ON" to set
          a positive value, "NO" or "OFF" to set a negative value.

Returns
     Nothing.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following turns the preview redraw off:

          PREF_SET NAME "PREVIEWREDRAW" VALUE "OFF"

     The following sets the virtal memory pagesize to be 200K:

          PREF_SET NAME "PAGESIZE" VALUE 200

Known bugs
     None.

QUIT
----

Command
     QUIT

Parameters template
     FORCE/S

Return template
     None.

Description
     Quits the program. By using the FORCE option, the program can be
     forced to quit without warning the user.

     The program cannot be quit by issuing the QUIT command from the
     command shell.

Parameters
    FORCE/S
          By default the user is warned if the program is about to quit
          and the current project remains unsaved. Specifying this
          parameter will force the program to quit regardless.

Returns
     Absolutely nothing.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following quits the program, warning the user if the current
     project is unsaved:

          QUIT

     The following quits the program regardless of the status of the
     current project:

          QUIT FORCE

Known bugs
     None.

REDO
----

Command
     REDO

Parameters template
     None.

Return template
     None.

Description
     Re-does the last UNDO operation (see ARexx_UNDO).

Parameters
     None.

Returns
     Nothing.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following re-does the last UNDO operation:

          REDO

Known bugs
     None.

REDRAW
------

Command
     REDRAW

Parameters template
     None.

Return template
     None.

Description
     Forces a redraw of the image in the preview window. This is not
     normally needed, as all the redrawing is done automatically
     however it could be used if the PREVIEWREDRAW preference is
     changed within a script.

Parameters
     None.

Returns
     Nothing.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following forces a redraw of the image in the preview window:

          REDRAW

     The following forces a redraw of the image after the preview redraw
     has been turned off with the PREVIEWREDRAW preference:

          PREF_SET NAME "PREVIEWREDRAW" VALUE "OFF"
          
          REDRAW

Known bugs
     None.

REGION_CLEAR
------------

Command
     REGION_CLEAR

Parameters template
     None.

Return template
     None.

Description
     Removes the currently selected region, if one exists. No error is
     given if a region doesn't exist.

Parameters
     None.

Returns
     Nothing.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following clears the currently selected region:

          REGION_CLEAR

     The following checks that a region is selected before trying to
     clear it:

          REGION_GET STEM REGIONINFO.
          
          if REGIONINFO.MINX ~= -1 then do
             REGION_CLEAR
             end

Known bugs
     None.

REGION_GET
----------

Command
     REGION_GET

Parameters template
     None.

Return template
     MINX/N, MINY/N, MAXX/N, MAXY/N, WIDTH/N, HEIGHT/N

Description
     Gets the current region dimensions from the image. If no region is
     selected, -1 is returned in all the fields.

     The values returned are the values of all the pixels inside the
     selected region. For example, if the top left pixel only of the
     image was selected the following values would be returned:

          MINX = 0
          MINY = 0
          MAXX = 0
          MAXY = 0
          WIDTH = 1
          HEIGHT = 1

Parameters
     None.

Returns
    MINX/N
          The left-most pixel included in the selected region, -1 if no
          region is selected.

    MINY/N
          The top-most pixel included in the selected region, -1 if no
          region is selected.

    MAXX/N
          The right-most pixel included in the selected region, -1 if no
          region is selected.

    MAXY/N
          The bottom-most pixel included in the selected region, -1 if
          no region is selected.

    WIDTH/N
          The width of the selected region, -1 if no region is selected.

    HEIGHT/N
          The height of the selected region, -1 if no region is
          selected.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following gets the currently selected region and returns the
     value in the REGIONINFO. stem:

          REGION_GET STEM REGIONINFO.

     The following checks that a region is selected, popping up an
     message requester:

          REGION_GET STEM REGIONINFO.
          
          if REGIONINFO.MINX ~= -1 then do
             REQUEST_MESSAGE TEXT '"Width,Height = '||REGIONINFO.WIDTH||,
                ','||REGIONINFO.HEIGHT||'"'
             end
          else do
             REQUEST_MESSAGE TEXT '"No region selected"'
             end

Known bugs
     None.

REGION_SET
----------

Command
     REGION_SET

Parameters template
     None.

Return template
     XSTART/N, YSTART/N, TO/S, XEND/N, YEND/N

Description
     Sets the selected region of the image. The region can either be
     specifed by the co-ordinates of its corners or by its width, height
     and position.

Parameters
    XSTART/N
          The left-most co-ordinate included in the region.

    YSTART/N
          The top-most co-ordinate included in the region.

    TO/S
          By default the region is specified by the co-ordinates of its
          top-left corners and its width and height. By using the TO
          parameter, the region can be specified with the lower-bottom
          co-ordinate of the region.

    XEND/N
          The width of the region. If the TO parameter is used, this
          value is used to specify the right-most pixel included by the
          region.

    YEND/n
          The height of the region. If the TO parameter is used, this
          value is used to specify the bottom-most pixel included by
          the region.

Returns
     Nothing.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following sets the selected region to have it's top-left corner
     at (10,20) with a width of 30 and height of 40:

          REGION_SET 10 20 30 40

     The following sets the selected region to have it's top-left corner
     at (50,60) and its bottom-right corner to include (70,80):

          REGION_SET 50 60 TO 70 80

Known bugs
     None.

REQUEST_DIR
-----------

Command
     REQUEST_DIR

Parameters template
     PATHPART, TITLE

Return template
     PATHPART

Description
     Opens a directory requester, allowing the user to choose a
     directory name.

     The other ImageStudio windows are automatically blocked when the
     requester is opened and unblocked when the requester is closed.

     In common with all ImageStudio requesters, if the user presses
     `Cancel', an error message is returned. For the script to trap this
     error, global error checking must be turned off. See Error
     checking, for more information.

Parameters
    PATHPART
          The default path name to put in the requester.

    TITLE
          The text for the title bar of the requester.

Returns
    PATHPART
          The selected path from the requester.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason or the user
     cancelled requester, rc2 will contain a string describing the
     problem.

Example
     The following puts up a directory requester, with the results being
     put in the DIRINFO. stem:

          REQUEST_DIR STEM DIRINFO.

     The following puts up a directory requester with a default
     directory of "T:", the result being printed in a message requester:

          REQUEST_DIR PATHPART "T:" STEM DIRINFO.
          
          REQUEST_MESSAGE TEXT '"You chose '||DIRINFO.PATHPART||'"'

Known bugs
     None.

REQUEST_FILE
------------

Command
     REQUEST_FILE

Parameters template
     PATHPART, FILEPART, PATTERN, TITLE

Return template
     FILE

Description
     Opens a file requester, allowing the user to choose a filename.

     The other ImageStudio windows are automatically blocked when the
     requester is opened and unblocked when the requester is closed.

     In common with all ImageStudio requesters, if the user presses
     `Cancel', an error message is returned. For the script to trap this
     error, global error checking must be turned off. See Error
     checking, for more information.

Parameters
    PATHPART
          The default path name to put in the requester.

    FILEPART
          The default filename to put in the requester.

    PATTERN
          An AmigaDos pattern matching pattern, will only show files in
          the requester which match the given pattern. By default, all
          files are shown.

    TITLE
          The text for the title bar of the requester.

Returns
    FILE
          The selected filename from the requester, the filename
          consists of both the FILEPART and PATHPART parts.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason or the user
     cancelled requester, rc2 will contain a string describing the
     problem.

Example
     The following puts up a file requester, with the results being put
     in the FILEINFO. stem:

          REQUEST_FILE STEM FILEINFO.

     The following puts up a file requester with the result being
     printed in a message requester. The default file is
     "Pics/HappyFace240x250.bmp":

          REQUEST_FILE PATHPART "Pics" FILEPART "HappyFace240x250.bmp",
             STEM FILEINFO.
          
          REQUEST_MESSAGE TEXT '"You chose '||FILEINFO.FILE||'"'

     The following will only show files with a ".ilbm" file extension:

          REQUEST_FILE PATTERN "#?.ilbm"

Known bugs
     None.

REQUEST_LIST
------------

Command
     REQUEST_LIST

Parameters template
     STRINGS/M/A, TITLE

Return template
     NUMBER/N, STRING

Description
     Opens a requester containing a list of options for the user to
     choose.

     The other ImageStudio windows are automatically blocked when the
     requester is opened and unblocked when the requester is closed.

     In common with all ImageStudio requesters, if the user presses
     `Cancel', an error message is returned. For the script to trap this
     error, global error checking must be turned off. See Error
     checking, for more information.

Parameters
    STRINGS/M/A
          The a list of string options for the user to choose.

    TITLE
          The text for the title bar of the requester.

Returns
    NUMBER/N
          The number in the list of the selected string. The strings
          are num bered from zero, so selecting the first choice in the
          list would set NUMBER to 0.

    STRING
          The selected string.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, or the user can
     celled requester, or no choice was made. rc2 will contain a string
     describing the problem.

Example
     The following puts up a list requester, with the results being put
     in the LISTINFO. stem:

          REQUEST_LIST STRINGS "IFF-ILBM" "PCX" "BMP" STEM LISTINFO.

     The following puts up a list requester, the result being printed in
     a message requester:

          REQUEST_LIST STRINGS "First" "Second" "Third" STEM LISTINFO.
          
          REQUEST_MESSAGE TEXT '"You chose '||LISTINFO.STRING||','||,
             ' option '||LISTINFO.NUMBER'"'

Known bugs
     None.

REQUEST_MESSAGE
---------------

Command
     REQUEST_MESSAGE

Parameters template
     TEXT/A, BUTTONTEXT, AUTOCANCEL/S, TITLE

Return template
     NUMBER/N

Description
     Opens a general purpose message requester. Simple messages can be
     presented to the user for them to "OK" them. OK / Cancel requesters
     can be built with this requester, as well a complex multiple choice
     requesters.

     When designing requesters, it is worth remembering the following
     rules:

       1. The "Negative" response should be placed on the far right-hand
          button. For example, the `Cancel' button should be placed
          here.

       2. The "Positive" response should be placed on the far left-hand
          but ton. For example, the `OK' button should be placed here.

       3. Try to word your requesters to keep the positive and negative
          text as "OK" and "Cancel". Using options like "Go to it" and
          "Stop right here" doesn't make for a very intuitive interface.

       4. Keep the request text short. The user shouldn't have to read a
          screen full of text to find out what to do next.

       5. You should *NEVER* swap the "OK" and "Cancel" buttons around.

       6. The last point is *VERY* important.

     The other ImageStudio windows are automatically blocked when the
     requester is opened and unblocked when the requester is closed.

     If the AUTOCANCEL option is used and the user presses `Cancel', an
     error message is returned. For the script to trap this error,
     global error checking must be turned off. See Error checking, for
     more information.

Parameters
    TEXT/A
          The text to put into the requester. The text may contain
          multiple lines by including the `\n' characters in the string
          (see examples below).

    BUTTONTEXT
          The text for the buttons of the requester. The different
          buttons are seperated with a `|' character (i.e. BUTTONTEXT
          "OK|Cancel"). By default, only an "OK" button is placed in
          the requester.

    AUTOCANCEL/S
          By default REQUEST_MESSAGE simply returns the number of the
          button that the user selected. If the requester is of the OK
          / Cancel variety, specifying the AUTOCANCEL switch allows the
          requester to stop the script should the user press `Cancel'.

    TITLE
          The text for the title bar of the requester.

Returns
    NUMBER
          The number of the selected button. If the requester has one
          button, NUMBER is set to 0. For more that one button, the
          right-most button sets NUMBER to 0, with the buttons being
          numbered from 1 upwards working left to right. For example,
          with a BUTTONTEXT of "OK|Save first|Cancel", "OK" would
          return 1, "Save first" would return 2 and "Cancel" would
          return 0.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem. rc will also be set to 10 if the
     AUTOCANCEL option is used and the user selects `Cancel'.

Example
     The following puts up a message requester:

          REQUEST_MESSAGE TEXT '"Operation finished"'

     The following puts up a OK / Cancel requester, stopping the script
     if the user selects `Cancel':

          REQUEST_MESSAGE TEXT '"Continue ?"' BUTTONTEXT "OK|Cancel",
             AUTOCANCEL

     The following shows a multiple choice requester, followed by a
     requester showing which option was chosen:

          REQUEST_MESSAGE TEXT '"Choose an option..."',
             BUTTONTEXT "First|Second|Third"
          
          REQUEST_MESSAGE TEXT '"You chose option '||RESULT||'"'

     The following shows a message requester with multiple lines of text
     using the `\n' characters:

          REQUEST_MESSAGE TEXT '"Top line\nMiddle line\nBottom line"'

Known bugs
     None.

REQUEST_MULTIFILE
-----------------

Command
     REQUEST_MULTIFILE

Parameters template
     PATHPART, FILEPART, PATTERN, TITLE

Return template
     FILES/M

Description
     Opens a file requester, allowing the user to choose multiple filena
     mes.

     The other ImageStudio windows are automatically blocked when the
     requester is opened and unblocked when the requester is closed.

     In common with all ImageStudio requesters, if the user presses
     `Cancel', an error message is returned. For the script to trap this
     error, global error checking must be turned off. See Error
     checking, for more information.

Parameters
    PATHPART
          The default path name to put in the requester.

    FILEPART
          The default filename to put in the requester.

    PATTERN
          An AmigaDos pattern matching pattern, will only show files in
          the requester which match the given pattern. By default, all
          files are shown.

    TITLE
          The text for the title bar of the requester.

Returns
    FILES/M
          The selected filenames from the requester, the filenames
          consists of both the FILEPART and PATHPART parts.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason or the user
     cancelled requester, rc2 will contain a string describing the
     problem. rc will also be set to 10 if no files are chosen.

Example
     The following puts up a multifile requester, with the results being
     put in the MULTIFILEINFO. stem:

          REQUEST_MULTIFILE STEM MULTIFILEINFO.

     The following puts up a multifile requester, with a default path of
     "Pics" and loops through all the selected files by putting them in
     message requesters:

          REQUEST_MULTIFILE PATHPART "Pics" STEM MULTIFILENFO.
          
          do l = 0 to (MULTIFILENFO.FILES.COUNT - 1)
             REQUEST_MESSAGE TEXT '"'MULTIFILENFO.FILES.l'"',
                BUTTONTEXT '"More...|Cancel"' AUTOCANCEL
             end

Known bugs
     If no file is chosen, the command returns a "user cancelled" error.
     This is normal.

REQUEST_MULTIVALUE
------------------

Command
     REQUEST_MULTIVALUE

Parameters template
     STRINGS/M, TITLE

Return template
     STRINGS/M

Description
     Opens a multivalue requester, allowing the user to change any of
     the listed values.

     The other ImageStudio windows are automatically blocked when the
     requester is opened and unblocked when the requester is closed.

     In common with all ImageStudio requesters, if the user presses
     `Cancel', an error message is returned. For the script to trap this
     error, global error checking must be turned off. See Error
     checking, for more information.

Parameters
    STRINGS/M
          A list of strings with the values to display in the
          requester. The strings are grouped in pairs, the first string
          of the pair being the text for the requester, the second
          being the default value for that string.

          For example, the following would place width and height
          values in the requester, with default values of 640 and 480
          respectively:

               STRINGS "Width" "640" "Height" "480"

          If there isn't an even number of strings, an error is
          returned.

    TITLE
          The text for the title bar of the requester.

Returns
    STRINGS/M
          A list of strings with the values to display in the
          requester. The strings are grouped in pairs, the first string
          of the pair being the text for the requester, the second
          being the returned value for that string.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason or the user
     cancelled requester, rc2 will contain a string describing the
     problem. rc will also be set to 10 if no files are chosen.

Example
     The following puts up a multivalue requester, allowing the user to
     change the width, height and depth of an image. The result is put
     in the MULTIVALUEINFO. stem:

          REQUEST_MULTIVALUE "Width" "640" "Height" "480",
             STEM MULTIVALUEINFO.

     The following puts up a multivalue requester, allowing the user to
     change the name and depth of an image. The result is put displayed
     in a message requester and the values recycled until the user can
     cels the requesters:

          INSTRINGS = 'Name ImageName.bmp Depth 4'
          
          do forever
             REQUEST_MULTIVALUE STRINGS INSTRINGS STEM MULTIVALUEINFO.
          
             REQUEST_MESSAGE TEXT BUTTONTEXT "OK|Cancel" AUTOCANCEL,
                TEXT '"Name: '||MULTIVALUEINFO.STRINGS.1||'\n'||,
                'Depth : '||MULTIVALUEINFO.STRINGS.3||'"'
          
             /* Construct the new INSTRINGS */
          
             INSTRINGS = ''
          
             do l = 0 to (MULTIVALUEINFO.STRINGS.COUNT - 1)
                INSTRINGS = INSTRINGS||' '||MULTIVALUEINFO.STRINGS.l
                end
          
             end

Known bugs
     None.

REQUEST_SCREENMODE
------------------

Command
     REQUEST_SCREENMODE

Parameters template
     MODEID/N, WIDTH/N, HEIGHT/N, OVERSCAN/N, DEPTH/N,
     GADS_ENABLED/S, MAXDEPTH/N, MINWIDTH/N, MINHEIGHT/N

Return template
     MODEID/N, WIDTH/N, HEIGHT/N, OVERSCAN/N, DEPTH/N, TEXT

Description
     Opens a screenmode requester, allowing the user to select an Amiga
     screenmode. By specifying the GADS_ENABLED, the user may also
     select the width, height, depth and overscan values for the
     screenmode.

     The other ImageStudio windows are automatically blocked when the
     requester is opened and unblocked when the requester is closed.

     In common with all ImageStudio requesters, if the user presses
     `Cancel', an error message is returned. For the script to trap this
     error, global error checking must be turned off. See Error
     checking, for more information.

Parameters
    MODEID/N
          The default screenmode ID for the requester which will be
          selected in the requester. By default, LORES is selected.

    WIDTH/N
          The default screen width value to put in the requester. By
          default, the default width of the selected screenmode is used.

    HEIGHT/N
          The default screen height value to put in the requester. By
          default, the default height of the selected screenmode is
          used.

    OVERSCAN/N
          The default overscan value to put in the requester. The
          following values are valid: 1 for text size, 2 for graphics
          size, 3 for extreme and 4 for maximum overscan. By default,
          text size is used.

    DEPTH/N
          The default depth value to put in the requester. By default,
          a depth of 2 is used.

    GADSENABLED/S
          By default the screenmode requester only allows the selecting
          of the screenmode. By using this switch, the user may also
          set the width, height, overscan and depth of the screenmode.

    MAXDEPTH/N
          The maximum depth allowed by the depth gadget. This value is
          only relevant to the internal screenmode requester.

    MINWIDTH/N
          The minimum allowable width of the screenmode.

    MINHEIGHT/N
          The minimum allowable height of the screenmode.

Returns
    MODEID/N
          The chosen screenmode ID.

    WIDTH/N
          The screen width chosen in the requester. This value is only
          set if the GADSENABLED switch is used.

    HEIGHT/N
          The screen height chosen in the requester. This value is only
          set if the GADSENABLED switch is used.

    OVERSCAN/N
          The overscan value chosen in the requester. The following
          values are returned: 1 for text size, 2 for graphics size, 3
          for extreme and 4 for maximum overscan. This value is only
          set if the GADSENABLED switch is used.

    DEPTH/N
          The depth value chosen in the requester. This value is only
          set if the GADSENABLED switch is used.

    TEXT
          A text description of the screenmode chosen.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason or the user
     cancelled requester, rc2 will contain a string describing the
     problem.

Example
     The following puts up a screenmode requester, the result is put in
     the SCREENMODEINFO. stem:

          REQUEST_SCREENMODE STEM SCREENMODEINFO.

     The following puts up a screenmode requester, complete with the
     width, height, depth and overscan gadgets. The chosen screenmode
     text is put in a message requester:

          REQUEST_SCREENMODE GADSENABLED STEM SCREENMODEINFO.
          
          REQUEST_MESSAGE TEXT '"'SCREENMODEINFO.TEXT'"'

Known bugs
       1. There are two screenmode requesters that can be used by
          ImageStudio.  If ImageStudio is running on a Workbench2.1+
          Amiga the system ASL screenmode requester is used, if the
          Workbench2.04 is running then ImageStudio will use its
          internal screenmode requester (Workbench2.04 doesn't have an
          ASL screenmode requester). Because of the two different
          requesters and the complex way in which the Amiga deals with
          screenmodes, the operation of the two can be subtly dif
          ferent.

          The most noticeable difference is in the handling of the
          Amiga's built in screenmodes. A built in screenmode is
          something like "LoRes" or "HighRes Interlaced" as opposed to
          a disk based screen mode like "MULTISCAN:Productivity" or
          "SUPER72:High Res".

          If you choose a built in screenmode in the ASL screenmode
          requester, the requester will return the screenmode ID
          something like "PAL:LoRes". This means that the requester
          specifies that the screenmode is "LoRes" and the monitor to
          be used is "PAL" (or "NTSC" in America). If you choose a
          built in screenmode in the internal screenmode requester, the
          requester will return the screenmode ID something like
          "LoRes", i.e. *it doesn't specify the monitor to be used*.

          This is not usually a problem, but we feel that our
          screenmode re quester may be more compatible with older
          software which doesn't un derstand the system of specifying
          the monitor in the screenmode.

          The matter is further complicated if you are using a monitor
          with mode promotion. Here, the internal screenmode
          requester's screen modes are promoted to the new double
          scanning modes (e.g. "HighRes" gets promoted to
          "DBLPAL:HighRes"). The ASL screenmodes *aren't* promoted, as
          they already contain the desired monitor information in the
          screenmode. This feature is either "desirable" or
          "undesirable" depending on your point of view. If you've ever
          wondered why some screenmodes don't promote, this is why -
          they have been told to be specifically "PAL" or "NTSC" in
          their screenmode.

          If major problems are found in the differences between the
          internal and ASL screenmode requesters, we will endevour to
          alter the inter nal screenmode requester, but we think this
          is unlikely to cause any real problems.

       2. To be safe in selecting a mode, you should always click on it
          in the requester. When you pass a default screenmode, the
          mode highlighted in the requester may not be exactly the same
          as the default screen mode given - it may be an equivalent.
          Clicking on the screenmode en sures that it returns that
          mode's real ID.

REQUEST_STRING
--------------

Command
     REQUEST_STRING

Parameters template
     TEXT1, TEXT2, TEXT3, STRING, TITLE

Return template
     STRING

Description
     Opens a string requester, allowing the user to type in one line of
     text.

     If a filename or directory name is required, it is suggested that
     either a special file or directory requester is used instead.

     The other ImageStudio windows are automatically blocked when the
     requester is opened and unblocked when the requester is closed.

     In common with all ImageStudio requesters, if the user presses
     `Cancel', an error message is returned. For the script to trap this
     error, global error checking must be turned off. See Error
     checking, for more information.

Parameters
    TEXT1
          The top line of description text in the requester. The text
          will be left justified.

    TEXT2
          The middle line of description text in the requester. The
          text will be left justified.

    TEXT3
          The bottom line of description text in the requester. The
          text will be left justified.

    STRING
          The default string to be used in the requester.

    TITLE
          The text for the title bar of the requester.

Returns
    STRING
          The string in the requester.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason or the user
     cancelled requester, rc2 will contain a string describing the
     problem.

Example
     The following puts up a string requester, allowing the user to type
     in some text. The returned string is put in RESULT:

          REQUEST_STRING TEXT2 '"Enter some text"'

     The following puts up a string requester with a default string of
     "A raytraced image". The description text is displayed over 3
     lines:

          REQUEST_STRING TEXT1 '"Enter the"' TEXT2 '"desired name"',
             TEXT3 '"for the image"' STRING '"A raytraced image"'

Known bugs
     None.

RGB_TO_HSV
----------

Command
     RGB_TO_HSV

Parameters template
     R/N/A, G/N/A, B/N/A

Return template
     H/N, S/N, V/N

Description
     Converts a RGB colour value into a HSV colour value.

     See Colour representations, for more details on RGB and HSV col
     our representations.

Parameters
    R/N/A
          The red value of the colour to convert. Valid values are 0 to
          255.

    G/N/A
          The green value of the colour to convert. Valid values are 0
          to 255.

    B/N/A
          The red of the colour to convert. Valid values are 0 to 255.

Returns
    H/N
          The hue componant value of the colour.

    S/N
          The saturation componant value of the colour.

    V/N
          The value componant of the colour.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following converts yellow from RGB to HSV representation,
     putting the result in RESULT:

          RGB_TO_HSV 255 255 0

     The following converts mid-grey from RGB to HSV representation,
     putting the result in the stem COLOUR.:

          RGB_TO_HSV 127 127 127 STEM COLOUR.

Known bugs
     None.

SAVE
----

Command
     SAVE

Parameters template
     FILE/A, FORMAT, ARGS, FORCE/S

Return template
     None.

Description
     Saves the current image out to disk.

     See Save, for more details on saving images.

Parameters
    FILE/A
          The filename of the file to save.

    FORMAT
          The string containing the format of the file to save. By
          default, images are saved out as IFF-ILBM. See File formats,
          for more in formation on the available file formats.

    ARGS
          Any extra arguments that should be passed to the saver.

    FORCE/S
          By default the user will be warned if they are about to
          overwrite a file on the disk. Specifying this switch will
          stop such warnings.

Returns
     Nothing.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following saves the current image out as an IFF-ILBM:

          SAVE FILE "ram:Image.ilbm"

     The following saves the current image out as an IFF-ILBM, HAM6:

          SAVE FILE "ram:Image.ham6" ARGS '"SUBFORMAT HAM6"'

     The following saves out the current image as a JPEG, with a quality
     setting of 90:

          SAVE FILE "ram:Image.jpg" FORMAT "JPEG" ARGS '"QUALITY 90"'

Known bugs
     None.

SCALE
-----

Command
     SCALE

Parameters template
     X/N, Y/N, PERCENT/S, METHOD

Return template
     None.

Description
     Scales the current image either up or down using different methods
     optimised for speed or quality.

     The user need not specify both X and Y scales, so scaling an image
     to only alter its width or height is possible.

     See Scale, for more details on scaling images.

Parameters
    X/N
          Amount to scale the image in X (width) direction. By default
          this value is an absolute value in pixels, but by specifying
          the PERCENT option this value can be read as a percentage of
          the image's current width.

    Y/N
          Amount to scale the image in Y (height) direction. By default
          this value is an absolute value in pixels, but by specifying
          the PERCENT option this value can be read as a percentage of
          the image's current height.

    PERCENT
          Reads the X and Y values as percentages of the image's
          current width and height.

    METHOD
          A string describing the method of scaling to use. By default,
          FAST is used but AVERAGE can provide higher quality scales on
          24bit images at the cost of computing time.

Returns
     Nothing.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following scales the image to 800 by 600 pixels:

          SCALE 800 600

     The following doubles the size of the image:

          SCALE 200 200 PERCENT

     The following halves the height of the image, using colour average
     scaling:

          SCALE Y 50 PERCENT METHOD "AVERAGE"

Known bugs
     None.

SCREEN_BACK
-----------

Command
     SCREEN_BACK

Parameters template
     None.

Return template
     None.

Description
     Moves the ImageStudio screen behind all other open screens.

Parameters
     None.

Returns
     Nothing.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following moves ImageStudio's screen behind all other open
     screens:

          SCREEN_BACK

Known bugs
     None.

SCREEN_FRONT
------------

Command
     SCREEN_FRONT

Parameters template
     None.

Return template
     None.

Description
     Moves the ImageStudio screen in front of all other open screens.

Parameters
     None.

Returns
     Nothing.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following moves ImageStudio's screen in front of all other open
     screens:

          SCREEN_FRONT

Known bugs
     None.

SELECT_ALL
----------

Command
     SELECT_ALL

Parameters template
     None.

Return template
     None.

Description
     Sets the current region to the whole of the image being displayed
     in the preview window.

     Note that this doesn't always select the whole image; if the user
     has zoomed in on a region, only this region will be selected. If
     you want to be sure of selecting the whole image, issue a
     FULL_IMAGE command first.

Parameters
     None.

Returns
     Nothing.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following selects the whole of the currently viewed image:

          SELECT_ALL

Known bugs
     None.

UNDO
----

Command
     UNDO

Parameters template
     None.

Return template
     None.

Description
     Un-does the last operation (see ARexx_REDO).

Parameters
     None.

Returns
     Nothing.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following un-does the last operation:

          UNDO

Known bugs
     None.

VIEW
----

Command
     VIEW

Parameters template
     EXTERNAL/S

Return template
     None.

Description
     Views the current image using either the internal or external
     viewer.

Parameters
    EXTERNAL/S
          By default the image is shown using the internal viewer,
          however by including this parameter the external viewer as
          defined in the preferences (see Prefs) will be used.

Returns
     Nothing.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following views the current image using the internal viewer:

          VIEW

     The following views the current image using the external viewer:

          VIEW EXTERNAL

Known bugs
     None.

ZOOM_IN
-------

Command
     ZOOM_IN

Parameters template
     None.

Return template
     None.

Description
     Zooms in to the currently selected region in the preview window.

     A region has to be selected in order for this command to work.

Parameters
     None.

Returns
     Nothing.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following zooms in to the currently selected region:

          ZOOM_IN

Known bugs
     None.

ZOOM_OUT
--------

Command
     ZOOM_OUT

Parameters template
     None.

Return template
     None.

Description
     Zooms out by a factor of 3 times in the preview window.

Parameters
     None.

Returns
     Nothing.

Errors
     rc = 0 if the operation was successful.

     rc = 10 if the operation failed for any reason, rc2 will contain a
     string describing the problem.

Example
     The following zooms out by a factor of 3 times in the preview
     window:

          ZOOM_OUT

Known bugs
     None.

Reference
*********

   This chapter gives detailed explanations about various aspects of
the program.

File formats
============

   Select the file format you wish to investigate.

IFF-ILBM
--------

Name
     IFF-ILBM

Load types
     Colour mapped, 24 bit, HAM6, HAM8, Extra halfbright.

     Compressed and uncompressed.

Save types
     Colour mapped, 24 bit, HAM6, HAM8, Extra halfbright.

     Compressed and uncompressed.

Description
     IFF-ILBM is the Amiga's native bitmap graphic file format.

     IFF-ILBM files are usually compressed using simple run-length
     compression, but they can be uncompressed for simplicity and speed.

     IFF-ILBM is ImageStudio's default save format.

     ImageStudio will load and save AGA images on a non-AGA machine.

     The original image's screenmode will be preserved, unless changed
     by the user (see View_screenmode).

ARexx OPEN command ARGS
     None.

ARexx SAVE command ARGS
     SUBFORMAT, DITHER, NOCOMPRESSION/S

    SUBFORMAT
          By default the image is saved out as the buffer, i.e. either
          a 2 to 256 colour colour-mapped image or as 24bit. By
          specifying the SUB FORMAT parameter, the user can select
          HAM6, HAM8 or EHB as extra save formats. The image will be
          converted into the chosen subformat before saving. The image
          in ImageStudio remains unchanged.

    DITHER
          If the SUBFORMAT option is used, DITHER can be set to FS to
          give Floyd-Steinberg dithering of the HAM6, HAM8 or EHB image.

    NOCOMPRESSION/S
          By default the IFF-ILBM image is compressed using simple
          run-length compression. Use this switch to save uncompressed
          data.

Example
     The following saves out the current image in the same format as the
     buffer:

          SAVE FILE "Image.ilbm"

     The following saves out the image as HAM6:

          SAVE FILE "Image.ilbm" ARGS '"SUBFORMAT HAM6"'

     The following saves out the image as Floyd-Steinberg dithered Extra
     halfbright:

          SAVE FILE "Image.ilbm" ARGS '"SUBFORMAT EHB DITHER FS"'

BMP
---

Name
     BMP

Load types ("Windows" and "OS/2" format).
     Colour mapped, 24 bit.

Save types
     Colour mapped, 24 bit ("Windows" format).

Description
     BMP files are commonly found on PCs running Microsoft Windows.

     BMP images are usually uncompressed and come in 2 flavours -
     `Windows' and `OS/2'.

ARexx OPEN command ARGS
     None.

ARexx SAVE command ARGS
     None.

Example
     None.

Datatype
--------

Name
     Datatype

Load types
     Colour mapped.

Save types
     None.

Description
     The datatype IO module will use any datatypes installed on the
     system to try and load the image. The datatype loader will only
     work with Workbench3.0 and above.

     Datatypes are a poor way of loading images into ImageStudio, for
     the following reasons:

       1. Datatypes are slow. First the datatype has to convert the
          image into its internal format, then ImageStudio has to
          convert this to ImageStudio's internal format.

       2. Datatypes cannot handle more than 256 colours. Any 24bit
          image for mats are converted by the datatype to 256 colours
          (or less) which will cause a loss in quality.

       3. Datatypes cannot use the progress bar whilst converting the
          incomming image. It is therefore not possible to stop a
          datatype loading an image during this first phase.

     Because of these problems, ImageStudio will only try the datatype
     loader as a "last resort" - trying its own loaders before attempt
     ing to the use the datatype module.

     During testing we have found a few datatypes that cause problems
     with odd subformats of certain formats. Obviously, ImageStudio has
     no control over the quality of the datatypes installed on the
     system.

ARexx OPEN command ARGS
     None.

ARexx SAVE command ARGS
     None.

Known bugs
     The datatype loader currently doesn't handle datatypes which return
     HAM (HAM6 or HAM8) images.

Example
     None.

EPS
---

Name
     EPS

Load types
     None.

Save types
     Greyscale, 24 bit.

Description
     EPS files are ASCII text files written in the PostScript language.
     They can be printed out directly to a PostScript printer or
     imported into word processing or DTP packages.

     EPS files are an ineffecient method of storing files, as they are
     uncompressed and are stored as ASCII text as opposed to binary
     data.  Unless colour is specifically required it is recommended
     that EPS files be saved in the greyscale format, as they are one
     third of the size of a colour EPS file.

ARexx OPEN command ARGS
     None.

ARexx SAVE command ARGS
     DPI/N, COLOUR

    DPI/N
          The resolution of the image in dots per inch. By default, 300
          dpi is used.

    COLOUR
          By default the output image is 256 greyscale. Specifying this
          option outputs the image as 24bit colour.

Example
     The following saves out a COLOUR EPS file:

          SAVE FILE "Image.eps" FORMAT "EPS" ARGS "COLOUR"

     The following saves out a 600 by 300 file at 150 dpi, given a print
     able size of 4inches by 2inch:

          SAVE FILE "Image.eps" FORMAT "EPS" ARGS '"DPI 150"'

GIF
---

Name
     GIF

Load types
     Colour mapped ("GIF87a" and "GIF89a" formats).

Save types
     Colour mapped ("GIF87a" and "GIF89a" formats).

Description
     GIF is a common format for images upto 256 colours.

     GIF is a trademark of Compuserve Incorporated.

     GIF images are normally smaller than their equivalent IFF-ILBM
     counterparts due to GIF's LZW compression algorithm. GIF files are
     always compressed.

     GIF comes in 2 flavours - `GIF87a' and `GIF89a'. GIF87a is the most
     popular format; ImageStudio will load in both GIF87a and GIF89a.

ARexx OPEN command ARGS
     None.

ARexx SAVE command ARGS
     SUBFORMAT,INTERLACED/S,TRANSPARENCY/S,TRANSPCOLOUR/N

    SUBFORMAT
          By default GIF files are saved as the popular GIF87a format.
          By selecting a subformat of GIF89A, the user may include extra
          information in the file (e.g. transparent colour information).
          Specifying a subformat of GIF89a alone provides no extra
          functionality.

    INTERLACED/S
          By default the information in a GIF file is saved in a
          sequential fashion (e.g. line 1,line 2,line 3...). By
          specifying this switch the image in saved in a series of
          interlaced passes which can give faster redraws on some
          viewers (e.g. World Wide Web browsers).  Both GIF87A and
          GIF89A support interlacing.

          Note: This interlace has nothing to do with the Amiga's
          interlaced screens.

    TRANSPARENCY/S
          By specifying this switch, one colour out of the image's
          pallete can be made `transparent', causing the background
          colour to show through. This again can be useful with World
          Wide Web browsers. By default, the transparent colour is
          colour 0, but this can be changed (see below). This switch is
          only used in the GIF89A subformat.

    TRANSPCOLOUR/N
          This is the palette entry number that is made transparent if
          the TRANSPARENT switch is used. This value is only used in
          the GIF89A subformat.

Example
     The following saves out a standard GIF87a format file:

          SAVE FILE "Image.gif" FORMAT "GIF"

     The following saves out a GIF87a file with interlace:

          SAVE FILE "Image.gif" FORMAT "GIF" ARGS "INTERLACED"

     The following saves out a GIF89a file with a transparent colour of
     10:

          SAVE FILE "Image.gif" FORMAT "GIF",
             ARGS "SUBFORMAT GIF89A TRANSPARENCY TRANSPCOLOUR 10"

IFF-DEEP
--------

Name
     IFF-DEEP

Load types
     24 bit uncompressed.

Save types
     24 bit uncompressed.

Description
     The IFF-DEEP format a fast way of storing 24bit data in a IFF
     format file.

     IFF-DEEP files can be compressed, but ImageStudio currently only
     supports the loading and saving of the common uncompressed format.
     Saving a colour mapped image as IFF-DEEP will cause the image to be
     promoted to 24bits and the colour map information to be lost.

ARexx OPEN command ARGS
     None.

ARexx SAVE command ARGS
     None.

Example
     The following saves out an IFF-DEEP file:

          SAVE FILE "Image.deep" FORMAT "IFF-DEEP"

JPEG
----

Name
     JPEG

Load types
     Greyscale, 24 bit ("JFIF" format).

Save types
     Greyscale, 24 bit ("JFIF" format).

Description
     JPEG allows the storage of 24-bit images as very small files due to
     its lossy compression algorithm. Whereas the compression algorithms
     used by other file formats loose none of the image information,
     JPEG trades off a little loss in image quality for a high degree of
     compression.

     As JPEG is a relatively new format, an exact format of the JPEG
     file was only agreed on recently. This format is called `JFIF' and
     these are the most commonly used JPEG format files - and the
     format that ImageStudio loads and saves. It is highly unlikely
     that any old JPEG files are still being circulated, but should you
     find one it is uncertain whether ImageStudio would accept it.

     A high degree of compatibility is obtained with our JPEG loader /
     saver routines, as they are based in part on the work of the
     Independant JPEG group's routines.

ARexx OPEN command ARGS
     None.

ARexx SAVE command ARGS
     QUALITY/N, GREYSCALE/S

    QUALITY/N
          The quality of the jpeg output file. A quality value of 75 is
          given by default, resulting in an acceptable degredation of
          image quality.  For higher degree of compression choose a
          lower value(1). For a higher degree of quality, choose a
          higher value; values of 85 to 90 result in an almost
          unnoticable loss of quality.

    GREYSCALE/S
          By default the JPEG output is 24bit colour. By using this
          option, the image can also be saved in a greyscale format,
          where the colour information is lost but the output file size
          is correspondingly smaller.

Example
     The following saves out the current image as JPEG:

          SAVE FILE "Image.jpg" FORMAT "JPEG"

     The following saves out the current image as JPEG, with a high
     degree of compression:

          SAVE FILE "Image.jpg" FORMAT "JPEG" ARGS '"QUALITY 50"'

     The following saves out the current image as greyscale JPEG:

          SAVE FILE "Image.jpg" FORMAT "JPEG" ARGS '"GREYSCALE"'

   ---------- Footnotes ----------

   (1)  Values less than 25 may cause problems with some JPEG readers

PCX
---

Name
     PCX

Load types
     Colour mapped (2 to 16, 256 colours), 24 bit.

Save types
     Colour mapped (256 colours), 24 bit.

Description
     PCX files are commonly found on PCs running Microsoft Windows.

     PCX files are always compressed using a very inefficient run-length
     encoding algorithm. This algorithm can, in some cases, lead to an
     increase in file size over an uncompressed image. PCX is included
     in ImageStudio for compatibility with other platforms, but we do
     not recommend the general storing of images in this format.

     ImageStudio only saves 256 colour PCX files as these are the most
     compatible accross programs. The specification is a little vague as
     to how to handle 2 to 16 colour PCX files.

ARexx OPEN command ARGS
     None.

ARexx SAVE command ARGS
     None.

Example
     None.

PNG
---

Name
     PNG

Load types
     Colour mapped, 24, 32 and 48bits.

Save types
     Colour mapped, 24bit.

Description
     PNG is the license free replacement for the GIF file format.

     After the controversy with the LZW compression algorithm used in
     the GIF file format, it was decided that a new standard should be
     created which uses the license free LZ compression algorithm along
     with many improvments over the GIF file format (e.g. support for
     24bit images). PNG is that format, and supports many advanced
     features to obtain the best lossless compression for any type of
     bitmap image.  PNG also supports features that will find
     themselves useful in World Wide Web browsers, etc...

     A high degree of compatibility is obtained with our PNG
     loader/saver, as it is based in part on the PNGlib code by Group42.

ARexx OPEN command ARGS
     None.

ARexx SAVE command ARGS
     INTERLACE,TRANSPARENCY/S,TRANSPCOLOUR/N

    INTERLACE
          By default PNG files are not interlaced, however by
          specifying an INTERLACE value of ADAM7 they can be saved out
          with 7 levels of in terlacing. This gives progressive redraw
          for World Wide Web browsers.

          Note: This interlace has nothing to do with the Amiga's
          interlaced screens.

    TRANSPARENCY/S
          By specifying this switch, one colour out of the image's
          pallete can be made `transparent', causing the background
          colour to show through. This again can be useful with World
          Wide Web browsers. By default, the transparent colour is
          colour 0, but this can be changed (see below).

    TRANSPCOLOUR/N
          This is the palette entry number that is made transparent if
          the TRANSPARENT switch is used.

Example
     The following saves out a standard PNG format file:

          SAVE FILE "Image.png" FORMAT "PNG"

     The following saves out a PNG file with interlace:

          SAVE FILE "Image.png" FORMAT "PNG" ARGS "INTERLACE=ADAM7"

     The following saves out a PNG file with a transparent colour of 10:

          SAVE FILE "Image.png" FORMAT "PNG",
             ARGS "TRANSPARENCY TRANSPCOLOUR 10"

PNM
---

Name
     PNM

Load types
     Black and white, greyscale, 24bit colour. ASCII and binary.

Save types
     Black and white, greyscale, 24bit colour. ASCII and binary.

Description
     PNM is an amalgamation of the PBM, PGM and PPM file formats,
     commonly found on UNIX machines.

     The PNM (Portable aNyMap) family of formats are simple way to store
     images as either binary or ASCII format. The formats are
     uncompressed, so tend to produce very large files. This module
     should handle all PNM formats.

     When loading a PNM file, the file *must* have either a `.pnm',
     `.pbm', `.pgm' or `.ppm' filename extension.

     When saving out a black and white PBM file, the current image is
     converted simply into black and white without dithering. If you
     require a dithered black and white output you have to reduce the
     number of colours first within ImageStudio.

ARexx OPEN command ARGS
     None.

ARexx SAVE command ARGS
     SUBFORMAT,ASCII/S

    SUBFORMAT
          SUBFORMAT can be set to either PBM, PGM, PPM depending on
          whether the output should be black and white, greyscale or
          24bit colour.

    ASCII/S
          By default PNM files are saved in their more compact binary
          format.  By specifying this switch, the output can be pure
          ASCII text characters. This format produces files whice are
          substantially larger than the binary format, but which can be
          directly transferred via text only media (e.g. e-mail).

Example
     The following saves out a 24bit PNM format file:

          SAVE FILE "Image.ppm" FORMAT "PNM" ARGS "SUBFORMAT=PPM"

     The following saves a black and white ASCII PBM file:

          SAVE FILE "Image.pbm" FORMAT "PNM" ARGS "SUBFORMAT=PBM ASCII"

QRT
---

Name
     QRT

Load types
     24bit colour.

Save types
     24bit colour.

Description
     QRT is the output file format for the QuickRayTracer program, as
     well as the DKB and POV raytracers.

     QRT is a simple uncompressed 24bit colour file format.

     When loading a QRT file, the file *must* have either a `.qrt',
     `.dkb' or `.pov' filename extension.

ARexx OPEN command ARGS
     None.

ARexx SAVE command ARGS
     None.

Example
     The following saves out a 24bit QTR format file:

          SAVE FILE "Image.qrt" FORMAT "QRT"

SGI
---

Name
     SGI

Load types
     Greyscale and 24bit colour. Compressed and uncompressed.

Save types
     Greyscale and 24bit colour. Compressed and uncompressed.

Description
     SGI-RGB is the file format used by Silicon Graphics workstations.

     SGI-RGB files can be compressed using run length encoding. As the
     data is 24bits, this usually has little effect.

ARexx OPEN command ARGS
     None.

ARexx SAVE command ARGS
     GREYSCALE/S,COMPRESSED/S

    GREYSCALE/S
          By default the image is saved in full 24bit colour. By
          specifying this switch, the output image can be saved as 256
          greyscales.

    COMPRESSED/S
          By specifying this switch the output file may be compressed
          using run length encoding.

Example
     The following saves out a 24bit SGI format file:

          SAVE FILE "Image.sgi" FORMAT "SGI"

     The following saves a compressed greyscale image:

          SAVE FILE "Image.sgi" FORMAT "SGI" ARGS "GREYSCALE COMPRESSED"

Targa
-----

Name
     TARGA

Load types
     Colour mapped (2 and 256 colours), 15, 16, 24 and 32bits.

     Compressed and uncompressed.

Save types
     Colour mapped (256 colours), 24 bit.

     Uncompressed.

Description
     Targa is usually used for storing 24-bit images, although it can
     also handle colour-mapped images as well. The data is usually
     stored as simple uncompressed data, however it can also be
     run-length encoded to allow compression.

ARexx OPEN command ARGS
     None.

ARexx SAVE command ARGS
     None.

Example
     None.

TIFF
----

Name
     TIFF

Load types
     Baseline TIFF v6 without CCITT Huffman compression.

Save types
     Baseline TIFF v6.

Description
     TIFF is a very powerful and flexible file format.

     TIFF is probably the most complex and powerful image file format in
     common use. TIFF allows the TIFF saver many options in order to
     optimize the output file for any given use. This is also the
     problem with TIFF; in order for a program to load TIFF images it
     must have the ablility to understand all the aspects of the file
     format. This leads to great incompatibilties as programs create
     TIFF files which cannot be read in by other programs claiming TIFF
     loading ability.

     In order to overcome this problem, the TIFF Advisory Committee pro
     duced a `Baseline' TIFF specification which it was intended that
     all TIFF loaders/savers could handle this minimum level of file
     format.

     The TIFF module provided with ImageStudio is based on this baseline
     specification with some differences. The main difference is lack of
     compression type 2 (CCITT Huffman) in either the loader or saver.
     The loader should handle most other TIFF files and has been tested
     with Macintosh and UNIX image processing programs. Images produced
     by the module differ from the recommended strip size as dictated by
     the TIFF specifications. The TIFF specs recommend that the image is
     broken down into strips and saved out as multiple strips;
     ImageStudio saves the image out as one large strip to try and
     maintain compatibility with programs that cannot handle multiple
     strip images.

     Due to TIFF's complexity, it is very likely that ImageStudio will
     encounter invalid TIFF files that will not load into the program.
     Similarly, TIFF files produced by ImageStudio may not load into
     other programs (e.g. ones which rely on the strip size being
     small).  This is a fact of TIFF life, we're afraid. The
     ImageStudio TIFF module was written to compatible, not clever.

ARexx OPEN command ARGS
     None.

ARexx SAVE command ARGS
     COMPRESSION,DPI/N

    COMPRESSION
          Currently no compression is supported, so COMPRESSION=NONE.

    DPI/N
          The user may specify the resolution of the output image in
          dots-per-inch. Images are saved at a default DPI of 300.

Example
     The following saves out a TIFF format file:

          SAVE FILE "Image.tiff" FORMAT "TIFF"

     The following saves a TIFF image at 72 DPI:

          SAVE FILE "Image.tiff" FORMAT "TIFF" ARGS "DPI=72"

VMEM
----

Name
     VMEM

Load types
     Colour mapped and 24bit.

Save types
     Colour mapped and 24bit.

Description
     VMEM is the data from ImageStudio's virtual memory swap files, plus
     header information.

     VMEM files can be loaded and saved by ImageStudio, but their main
     use is with the `UnCrash' CLI utility given with ImageStudio for
     resurrecting the virtual memory swap files after a crash.

     The file format is given below, as this is probably the easiest way
     of creating and reading images for ImageStudio for use in other
     programs.

File Format
     The file format for the VMEM files is given below should you wish
     to use the format in your own programs. The file consists of the
     of an information header (descriped below) followed by the image
     data. The image header is always a fixed size and the image data
     is uncom pressed.

     Image header:

     `C' notation is used, all numbers are stored in Motorola byte
     order,

          struct {
               UBYTE magic1,magic2;       // Values 0xDE and 0xAD
               UBYTE magic[4];            // Values 'V','M','E','M'
          
               WORD width,height;         // Image dimensions
          
               BYTE bytes_per_pixel;      // 1 for colour map, 3 for RGB
          
               UBYTE cmap[256][3];        // The colour map (empty for RGB)
               };

     The structure is not byte padded, i.e. it's 779 bytes in size.

     Image data:

     The image data is either the colour map values if the image was col
     our mapped, or RGB data ordered R,G,B. The length of the image data
     should be the width times height times bytes_per_pixel.

ARexx OPEN command ARGS
     None.

ARexx SAVE command ARGS
     None.

Example
     None.

Effects
=======

   Select the effect you wish to investigate.

Dynamic range
-------------

Works with
        - Full colour-mapped images.

        - Full and regions of 24bit images.

Description
     Expands the dynamic range of the image to the maximum possible,
     without altering the colour balance. This is useful for
     automatically increasing the contrast of poor contrast images,
     e.g. the output from a scanner.

ARexx EFFECT command ARGS
     None.

Flip X
------

Works with
        - Full and regions of colour-mapped images.

        - Full and regions of 24bit images.

Description
     Flips the whole image or selected region horizontally.

ARexx EFFECT command ARGS
     None.

Flip Y
------

Works with
        - Full and regions of colour-mapped images.

        - Full and regions of 24bit images.

Description
     Flips the whole image or selected region vertically.

ARexx EFFECT command ARGS
     None.

Greyscale
---------

Works with
        - Full colour-mapped images.

        - Full and regions of 24bit images.

Description
     Reduces a colour image to a greyscale image. The actual greyscale
     values (or more correctly, luminosity) value is calculated as 30%
     of the red component + 59% of the green component + 11% of the blue
     component.

ARexx EFFECT command ARGS
     None.

Highlight
---------

Works with
        - Full colour-mapped images.

        - Full and regions of 24bit images.

Description
     Turns all colours with greater than the given luminance value to
     white.

ARexx EFFECT command ARGS
     LUMINANCE/N/A

    LUMINANCE/N/A
          The luminance value above which pixels should be turned white.

Negative
--------

Works with
        - Full colour-mapped images.

        - Full and regions of 24bit images.

Description
     Negates the colour values of the image.

ARexx EFFECT command ARGS
     None.

Random
------

Works with
        - Full and regions of 24bit images.

Description
     Adds random noise to the image. The greater the random value, the
     greater the noise.

ARexx EFFECT command ARGS
     RANDOMNESS/N/A

    RANDOMNESS/N/A
          The amount of randomness to apply to the image. Values range
          between 1 and 255.

Remove isolated pixels
----------------------

Works with
        - Full and regions of colour-mapped images.

        - Full and regions of 24bit images.

Description
     Removes any single pixels that are a different colour to their
     neighbours. Useful in removing some of the noise in black and white
     scans.

ARexx EFFECT command ARGS
     None.

Roll X
------

Works with
        - Full and regions of colour-mapped images.

        - Full and regions of 24bit images.

Description
     Rolls the whole image or selected region horizontally, wrapping the
     image around.

ARexx EFFECT command ARGS
     DISTANCE/N/A

    DISTANCE/N/A
          The distance, in pixels, to move the image. A positive value
          moves the image to the right, a negative value moves the
          image to the left.

Roll Y
------

Works with
        - Full and regions of colour-mapped images.

        - Full and regions of 24bit images.

Description
     Rolls the whole image or selected region vertically, wrapping the
     image around.

ARexx EFFECT command ARGS
     DISTANCE/N/A

    DISTANCE/N/A
          The distance, in pixels, to move the image. A positive value
          moves the image down, a negative value moves the image up.

Pixelise
--------

Works with
        - Full and regions of colour-mapped images.

        - Full and regions of 24bit images.

Description
     Replaces all pixels in the whole image or selected region with
     larger pixels.

ARexx EFFECT command ARGS
     PIXELSIZE/N/A

    PIXELSIZE/N/A
          The size, in pixels, of the larger pixel blocks.

Shadow
------

Works with
        - Full colour-mapped images.

        - Full and regions of 24bit images.

Description
     Turns all colours with less than the given luminance value to
     black.

ARexx EFFECT command ARGS
     LUMINANCE/N/A

    LUMINANCE/N/A
          The luminance value below which pixels should be turned black.

Image types
===========

   ImageStudio works internally with either "colour-mapped" or "24-bit"
images. A description of the workings of both methods follows.

Colour-mapped images
     Colour-mapped (palette based) images are used by the standard
     (non-HAM) screenmodes on the Amiga. A set of colours (palette) is
     chosen for the image and every pixel in the image can have one of
     these colours.

     Colour-mapped images have the advantage of being a fairly compact
     way of storing image information and with a large palette (greater
     than 64 colours) high quality images can be produced. They have the
     disadvantage that the colours in the image are limited to the col
     ours in the palette - with a small palette it becomes a complex
     task choosing the correct colours to best portray the image.

24-bit images
     24-bit images allow every pixel in the image to be an individual
     colour - this is essential for high quality images.

     24-bit images have the disadvantage that they are typically at
     least 3-times larger than colour-mapped images and require
     sophisticated display hardware to show them in their true glory.

When should I use each type of image?
     In general, try to leave the image in the format in which it came.
     If, for example, you load in a colour-mapped image try and perform
     all your operations directly to the colour-mapped image; only
     change to a 24-bit image if absolutely necessary (e.g. to apply a
     convolution filter).

Colour representations
======================

   	ImageStudio works internally with the R,G,B format of colour
representation. This is the most common method of storing colour in
formation on computers, as it represents the amounts of intensities
applied to the 3 colour guns of a computer monitor.

   	H,S,V stands for Hue, Saturation and Value. The hue is the basic
colour (e.g. red, yellow, green, purple etc...), saturation is the
amount of that colour (e.g. weak red, strong red etc...) and the value
is the brightness of the colour.

Tooltypes
=========

   ImageStudio supports the configuring of the program via tooltypes
from either the Workbench or CLI.

   It is recommended that the user who starts the program from Work
bench uses the "Prefs" requester of ImageStudio to configure it (see
Prefs), whereas the CLI user should be aware of the tooltype options.

   Boolean tooltypes can have values `ON' or `YES' for a positive
value, `OFF' or `NO' for a negative values. Numeric tooltypes are
positive and negative integers; floating point values are not allowed.

BALANCE
-------

Name
     BALANCE

Type
     Boolean

Description
     Determines whether the balance floating palette should be open at
     startup.

BALANCELEFT
-----------

Name
     BALANCELEFT

Type
     Numeric

Description
     The top position to open the balance floating palette.

BALANCETOP
----------

Name
     BALANCETOP

Type
     Numeric

Description
     The left position to open the balance floating palette.

CONVOLVE
--------

Name
     CONVOLVE

Type
     Boolean

Description
     Determines whether the convolve floating palette should be open at
     startup.

CONVOLVELEFT
------------

Name
     CONVOLVELEFT

Type
     Numeric

Description
     The top position to open the convolve floating palette.

CONVOLVETOP
-----------

Name
     CONVOLVETOP

Type
     Numeric

Description
     The left position to open the convolve floating palette.

EFFECT
------

Name
     EFFECT

Type
     Boolean

Description
     Determines whether the effect floating palette should be open at
     startup.

EFFECTLEFT
----------

Name
     EFFECTLEFT

Type
     Numeric

Description
     The top position to open the effect floating palette.

EFFECTTOP
---------

Name
     EFFECTTOP

Type
     Numeric

Description
     The left position to open the effect floating palette.

SCRIPTS
-------

Name
     SCRIPTS

Type
     Boolean

Description
     Determines whether the scripts floating palette should be open at
     startup.

SCRIPTSLEFT
-----------

Name
     SCRIPTSLEFT

Type
     Numeric

Description
     The top position to open the scripts floating palette.

SCRIPTSTOP
----------

Name
     SCRIPTSTOP

Type
     Numeric

Description
     The left position to open the scripts floating palette.

PREVIEWLEFT
-----------

Name
     PREVIEWLEFT

Type
     Numeric

Description
     The top position to open the preview window.

PREVIEWTOP
----------

Name
     PREVIEWTOP

Type
     Numeric

Description
     The left position to open the preview window.

PREVIEWWIDTH
------------

Name
     PREVIEWWIDTH

Type
     Numeric

Description
     The width to open the preview window.

PREVIEWHEIGHT
-------------

Name
     PREVIEWHEIGHT

Type
     Numeric

Description
     The height to open the preview window.

FONTNAME
--------

Name
     FONTNAME

Type
     String

Description
     The name of the font to use to layout the ImageStudio windows and
     menus.

     When specifying the font name, the font name must be have a `.font'
     appended to its name. For example, to set the default to be
     helvetica, the tooltype should be specified as:

          FONTNAME=helvetica.font

     The fontname is not case sensitive.

FONTSIZE
--------

Name
     FONTSIZE

Type
     Numeric

Description
     The size of the font to use to layout the ImageStudio windows and
     menus.

     If a large font is specified which would cause some of the windows
     to become too large to fit on the ImageStudio screen, the font will
     default to topaz 8.

SCREENMODEID
------------

Name
     SCREENMODEID

Type
     Numeric

Description
     The screenmode to open the ImageStudio screen. This value is the
     value returned by the REQUEST_SCREENMODE ARexx command in the
     MODEID value (see ARexx_REQUEST_SCREENMODE).

SCREENOVERSCAN
--------------

Name
     SCREENOVERSCAN

Type
     Numeric

Description
     The overscan to use with the ImageStudio screen. Valid values are 1
     for text overscan, 2 for graphics size, 3 for extreme and 4 for
     maximum.

     Note, this tooltype has changed from v1.x.x, where it was a string
     type.

SCREENDEPTH
-----------

Name
     SCREENDEPTH

Type
     Numeric

Description
     The depth of the ImageStudio screen. Valid values are 1 to 8.

SCREENWIDTH
-----------

Name
     SCREENWIDTH

Type
     Numeric

Description
     The width of the ImageStudio screen. Valid values are greater than
     640.

SCREENHEIGHT
------------

Name
     SCREENHEIGHT

Type
     Numeric

Description
     The height of the ImageStudio screen. Valid values are greater than
     200.

BLANKSCRIPT
-----------

Name
     BLANKSCRIPT

Type
     String

Description
     The filename of the Blank ARexx script to use a template when a new
     script is created in the `Scripts' floating palette.

CONVOLVEDIR
-----------

Name
     CONVOLVEDIR

Type
     String

Description
     The directory to scan on startup for convolution filters to include
     in the `Convolves' floating palette.

EXTERNALVIEWER
--------------

Name
     EXTERNALVIEWER

Type
     String

Description
     The external program to run to view the image. The string is in the
     format that would be typed from the command line, with a `%s' where
     the image filename should be placed.

     It is recommended that the string be prefixed with a "run" to allow
     the external viewer to run in the background, otherwise ImageStudio
     has to wait for the program to finish. For example:

          sys:Utilities/VT <NIL: >NIL: %s

     would leave ImageStudio waiting until ViewTek had finished, whereas

          run sys:Utilities/VT <NIL: >NIL: %s

     would run ViewTek in the background. The "<NIL:" and ">NIL:" are
     used to stop error messages being printed to the console.

HELPFILE
--------

Name
     HELPFILE

Type
     String

Description
     The full filename of the AmigaGuide help file to provide online
     help.

     Note, the *full* filename must be provided, a filename taken from
     the current directory will not work. For example:

          Docs/ImageStudio.guide

     will not work, whereas

          Work:Graphics/ImageStudio/Docs/ImageStudio.guide

     will work fine.

     If you do wish to specify the current directory, you may use the
     `PROGDIR:' volume assignment. PROGDIR: is set to be the current di
     rectory of the current program, each program having its own
     PROGDIR: value that can only be used within the program.
     Therefore, the above AmigaGuide helpfile can be refered to as:

          PROGDIR:Docs/ImageStudio.guide

     See Tooltype_HELP, for more information on AmigaGuide help.

IMAGEDIR
--------

Name
     IMAGEDIR

Type
     String

Description
     The default directory to use for images when ImageStudio is loaded.

INTERNALVIEWER
--------------

Name
     INTERNALVIEWER

Type
     String

Description
     The filename of module used for the internal viewer. See See
     Internal_viewer, for more information on the different capablities
     of the different viewer modules.

KEYFILE
-------

Name
     KEYFILE

Type
     String

Description
     The filename of the keyfile to use to unlock ImageStudio to use
     full sized images. Keyfiles are obtaining by registering (see How
     to register).

MODULEDIR
---------

Name
     MODULEDIR

Type
     String

Description
     The default directory to use for external modules.

     Inside the module directory are other directories containing
     modules specific to file loading/saving, viewers, effects etc...
     These directories are scanned when ImageStudio starts up.

PALETTEDIR
----------

Name
     PALETTEDIR

Type
     String

Description
     The default directory to use for palettes when ImageStudio is
     loaded.

     See Palette, for more details on loading palettes into ImageStudio.

PORTNAME
--------

Name
     PORTNAME

Type
     String

Description
     The name of the ARexx portname used by the program.

     If a portname by that name already exists, the name is incremented
     until a free portname is found. For example, if `IMAGESTUDIO' was
     already in use, the following sequence of names would be tried:
     `IMAGESTUDIO.1', `IMAGESTUDIO.2', `IMAGESTUDIO.3' ...

     When choosing an ARexx portname, try to keep it fairly short.

REXXOUTPUT
----------

Name
     REXXOUTPUT

Type
     String

Description
     The name of the filename to use for ARexx scripts' output.  See
     Basic ARexx, for more information on this file.

SCREENNAME
----------

Name
     SCREENNAME

Type
     String

Description
     The name of ImageStudio's public screen. This name must be unique,
     otherwise the screen won't open.

SCRIPTSDIR
----------

Name
     SCRIPTSDIR

Type
     String

Description
     The default directory that will be scanned for ARexx script files
     to put in the `Scripts' floating palette list. Any file with the
     chosen ARexx script extension (see Tooltype_SCRIPTSEXT) will be
     placed in the list.

SCRIPTSEXT
----------

Name
     SCRIPTSEXT

Type
     String

Description
     The default filename extension for the ImageStudio ARexx scripts.
     Only scripts with this extension will be added to the list in the
     `Scripts' floating palette.

TEMPDIR
-------

Name
     TEMPDIR

Type
     String

Description
     The directory in which ImageStudio can put its virtual memory tempo
     rary swap files. This should be some location on your hard disk, as
     the data will be accessed a lot during some operations. If you have
     lots of RAM, the temporary directory can be placed in the ram disk
     for maximum speed.

TEXTEDITOR
----------

Name
     TEXTEDITOR

Type
     String

Description
     The text editor used to edit ARexx scripts from the `Scripts' float
     ing palette. The string is in the format that would be typed from
     the command line, with a `%s' where the image filename should be
     placed.

     It is recommended that the string be prefixed with a "run" to allow
     the text editor to run in the background, otherwise ImageStudio has
     to wait for the program to finish. For example:

          sys:Tools/Memacs <NIL: >NIL: %s

     would leave ImageStudio waiting until Microemacs had finished,
     whereas

          run sys:Tools/Memacs <NIL: >NIL: %s

     would run Microemacs in the background. The "<NIL:" and ">NIL:" are
     used to stop error messages being printed to the console.

CLIPUNIT
--------

Name
     CLIPUNIT

Type
     Numeric

Description
     The system clipboard used to copy (see Copy) and paste (see Paste)
     by the program. There is very little need to change this from the
     default value of 0.

PAGESIZE
--------

Name
     PAGESIZE

Type
     Numeric

Description
     The size, in K, of the virtual memory pages. The larger this
     number, the more real RAM is used but the less frequent the
     accesses to the swap files (see Tooltype_TEMPDIR).

     At most, two of these pages will be allocated in RAM at any one
     time.

UNDOBUFFERS
-----------

Name
     UNDOBUFFERS

Type
     Numeric

Description
     The number of levels of undo / redo available. The larger this
     number, the more disk space is needed for the virtual memory swap
     files (this doesn't change the amount of RAM required).

APPICON
-------

Name
     APPICON

Type
     Boolean

Description
     Turns the AppIcon on the Workbench on or off. By having an AppIcon,
     users may double-click on the icon to bring the ImageStudio screen
     to the front or drop image files on it to load them.

COLOURPREVIEW
-------------

Name
     COLOURPREVIEW

Type
     Boolean

Description
     Switches between a greyscale and colour preview display. A colour
     preview can only be displayed when ImageStudio is run on screens
     with 16 colours or more. The colour preview will always use an
     ordered dither to enhance the display of the image, whereas the
     dithering can be turned off when using a greyscale preview (see
     Tooltype_COLOURPREVIEW).

     The value of the PREVIEWDITHER preference is ignored when using a
     colour preview - the colour preview is always dithered.

HELP
----

Name
     HELP

Type
     Boolean

Description
     Turns AmigaGuide help on or off. Turning on AmigaGuide help uses
     more RAM as some pages are kept in memory.

MODULECACHE
-----------

Name
     MODULECACHE

Type
     Boolean

Description
     Allows modules to be kept resident in RAM to speed up access times.

     Turning this option off forces all modules to be flushed from
     memory after they are used; this results in the program requiring
     very little memory but involves reading the modules off disk
     everytime they are required.

     Module caching on will leave the modules resident in RAM, making
     for faster access. If the Amiga's operating system starts to get
     really low on RAM, the modules are still flushed.

     All modules are flushed from memory when the program quits.

PREVIEWDITHER
-------------

Name
     PREVIEWDITHER

Type
     Boolean

Description
     Turns ordered dithering on or off in the preview window. Turning
     preview dithering off uses slightly less memory and is slightly
     faster than the ordered dither.

PREVIEWREDRAW
-------------

Name
     PREVIEWREDRAW

Type
     Boolean

Description
     Turns the redrawing of the image on or off in the preview window.
     Normally this is kept on, but ARexx scripts may wish to turn this
     off (see ARexx_PREF_SET) to speed up some processing.

SPLASHWINDOW
------------

Name
     SPLASHWINDOW

Type
     Boolean

Description
     Turns on or off the opening of the `About' window when the program
     starts up.

SCREENFRONT
-----------

Name
     SCREENFRONT

Type
     Boolean

Description
     ImageStudio starts up by keeping its screen behind all others. By
     turning this tooltype on, the screen is brought to the front after
     the startup initialisations have taken place.

Known bugs
==========

   Known bugs:

   * Using the freely distributable PNG IO module with ImageStudio can
     cause side effects with the Scripts/Edit and View/External
     options. This is being investigated.

     If this causes you problems, remove the PNG IO module from the
     ImageStudio modules directory and use the freely distributable PNG
     datatype to load PNG files (no save) until we fix the problem.

   * Calling AmigaDos commands from an ARexx script running from the
     `Scripts' floating palette sometimes causes the machine to freeze
     if the command fails and tries to print some text. To fix this,
     pipe the input and output of all commands to `NIL:' (see Common
     ARexx problems).

   * At the moment it is possible to run more than one ARexx script from
     outside ImageStudio and this will lead to the ARexx commands from
     the multiple scripts being mixed together. We don't know if it's
     possible to only run one script at a time externally. If you run
     all your scripts from inside ImageStudio, this will never happen.

   * Under Workbench2.x the checkbox and mutual exclude (radio button)
     gadgets don't scale with font size. This may lead to slightly
     strange looking windows with very small or very large fonts.
     Workbench3.x scales these gadgets correctly.

   * ImageStudio has problems when running with the MagicFileRequester
     (MFR) utility. It seems that ImageStudio uses some features of the
     ASL file requesters that are unsupported by MFR and this causes MFR
     to crash. *This is not our problem, we are not doing anything
     wrong*. We've tried to contact the author about this, but to no
     avail. We suggest that when using ImageStudio, MFR is not used.

   If you think you have found a bug not covered here, please contact
the authors to report it (see The authors).

UnCrash
=======

   ImageStudio comes with a small CLI utility called `UnCrash' which
can be useful in trying to recover image data from the virtual memory
swap files left after a crash. It is worth mentioning that there should
be *no way* in which ImageStudio should crash the computer; UnCrash is
for use when ImageStudio is running and an other program causes a crash
or there is a power cut, etc...

   UnCrash should be run immediately after the crash; running
ImageStudio again before running UnCrash may cause the original virtual
memory swap files to be overwritten.

   UnCrash needs the following information to recover a swap file:

  1. The filename of the ImageStudio virtual memory swap file. This will
     be located in the directory given by the TEMPDIR preference, and be
     called something like `IMAGESTUDIO.1'. Normally these files are
     deleted when ImageStudio quits, but if the machine crashes there
     is no way these can be automatically deleted.

  2. The filename of the output image file to be created. The output
     file is in the `VMEM' file format (see VMEM) which only ImageStudio
     will load.

  3. The width and height of the original image. ImageStudio will only
     swap out the raw image data when dealing with virtual memory;
     details like the image's number of colours, palette and size are
     not saved in the swap file so they must be provided by the user.

   UnCrash will always try its best to recover the swap file and create
a useable VMEM image file. Should you specify incorrect dimensions for
the image or the swap file has become damaged in some way, UnCrash may
produce warnings and ImageStudio may warn about the quality of the VMEM
file created by UnCrash.

   The following example shows how UnCrash could be used to recover a
640x480 virtual memory swap file after a crash:

     UnCrash Work:tmp/IMAGESTUDIO.3 ram:outimage.vmem 640 480

Common questions
****************

   If you have any questions about ImageStudio, make sure that it
hasn't already been answered below:

Common question 1
=================

     "Why doesn't ImageStudio support TIFF fully?"

   The TIFF module supplied with ImageStudio closely follows the
version 6 Baseline TIFF specifications, so it should handle most of the
common TIFF files. We will probably be improving the TIFF module in the
future, but to fully support the TIFF standard would be an enormous
amount of programming.

   As a side note, we originally were going to use the TIFFlib from
Silicon Graphics' Sam Leffler. After compiling the code, we had a
library (minus module code) of around 250K. We decided that this was
just too much code to include as a module (of similar size to the
ImageStudio executable itself!), so we wrote our own TIFF code. Bear in
mind that even the TIFFlib doesn't handle all of the TIFF v6
specification, although it does handle most cases.

Common question 2
=================

     "Will you be adding SHAM, PCHG ..."

   At the moment we have no plans to add SHAM or CTBL formats due to
their hardware dependence. PCHG will probably be added later.

Common question 3
=================

     "Can I turn virtual memory off?"

   ImageStudio will always work with virtual memory. If you are lucky
enough to have lots of RAM and you wish to use that instead of your
hard disk, simply put the temp. files in the ram disk (see
Tooltype_TEMPDIR). The overhead of using virtual memory from RAM is
negligible.

Common question 4
=================

     "What other programs have the authors written?"

   Andy and Graham have written "TextureStudio", a shareware Imagine3
format texture renderer. See TextureStudio, for more information.

   Andy has written "StickIt" - an Amiga equivalent of the `PostIt'
note; useful for reminding you of things to do.

   Graham has written "MultiSample" and "MooseDrive". Multisample is a
utility for converting to and from common Amiga / PC / Atari ST sound
sample formats. MooseDrive is a frantic "viewed from the top" car
racing game with multiple large scrolling tracks and the ability to
upgrade your car as you win races.

   All the above programs are available from PD libraries as well as
the Internet's `Aminet' servers.

Common question 5
=================

     "How much disk space do the swap files use?"

   If the image is colour-mapped, 1 byte per pixel is used. Therefore,
the total number of bytes used is calculated as:

     bytes used = image_width x image_height

   If the image is 16 million colours, 3 bytes per pixel are used.
Therefore, the total number of bytes used is calculated as:

     bytes used = image_width x image_height x 3

Common question 6
=================

     "What is the .dvi and .ps documentation?"

   ".dvi" files are created with TeX program and can be viewed or
printed with appropriate utilities. This allows any user with the TeX
system installed to print the documentation out on any type of printer.

   ".ps" files are raw PostScript and can be printed on any PostScript
printer simply be sending them directly to the printer.

Common question 7
=================

     "Will you be adding support for animations?"

   Adding animation support is possible, but very very low on our list
of priorities. If you require image processing of animations with
ImageStudio, we recommend that you obtain a copy of Marcus Moenig's
`MainActor' program. With a bit of ARexx glue, MainActor could split
the animation, pass the frames to ImageStudio for processing and then
join them back into an animation afterwards.

   MainActor is a shareware program available from all good PD houses.

Common question 8
=================

     "Can you write a general virtual memory program?"

   We have been asked many times about writing a general purpose
virtual memory program that can be used with *all* Amigas (i.e.
doesn't require an MMU). To the best of our knowledge, this is not
possible. Our virtual memory routines don't require a MMU because they
are internal to ImageStudio and ImageStudio knows which parts of memory
it is currently using and which are safe to swap out to disk.

   A general purpose virtual memory program has to trap processor in
structions and decide whether that particular part of memory needs to
be loaded in. It also has to make smart decisions as to which part of
least used memory can be swapped out. In order to trap these processor
memory accesses, a MMU is vital.

Common question 9
=================

     "Why don't you use a MUI for your windows design"

   `MUI', or `Magic User Interface', is a tool written by Stefan Stuntz
for designing font sensitive GUIs for Amiga programs.

   We do not use MUI for the same reason that we don't use any other
third party GUI software that requires runtime libraries. There are 2
main problems in using third party utilities:

  1. The user of ImageStudio is then expected to install extra software
     on their system just to get ImageStudio to run. In the case of
     MUI's installation, this can be be several hundred kilobytes of
     extra files.

  2. If at a later date a new version of the Amiga's operating system
     causes these third party products to fail, ImageStudio will also
     fail. We have been very careful in writing ImageStudio to adhere to
     Commodore's programming guidelines and therefore we see no reason
     why ImageStudio should fail to work with further operating system
     versions. Relying on third party products does not give us that
     confidence.

     In the very worst case that the author of third party product was
     unable or unwilling to update his / her software for the new operat
     ing system, ImageStudio would need to be re-written - not something
     we have any wish to do.

Common question 10
==================

     "Will you be releasing the module format"

   When the format of the modules is fixed we will release development
documentation describing how users may write thier own modules.
Currently the module format is liable to change, so it would be unwise
to release such information now.

The authors
***********

   ImageStudio is written by Andy Dean and Graham Dean.

   Queries should be sent to:

     Andy and Graham Dean,
     14 Fielding Avenue,
     Poynton,
     Stockport,
     Cheshire.
     SK12 1YX
     ENGLAND

   Andy can be reached for queries (no orders) via Internet Email at:

     adean@eleceng.ucl.ac.uk

   Note: This Email address may change after September 1995; the postal
address given above will remain valid.

   Graham can be reached for queries (no orders) via Internet Email at:

     ELA95GND@sheffield.ac.uk

   The rate at which ImageStudio progresses depends on a few things:

  1. You. If you like and use the program, please register it. If you
     like the program but think it is missing something that isn't
     already in our future additions list (see Future additions) *let
     us know!*.

  2. Other work. Graham is studying for a degree and Andy is finishing a
     PhD and this work will take priority (sad, but true).

   If you find a bug in ImageStudio that is not convered in the `Known
bugs' list (see Known bugs), please inform the authors at the above
addresses; don't assume that someone else will, we don't notice all the
problems ourselves.

   Please include as much information about the problem as possible,
including:

   * Version of ImageStudio and whether it is the 68000 or 68020
     version.

   * Amiga model.

   * Version of Workbench/Kickstart.

   * Amount of RAM (fast and chip), hard disk size and type, processor.

   * Any extra hardware boards you have connected to your Amiga.

   * Any utilities you are running at the same time as ImageStudio.

   * Whether the problem is repeatable or just occasional.

   * If you have Enforcer or Mungwall, do these report anything?

   We treat all bug reports with the utmost importance but it is
difficult for us to investigate problems with very little detail on how
they happen, so please, send us as much information as possible.

   If you are having problems loading a particular file into
ImageStudio, test whether it will load into any another package and if
possible whether other files created by the same program also give
problems. We cannot really test every faulty file, but if files created
by one particular program only give problems on ImageStudio then we'll
look into that.

   ImageStudio has been tested on:

   - A500, Workbench 2.04, 1Mbyte CHIP RAM, 2Mbyte FAST RAM, A590
     85Mbyte SCSI hard drive, Microbotics VXL*30 accelerator (no 32-bit
     RAM).

   - A1200, Workbench 3.0, 2Mbyte CHIP RAM, 8MByte FAST RAM, Power
     ViperI 68030 accelerator card, 68882 FPU, 270Mbyte IDE hard drive.

   - A4000/EC030, Workbench 3.0, 2Mbyte CHIP RAM, 8MByte FAST RAM, 68882
     FPU, 130Mbyte + 420Mbyte IDE hard drives, CyberVision64 (2MB)
     graphics card.

   ImageStudio shows no problems with either the Enforcer or Mungwall
debugging tools.

How to register
***************

   To receive the full version of ImageStudio, send 15 pounds sterling
(30 US dollars overseas) to:

     LH Publishing
     13 Gairlock Avenue
     Bletchley
     MK2 3DH
     ENGLAND
     
     larry@em.powernet.co.uk

   LH Publishing accept most types of payment, but if you have any
questions please don't hesitate to contact them first.

   Note: If you are sending cash, please make sure that it is well
wrapped in the envelope.

   In return you will receive the latest version of ImageStudio
complete with printed manual, along with a personal keyfile to unlock
the package. Each keyfile is unique to the registered user, please do
not distribute the keyfile to others as it can be traced back to you.
Allow a resonable time to allow cheque clearance, the processing of the
order, etc...

   Upgrades will be offered to registered users free of charge. As we
are now operating a keyfile concept, upgrades can be obtained by
getting the latest version from the Internet, Aminet, BBS's, PD houses
etc... If your local provider doesn't have the latest version, pester
them until they get it!

   Upgrades and orders will not now be given by contacting the authors
directly, unless there is a very good reason for it (we're sorry, but
we don't have the resources to deal with all the orders and upgrades
directly!).

   The version number of ImageStudio (see About) is to be interpreted
as:

     version.revision.subrevision

   The `version' shows the main version of the program, `revision' will
be increased as small additions and improvements are made to the
program. The `subrevision' value is incremented with bug fixes. All the
values are simple decimal, not floating point, so version 1.9.0 would
be followed by version 1.10.0.

   New versions will be distributed with every change in revision
number, bug fixes are likely to be distributed as "patches" (more
details to follow).

Credits
*******

   The authors would like to thank:

   * Escom / Amiga Technologies.

   * Commodore-Amiga.

   * Our beta testers.

   * Our parents, for their support (especially our mum for also helping
     with the posting and packing!!!).

   * Larry Hickmott, for his help and support and the time he's put into
     creating the printed manual.

   * Matt Dillon, for the `Dice' C compiler.

   * SAS Institute, for the `SAS/C' C compiler.

   * Ian OConner, for `The Designer' - used to do all the GUI windows de
     sign.

   * Michael Balzer, for `ARexxBox' - used to implement the ARexx port.

   * All those associated with the CyberGraphX retargetable graphics
     system.

   * Jonathan Forbes, for `LX' - used to decompress the .lha files in
     the distribution.

   * All the public domain / freeware / shareware authors, for loads of
     great software.

   * To those on the comp.sys.amiga.programmer newsgroup who've
     responded to our programming problems.

   * The Independant JPEG Group, for their essential JPEG code and in
     formation.

   * All those involved with the excellent TeX and `TeXinfo' packages.

Future additions
****************

   The following features will probably be added to future versions of
the packages (roughly in order):

   * Making the effects external modules.

   * Spare buffer.

   * Alpha channel buffer.

   * Aspect ratio correction in the preview window.

   * ARexx macro record.

   * Halftoning operators.

   * Image rotation.

   * Write a separate program used to build ARexx batch processing
     scripts by simply clicking on the actions you wish to perform.

   * Toolbar.

TextureStudio
*************

   Brief description:

   TextureStudio supports the loading of texture modules in Imagine3
format. The parameters of the texture can quickly and easily be
adjusted by means of slider gadgets or by typing in the numbers. The
texture can then be mapped onto a plane, cylinder or sphere and
rendered to a preview screen and/or as a 24-bit image to disk.

   Many aspects of the texture and render can be altered including axis
position/alignment/size, lighting settings, object colours, object size
etc.

   TextureStudio allows the user to quickly render the texture and
explore the effects of changing various parameters without the need to
ray-trace a new image each time something altered.

   TextureStudio can render images to disk in IFF-ILBM24, JPEG or Targa
format. This allows high quality images to be rendered and loaded into
other programs. 24-bit images of any size can be rendered, regardless
of memory available.

   Some example textures are included in the distribution but Imagine3
is required to be able to use it's textures.

   List of feature:

   * Supports Imagine3 texture format.

   * Control of features via ARexx port.

   * Render unlimited number of textures simultaneously.

   * Render to HAM screen and 24-bit images on all Amigas.

   * Render 24-bit images of any size onto disk in IFF-ILBM24, JPEG or
     Targa format, regardless of memory available.

   * Saving of HAM preview screen to disk.

   * Support for colour, filter and bump type textures.

   * Easy adjustment of parameters by means of slider gadgets.

   * Map textures onto a plane, cylinder or sphere.

   * Control of light colour, distance, position, backlighting and
     intensity.

   * Adjustment of axis alignment, size and position.

   * Control of object size, visible width and image aspect ratio.

   * Multiple pass render to allow quick preview of image whilst it
     renders.

   * 5 levels of anti-aliasing available.

   * Preview colours with colourbox window.

   * Alter render screens width, height and screenmode.

   * Control of all main functions from floating windows.

   * Optimised code for 68881 and 68882 FPU's for maximum speed.

   * Render plane, cylinder or sphere without any texture to quickly set
     up lighting etc.

   * Loading and saving of textures settings, parameters and axis
     positions.

   * Render preferences to alters speed and accuracy of render.

   * Configure window positions, screenmode, default settings and then
     save preferences to disk.

   * Runs on all Amigas with Workbench2.04 or above and an FPU (floating
     point unit).

   * Standard Workbench2 interface.

   * Uses public screen.

   Shareware version:

   The shareware version is limited in that only the first 8 parameters
of the texture can be adjusted. No other features have been removed.

   The full version allows all 16 parameters to be altered.

   See How to register, for details on how to register. Registration is
15UK pounds or 30US dollars.

