@database Wildfire
@$VER: Wildfire.guide V2.82
@node Main "Wildfire Documentation"

#################################################################
#                                                               #
#        Wildfire - an Animation-System for the Amiga           #
#                                                               #
#            Copyright © 1995-1997 WK-Artworks                  #
#                  All rights reserved                          #
#            Unauthorized Duplication Prohibited                #
#---------------------------------------------------------------#
#                                                               #
#                        Documentation                          #
#                                                               #
#################################################################



                   @{"  1. Introduction          " link introduction}
                   @{"  2. System Requirements   " link requirements}
                   @{"  3. Installation          " link installation}
                   @{"  4. Usage                 " link Usage}

                   @{"  5. Documentation         " link MainWindow}
                   @{"  6. PowerPlugs!           " link PowerPlugs!}
                   @{"  7. YAFA                  " link YAFA.guide/MAIN}
                   @{"  8. ARexx                 " link ARexx}

                   @{"  9. Known Bugs            " link Bugs}
                   @{" 10. Authors               " link Authors}
                   @{" 11. Copyright             " link Copyright}

                   @{" 12. Developer-Information " link Developer}
                   @{" 13. FAQ                   " link FAQ}

                   @{" 14. Shareware             " link Shareware}




Documentation-Authors : Andreas Küssner, Andreas Maschke
Last Changes          : Sunday 02-Mar-97
Version               : 2.82

@endnode

@remark TODO:
@remark  -Tutorials
@remark  -Developer-kit

@node Introduction
@{b}
---------------------------------------------------------------------

           Wildfire - where dreams become virtuality

            A Special Effect Program and many more

---------------------------------------------------------------------
@{ub}
Wildfire is not only another brandnew image-processing-program -
it's a professional animation-processor with some really new concepts.

It allows you for example the creation and processing of animations in
several formats, the generation of time-dependant special-effects
and the design of large projects containing several animations and
frame-synchronized sound-effects.

Because the common animation-formats on the Amiga have too many
lacks or restrictions we have tried to create a better one: YAFA.
This animation-format for example features many compression-methods
and realtime-zooming.

One of the outstanding features of Wildfire is the fact that it
makes for you no difference if you apply changes to a whole animation
or if you process only one image. A single image is only a
very special case of an animation.

In contrary to common image-processors you can use envelopes instead
of plain numbers as effect-parameters. This makes the easy creation
of time-dependant special-effects possible.
So you haven't to fight against the "do"-loops in an ARexx-script to
get an animation outside your image-processor anymore.

All of the numerous effects can be arranged in any number and
combination. Because the output of any of these effects can be
one of the 8 tempory-buffers Wildfire allows you to
PROGRAM IMAGES in an comfortable way !


Main Features:

  -fast and comfortable Converter:
    input:  YAFA, ANIM5/7/8, mpeg, image-sequences
    output: YAFA, ANIM5/7/8, image-sequences

  -Preview for almost any operation

  -Project-Editor which allows the creation of large and complicated
   projects easily using the mouse

  -Effect-Generator featuring time-dependant parameters via envelopes

  -a stunning library of effect-PlugIns

  -some really new effects, real 3D-effects, lightsources

  -superposition of 3D-effects (PowerPlugs!)

  -(un)loading of PlugIns at any time

  -Envelope-Editor

  -Timecodes-Editor

  -Transition-Maker for easy creation of transitions between two animations

  -easy-to-use Player-interface

  -Filmstrips to simplify the perfect timimg of huge projects

  -AnimInfo-function displaying size-profiles etc.

  -fontsensitive GUI without MUI

  -internal gadget-toolbox which handles mathematical expressions
   instead of only plain numbers

  -calculator which allows for example the export of user-defined symbols
   to the gadgets in the whole-program

  -Drag&Go
   (using drag.gadget 0.2  Copyright © 1996 Jörg Kollmann, see bonus drawer!)

  -ARexx-port with about 400 commands

  -macros, custom-windows, docks

  -import of images from other programs

  -Developer-Kit (with working example) which allows you to create
   your own effect-PlugIns

  -and many more

@endnode

@node Requirements

  @{b}Requirements@{ub}

  @{u}Hardware@{uu}
    -Processor:    68020
    -Graphics :    AGA or gfx-board (The program may work with ECS
                   but this is not recommended)
    -Memory   :    FastRAM is strongly recommended but actually
                   not required
     Most of the effects (even transitions between two animations!) run
     on an standard 2 MB A1200!

  @{u}Software@{uu}
    -operation system V39 (3.0)
    -XPK compression system (xpkFAST recommended)

  The program was successfully  tested  on A1200 (030, 060) and
  A4000 (030, 040) with several disk and memory configurations.

@endnode

@node Installation

  @{b}Installation@{ub}

  Normally the installation is done by executing the supplied
  installer-script. If this doesn't work (sometimes the
  installer-program hangs up on my system) the installation can
  be done by hand easily.
  Just move all files extracted from the "Wildfire-Main"-archieve into
  one drawer, e.g. into a drawer called "Wildfire". After that locate the
  file "Wildfire.config" and move into "envarc:". That's it.

  @{b}File-Hierarchy@{ub}

    Wildfire
    +---system               -private files
    |   +---plugIns            *PlugIns-rootdrawer
    |   |   +---operators        operators for the processor
    |   |   +---general          general PlugIns
    |   |   +---system           preferences for all types of PlugIns
    |   |   \---savers           savers and loaders
    |   +---images             *icons for the icon-manager
    |   +---filmstrips         *filmstrips for the Transition-Maker
    |   \---help               *some text-files
    +---alpha                -alpha-images
    +---trash                -temporary files
    +---expressions          -expressions and symbols for the calculator
    +---profiles             -size-profiles of animations
    +---YAFAOptions          -YAFA-Compressor-settings
    +---annotations          -annotations and text-files
    +---convolutions         -matrix-settings for the Convolve-PlugIn
    +---doc                  -documentation and online-help-files
    +---envelopes            -envelopes for the Processor
    +---filmstrips           -Filmstrips
    +---images               -Images
    +---macros               -ARexx-Macros
    +---processes            -Processor-scripts
    +---projects             -Video-projects
    +---sessions             -Converter-sessions
    +---variables            -Variables for the Processor
    \---windows              -Custom-windows
@endnode

@node Bugs

  @{b}Known bugs@{ub}
   -Sometimes the program may crash if you run out of memory
   -3D-operators: Sometimes the program hangs up if the camZ-value 
                  is smaller than the image-dimension. Such small
                  values cause impressive views at some rotation-
                  angles so no range-checking is done.
@endnode

@node Authors

  @{b}Wildfire, Parts of the YAFA-concept, Animations@{ub}

  Andreas Maschke  (WK-Artworks)
  Zenkerstraße 5
  06108 Halle/Saale
  Germany

  EMail: epgbc@cluster1.urz.Uni-Halle.DE

  @{b}Player, YAFA-concept, Ideas@{ub}

  Michael Henke  (Smack/Infect)
  Praetoriusstr. 1/205
  06124 Halle/Saale
  Germany

  EMail: epgbd@cluster1.urz.Uni-Halle.DE


  @{b}Ideas, Documentation, Moral Support, Beta-Testing:@{ub}

  Andreas Küssner
  Bernard Krone Str. 15
  48480 Spelle
  Germany

  Tel.: ++49(0)5977/939249

@endnode

@node Copyright

@{b}Copyright@{ub}

The program WF is Copyright (c) 1996-97 WK-Artworks (Andreas Maschke).
All rights reserved.
Commercial use is prohibited, if you want to use it for commercial purposes
you have to get an explicit permission from the @{"author" link Authors} first.


Wildfire is released as @{" Shareware " link shareware}. There are two different versions:

@{u}Unregistered Demo-Version:@{uu}
It is allowed to charge a fee to recover distribution costs, but no profit
may be made by selling or otherwise distributing the program.  It is not
allowed to distribute only parts of the package or a modified program.

@{u}Regisered Version:@{uu}
The unregistered version is turned into a registered one if you use
a personalized key file that registered users receive from me.
It's strictly forbidden to give the registered key file
to other users ! Giving the key file to other users, using key files that
you did not receive directly from me for your personal use is
considered as an act of software piracy !



It is not allowed to disassemble or otherwise reverse engineer
any part of one of the Wildfire-related programs.

@{b}Disclaimer@{ub}

No guarantee is given nor implied that this program is fit for any use.
The program and the information within this text are provided on "AS-IS"
basis. The entire risk as to its quality and performance is with the user.
In no event will the author be liable for direct, indirect, incidental or
consequential damages resulting from any defect in the program. The author
reserves the right to make changes to the program or the documentation
without notice.

@endnode

@node shareware

@{b}Shareware@{ub}

Because the demoversion has all features of the full version you can test
everything before you decide to buy the program.
The only restriction of the demoversion is the fact that all
dynamically alloceated memory will be stored until you quit the
program.
This way gives you the possibibily to test all program-features before
registering.

The price for the full version of WildFire is 50,00 DM or 40,00 US-$. Just
compare WildFire to other programs yourself and you will know what to do ...

The price for @{" PowerPlugs!" link PowerPlugs!} is the same.
If you already got registered for Wildfire and want to obtain PowerPlugs!
separately you have to specify your serial-number which may be obtained
from the @{" Info-Window " link InfoWindow} of the program.


There are two possibilities to buy Wildfire and/or PowerPlugs!.

@{b}1.@{ub} Send the money in a letter to:

     Andreas Küssner
     Bernard Krone Str. 15
     48480 Spelle
     Germany

Please write down your full NAME and ADDRESS and the COMPUTERTYPE you use.
You`ll get the latest WildFire Version and your personal wildfire.library.
Please write down where you got the Demo-Version from.

@{b}2.@{ub} Send a letter to:

     Andreas Küssner
     Bernard Krone Str. 15
     48480 Spelle
     Germany

Please write down your full NAME and ADDRESS and COMPUTERTYPE you use.
You`ll get the latest WildFire Version and your personal wildfire.library.
Please write down where you got the Demo-Version from.

Transfer the money to the following account:

     Bank  : HYPO-BANK Halle/Saale
     BLZ   : 8602 0880
     KTO   : 5100 1479 14
     Owner : Andreas Maschke

Please write as usage:

     <Your Name + City>
     Wildfire Registration


Send your transfer-receipt inside the letter to A. Küssner.

-------------------------- cut --------------------------

                       WildFire registration



Name:          ____________________________

Street:        ____________________________

City:          ____________________________

Country:       ____________________________

Ser:           ____________________________



Computertype:  Amiga _________

OS-Version:    _______________

Processor:     68___ ___ MHZ

Coprocessor:   _____ ___ MHZ

Memory:        ____ MB Fast  ____ MB Chip

HD-Space:      ____ MB

Zip/Syquest:   ____ which type? _____________________

CD-ROM:        ____ x speed


Where did you got the demo version from? _______________________


Wildfire registration fee:

50,00 DM  ____   or   40,00 US-$ ____ included in letter.  ____ (yes/no)


PowerPlugs! registration fee:

50,00 DM  ____   or   40,00 US-$ ____ included in letter.  ____ (yes/no)




Money transferred to                                       ____ (yes/no)

Bank:     HYPO-BANK Halle/Saale
BLZ:      8602 0880
KTO:      5100 1479 14
Owner:    Andreas Maschke

please write as usage:

<Your Name + City>
Wildfire Registration


Send your transfer-receipt inside the letter to A. Küssner!


-------------------------- cut ------------------------------------

@endnode

@node Usage

@{b}Usage@{ub}

The program can be directly started from the Workbench or
by typing "wf [options]" in a shell-window.

Most operations can be done both using the mouse and the keybord.
There are no menus because the AGA-hardware is too slow to
render pulldown-menus on a screen with 32 or more colors.
But 16...64 colors are recommended using the preview-function
which is one of the major features of the program.
The other reason is the fact that Wildfire has too many functions
to put them into menus without a very complex hierarchy.

@{b}Options@{ub}

 -h     : exit the program after displaying some informations
 -debug : turn on debug-output

@endnode

@remark /*************************************************************/
@remark /*
@remark                                 Main
@remark */
@remark /*************************************************************/

@node MainWindow

@{b}The Main-Window@{ub}

After initialization Wildfire opens it's Main-Window on a screen of
your choice.
All major program parts like the Processor or the Preferences-Editor
can be reached from within this Window.

Because Wildfire has a lot of functions and windows there is a
window-hierarchy. E.g., after closing the Converter-Window all
subwindows like the PictureList-Window or the YAFAAnimOptions-Window
are closed automatically.
Because the Main-Window is on top of the hierarchy you can quit
the program by closing it.

Another function of the Main-Window is to act as an icon-manager
like Workbench. For almost all files affected by the program like
animations, envelopes, images, ... an icon is created automatically
and placed on the Icon Area.
After moving such an icon into another window a filetype-specific
operation is performed.

@{b}Functions:@{ub}


                                                    @{" Converter   " link ConverterWindow}
                                                    @{" Projects    " link ProjectsWindow}
                                                    @{" Processor   " link ProcessorWindow}
                                                    @{" Player      " link PlayerWindow}
                                                    @{" TMaker      " link TMakerWindow}
                                                    @{" Preferences " link PreferencesWindow}
                                                    @{" PlugIns     " link PlugInsWindow}
                    @{" Icon Area " link IconArea}
                                                    @{" Icons       " link IconsWindow}
                                                    @{" DWA         " link DWAWindow}
                                                    @{" Log         " link LogWindow}
                                                    @{" Info        " link InfoWindow}
                                                    @{" Quit        " QUIT}
@{"   Add   " link IconFunctions} @{" Cleanup " link IconFunctions} @{"  Reset  " link IconFunctions} @{"  Load   " link IconFunctions} @{"  Save   " link IconFunctions}

@endnode

@node IconArea

@{b}Icon Area@{ub}

The Icon Area of the Main Window acts as a desktop. You can place,
move or put files on it.

There are four special icons which are initialized at startup
automatically. If you drop a file-icon over one of these icons a
filetype-specific operation is performed.

Trashcan:  To delete icons and files. The default is to delete the
           icons only. This behaviour can be changed from within
           the @{"Icons-Window" link IconsWindow}.

Player:    To play animations.

Viewer:    To display images.

Editor:    To edit or view textfiles.

The external programs envoked can be specified from within
the  @{" Preferences-Window" link PreferencesWindow}.



On the bottom of the Main-Window there some addional functions which
deal with icons:

@{" Add " link IconFunctions} @{" Cleanup " link IconFunctions} @{" Reset " IconFunctions} @{" Load " link IconFunctions} @{" Save " link IconFunctions}
@endnode

@node IconFunctions

@{b}Add@{ub}

Using this function you can put one or more external files on the
desktop.
For example you could select 20 images to drop them sequentially
over the Viewer-icon and delete the ugly ones.

@{b}Cleanup@{ub}

After pressing this button the Icon Area is cleanup up.

@{b}Reset@{ub}

This function removes all file-icons from the desktop and
puts the four special icons on it.

@{b}Load@{ub}

The Load-function restores a previous saved desktop.
To make this operation as simple as possible a default
filename is used. This filename can be changed from
within the @{" Icons-Window " link IconsWindow}.

@{b}Save@{ub}

This saves the contents of the whole desktop as the file
specified in the @{" Icons-Window " link IconsWindow}.
@endnode

@remark /*************************************************************/
@remark /*
@remark                            Converter
@remark */
@remark /*************************************************************/

@node ConverterWindow

@{b}Introduction@{ub}

The Converter is the program part which has to do the most
hard jobs.
It reads in a stream of data, performs some or many special
effects on it and writes the results to harddisk.
Unlike to common programs there is only a small difference
for the user to perform easy or very complex operations.

Example:
1. You want to convert a mpeg-animation into an IFF-Animation.
   This is easy. Selected the input- and the output-file, adjust
   the compression-parameters and press the "Convert"-button.
2. You want to scale down the input frames because you
   have not enough diskspace.
   This is easy. Just enable the Processor, open the Processor-Window
   and add a "Halve"-effect. That's all.
3. You want to convert only some of the images, e.g. frames 31...54.
   This is easy. Just open the CRange-window and enter these numbers.
4. You want to have a small animation in front of a large background.
   This is easy. Enable the processor and use a "LoadImage"- and
   a "Compose"-effect. That's all again.

I could write thousand of such examples here - all of them where
easy to realize.

@{b}Converter-Window@{ub}

@{u}Input@{uu}

Type               Select the type of input: "Animation", "SinglePictures"
                   or "BlackFrames"
Info               Display some type-dependant information about the
                   input-animation
Related Options    Open one of the optionswindows @{"PictureList" link PictureListWindow}
                   or @{"BlackFrames" link BlackFramesWindow} depending on the type of input

@{u}Output@{uu}

Type               Select the type of output: "YAFA", "ANIM", "SinglePictures"
                   or "NIL:"
Info               Display some type-dependant information about the
                   generated output-animation
Related Options    Open one of the optionswindows @{"YAFAOptions" link YAFAOptionsWindow},
                   @{"IFFOptions" link IFFOptionsWindow} or @{"SinglePictures" link SinglePicturesWindow}

@{u}Options@{uu}
Annotation         Optional annotation string or file to include in a YAFA-animation
Range              Open the @{"CRange-Window" link CRangeWindow} to specify the
                   range of the input-stream to be processed
Preview            Select the preview-type (none/window/screen)
Processor          Enable the Processor to modify the input-stream

@{u}Operation@{uu}

Save Session       Save all options including the current window-settings
                   and the Processor-settings as the specified session-file
Load Session       Restore a previously saved session
Convert            Start the converter

All combinations of input- and output-streams are possible. A special
case is input=output=SinglePictures. This feature is not obsolete,
it allows you to create a sequence with numbered filenames from
pictures having different locations.
If you specify "NIL:" as output-stream no frames are written. This feature
is especially usefull for testing complicated Processor-scripts.

The Converter can be aborted at any time - in the most cased the
cancelled output-stream will be usable.

@endnode

@node CRangeWindow

@{b}CRange-Window@{ub}

From within this window the range of the processed input-stream is
specified.

@{b}Functions@{ub}

State         Enable/disable the current range-settings
From          First frame
To            Last frame, if a negative value is specified the number
              of input-frames is decremented by this value
Step          Range-step, usefull for example to skip every 2nd frame
Remove loop   A preset to skip the looping frames of an IFF-animation

If the range is disabled the whole input-stream is processed.

@endnode

@node IFFOptionsWindow

@{b}IFFOptions-Window@{ub}

This window let you select various settings for IFF-animations
to be generated.

@{b}Functions:@{ub}
Related Options:

Type        Compression type
Colormap    Dynamic or static colormap
Screenmode  Screenmode used while playing the animation

@endnode

@node SinglePicturesWindow

@{b}SinglePictures-Window@{ub}

Using this window you can set up some options which
affect the generation of single pictures.

@{b}Functions:@{ub}

Basename       base-filename for the generated files, the frame-number
               will be appended in the format ".%04d",
               e.g. "ram:pic" -> "ram:pic.0001", "ram:pic.0002"...
Shift Frames   Value to add to the frame-number before generating
               the filename
Screenmode     Screenmode used while displaying the frames
Type           Toggles rendering on or off.

@endnode

@node YAFAOptionsWindow

@{b}YAFAOptionsWindow@{ub}

This window lets you adjust the various settings for YAFA-animations
to be generated.

@{b}Functions:@{ub}

Image data        Internal representation of the image-data
Colormap          Dynamic or static colormap
Force Timecodes   Force the creation of timecodes even they are all equal
Speed             Speed-preset for the Player (fps=50/speed on Pal)
Post Compression  Turn on xpk-post-compression
Compressor        Select xpk-compressor
Mode              Select xpk-compression-mode, see xpk references for
                  more details
Delta Compression Choose the type of delta compression
UC-Frames         Choose the number uncompressed delta-frames
UC-Mode           Choose the type of uncompressed delta-frames
Analysis          open the @{"Analysis-Window" link AnalysisWindow} to check out
                  some predefined combinations of settings.
Import            Extract the settings from an external YAFA-animation
Load              Load a previous saved settings-file
Save              Save all YAFA-settings into a settings-file

@endnode

@node AnalysisWindow

@{b}Analysis-Window@{ub}

The functions of this window are useful if you have no idea about the
meaning of the various parameters. It creates some animations using
some predefined settings and displays the resulting size-profiles.
After that the settings of the smallest generated animation is selected
and can be applied to the YAFAOptions-Window.

@{b}Functions:@{ub}

Frames        Number of frames generated for every test
Run test      Start the test
Results       Displays some informations like the output-size
              and the used settings for every generated animation
Size Profile  Displays a size-profile for every generated animation, the
              one of the selected animation is highlighted
Use           Apply the settings of the selected animation to the
              YAFAOptions-Window
@endnode

@node PictureListWindow

@{b}PictureList-Window@{ub}

The picturelist has many features to create and manipulate a
list of pictures to be converted.

@{b}Functions:@{ub}
Add          Add one or more pictures
Add Reverse  Add one or more pictures in reverse order
Add Dir      Add a whole directory
Sort         Sort the complete list
Check        Remove non-ILBM files and pictures that don't fit the
             first entry's dimensions (width, height, depth) from list,
             this functions makes only sense if the Processor is 
             turned off
Remove       Remove selected item from list
Remove Range Remove all items inside the selected range from the list
Set Timecode Set the timecode for selected item
Time Range   Set timecodes for all items inside the specified range
Show         Display the selected picture
Picture Info Display some informations about the selected item
From         First item of the range
To           Last item of the range
Step         Step of the range, e.g., a value of 2 skips every 2nd frame

@endnode

@node BlackFramesWindow

@{b}BlackFrames-Window@{ub}

The BlackFrames-Window is usefull if you want to render an animation
using only Wildfire. An example would be a rotating cube with some
pictures mapped on it.

@{b}Functions@{ub}

Frames     Number of the frames to be generated
Width      Width of the frames
Height     Height of the frames

The BlackFrames-stream is some kind of a simulation of a real
picturelist or input-animation. The most important field is the number
of frames. If the Processor-script doesn't use the generated input
its recommended to make the size-values very small, e.g. 32x20.


@endnode

@remark /*************************************************************/
@remark /*
@remark                            Projects
@remark */
@remark /*************************************************************/

@node ProjectsWindow

@{b}Projects-Window@{ub}

The animation-projects created with this editor are arrangements of
YAFA-animations and music modules, samples and executables.
Projects are saved as text files which can played from within
the @{"Player-Window" link PlayerWindow} or directly envoking the YAFA-Player "yp"
with the "-batch"-option.

Projects are the perfect choice if you want to create huge videos
because the YAFA-system has the capability to play more small animations
as one without any gaps.
Another advantage is the fact that you can apply changes to such
a project much easier than to a single huge animation.

@{b}Functions:@{ub}

@{u}Animations@{uu}

Add            Include a YAFA-animation (*)
Kill           Remove the selected animation from the list
Replace        Replace the selected file
Up/Down        Move selected item up/down in the list
Local Range    Specify the first first and last frame to be played
                Example: the selected animation has 100 frames
                         1, 100  - exactly one shot
                         11,  50 - skips first 10 frames, plays 40 frames
                         51, 250 - plays the complete animation exactly
                                   two times, start/end are moved by 50 frames
Global Range   Shows range as global frame numbers in the project
Info           Display some information about the selected animation
               and let you adjust some settings similar to the @{"Player-Window" link PlayerWindow}
Filmstrip      Open the @{"Filmstrip-Window" link FilmStripWindow}


@{u}Sounds@{uu}

Add            The same like (*) for modules, samples or executables
Kill           Dito
Replace        Dito
Global Range   Set global frame numbers to start/stop playing selected sound.
               An executable will be started when the player reaches the start
               value.
               A special case is the range  0,0 for executables. These
               commands will be executed before the YAFA-Player shuts down
               intuition - so  you can use commands that have an output
               (like a cd-player)
Type           specify the type of sound-effect
Edit           open one of the edit-windows @{"Module" link ModuleWindow}, @{"Sample" link SampleWindow} or @{"Command" link CommandWindow}

@{u}Project@{uu}

Frames         Shows the number of frames the whole project consists of
Play selected  Play project starting with the selected item
Play all       Play the whole project
Profile        Open the @{"Profile-Window" link ProfileWindow}
Identify       Calculate animation and frame number from a global frame number
Save All       Save all frames played in the project using the picture
               basename specified in the @{"Converter" link ConverterWindow}
Clear          clear the whole project
Project File   select file to load/save

@endnode

@node ProfileWindow

@{b}Profile-Window@{ub}

The Profile-Windows is  made to visualize the ranges of animations
and sounds of a project.

@{b}Functions@{ub}

Animations     Shows bars representing the global ranges of the animations
Sounds         The same for sound-effects
Size-Profile   Show a size-profile of the whole project
Full View      Scale the bars horizontally to fit the whole project in
               the window
Lines          Number of visible lines, the best choice depends on the
               used font

Because the range of a particular animation effects the whole project
it can not be changed from within this window. But you can set ranges
of sound effects using the mouse:

Left Button    Drag startpoint
Right Button   Drag endpoint

@endnode

@node ModuleWindow

@{b}Module-Window@{ub}

This edit-window appears if the selected item is a protracker module
which will be played with the internal player.

@{b}Functions:@{ub}

File        Filename which can be changed here
Test        Hear the module
Stop        Stop playing

@endnode


@node SampleWindow

@{b}Sample-Window@{ub}

If the selected sound-effect is an IFF 8SVX sample this window appears.

@{b}Functions:@{ub}

File        Filename which can be changed here
Test        Hear the sample
Channel     Select the audio channel (ignored when playing stereo samples)
Repeat      How often the sample is played, a value of 0 causes an
            endless loop
Volume      Adjust the volume
Stop        Stop playing

@endnode

@node CommandWindow

@{b}Command-Window@{ub}

This window is for editing commands.

String        The command you want to execute. You can type in whatever
              you want, e.g.
               "rx ARexx:EP_LoadModule.rexx Music:CUST.Electricity" or
               "CDPLAY 4" or
               "delete s:startup-sequence"
Test          To execute the command.


@endnode

@node FilmStripWindow

@{b}Filmstrip-Window@{ub}

From within this window you can create, modify and play filmstrips.
A filmstrip is a small representation of a single animation
or a whole project. Such filmstrips are for example played
in the middle the TMaker-Window.

@{b}Animation@{ub}

Animation     Filename of the animation or project to be converted
From/To/Step  Range changes the pictures which will be used for the film
Width         The width of the filmstrip
Color         Type of palette to be generated
Update        Start converting

@{b}Film@{ub}

Film          Filename of the Filmstrip
Rows/Cols     Specifys the layout while displaying or playing
Load/Save     Load/save a filmstrip
Play          Play the selected filmstrip as movie, to change the
              speed use the numeric keys
Append        Append the selected filmstrip to the current (displayed) one

@endnode
@remark /*************************************************************/
@remark /*
@remark                            Player
@remark */
@remark /*************************************************************/

@node PlayerWindow

@{b}PlayerWindow@{ub}

This window acts as a GUI for the external animation players like
the YAFA-Player "yp".
Some of the functions are only available for YAFA-animations.

@{b}Animation@{ub}

File          filename of a single animation or a Wildfire-project
Display       select the realtime-transformations done by the YAFA-Player
Cache         don't play YAFA-animations directly from harddisk
FrameBuffers  cache-buffer for the YAFA-player
LoadBuffer    load-buffer for the YAFA-player

@{b}Information@{ub}

Animation     show type-specific informations about the selected animation
Shortcuts     show the shortcuts of the YAFA-player

In case of YAFA- or IFF-animations a size-profile and some informations
about the used compression is displayed.
The @{" Timecodes-Window " link TimeCodesWindow} can be reached from this Window, too.

@{b}Player@{ub}

Output        select the type of display for the YAFA-player
Wait          after setting this option the YAFA-Player waits for a
              SPACE-press before playing

@endnode

@node TimeCodesWindow

@{b}TimeCodes-Window@{ub}

This window allows you to modify the timecodes of YAFA- and
IFF-animations. A special feature is importing/exporting
files. This makes it possible to modify timecodes graphically
using the @{" Envelope-Editor " link EnvelopeWindow}.

@{b}Functions:@{ub}

From, To, Step    range to be modified
Set Timecode      set a single timecode
Time Range        change all timecodes inside the specified range
Import            import timecodes from a file saved by the Timecodes-Editor
                  or from within the @{" EnvelopeAdvanced-Window " link EnvelopeAdvancedWindow}
Export            save the current timecodes to disk
Show              show the selected frame of the animation
Play              play the whole animation to test the changes
@endnode

@remark /*************************************************************/
@remark /*
@remark                            TMaker
@remark */
@remark /*************************************************************/

@node TMakerWindow

@{b}TMaker-Window@{ub}

The transition maker creates various predefined transitions between
two animations also known as "wipes". This feature is very useful in
conjunction with animation-projects.
It's recommended to install the example-filmstrips which show
two animations (called "A" and "B") and the selected transition
from "A" into "B" (called "A->B") as small animations in the middle
of the Transition-Window. The Filmstrip-Player is implemented as a
background-task at low priority so no cpu-time is wasted.

Because only YAFA-animations can be arranged in animation-projects
only this output-format is supported yet.

@{b}Functions:@{ub}:

Input1         Input animation 1
Input2         Input animation 2
Output         Output animation (the transition)
Temp           A directory used for the temporary files which will be
               created while rendering
CreateEX       If you have only the small installation of Wildfire without
               transition-filmstrips this button will create them for you.
               To test if you have the example transitions just enable
               the "Example"-option. After that three animations should
               appear in the middle of the window.
               If they doesn't you may create them by pressing the
               "CreateEX"-button.
YAFAOpts       Adjust the YAFA-compressor-options
Preview        Turn preview on/off
Example        Turn example-movies on/off
               Because this features runs at low priority it may be
               always switched on.
Type           Select the main type of transition
Subtype        Select the subtype of the selected transition
CreateTemp     Create the temporary files
               This files have to be generated only once for a pair of
               input-animations. So you can test various transitions very
               quickly.
               The "Convert"-function creates them automatically if necessary.
KillTemp       Deletes all temporary files.
Play           Play the animation-sequence "anim1 - transition - anim2"
Convert        Create the transition

@endnode

@remark /*************************************************************/
@remark /*
@remark                            Preferences
@remark */
@remark /*************************************************************/

@node PreferencesWindow

@{b}Preferences-Window@{ub}

The Preferences-Window lets you specify most of the program-settings
and handle different settings for different purpose. All modified
settings are active immediately - there are no "Use"- or "Cancel"-
gadgets.

@{b}Functions @{ub}

ScreenType         choose the type of the Wildfire-screen
Screenmode         choose the screenmode
DisplayScreenmode  choose the screenmode for displayed images
ScreenFont         select the font for the Wildfire screen
IconManagerFont    select the font for the Icon Manager
ScreenColors       select the colors for the wildfire screen
Preset             some color-presets. "WF (modern)" is the default
Import             load colors
Export             save colors
PlayerScreen       name of the public screen for the YAFA-Player
DClickTime         time for a double click
Statistics         turn on/off the generation of Player- and
                   Converter-statistics
Expertmode         turn on/off safety-requesters
BrutalBlit         faster blitting
OpenDWA            open the @{" DWA-Window " link DWAWindow} at startup
Paths              open the Paths-Window
Macros             open the Macros-Window
File               the filename of the current Preferences-file
Save               save the current settings
Load               load the specified settings


@{b}Paths-Window @{ub}

From within this window the default paths for animations, pictures, ...
and the external programs are specified.

YAFA Player          player for YAFA-animations (default: "c:yp")
Anim Player          player for ANIM-animations (default: "c:vt")
MPEG-Player          player for MPEG-anims      (default: "c:mp")
ImageProcessor       external image-processor   (default: "ADPro mm=1000000")
Viewer               image-displaying program   (default: "c:visage")
Editor               text-editor                (default: "c:ed")

The "ImageProcessor"-setting is only used by the "ARexx"-Operator-PlugIn.

@{b}Macros-Window@{ub}

In this window the ARexx-macros executed after pressing on
of the function-keys can be specified. Because there are only
10 function keys and maybe lots of macros the <F10>-key
is reserved. After pressing it a filerequester appears
and lets you select the macro to execute.

@endnode

@remark /*************************************************************/
@remark /*
@remark                            Icons
@remark */
@remark /*************************************************************/

@node IconsWindow

@{b}Icons-Window@{ub}

The Icons-Window has three major functions: changing filetypes
of icons on the desktop, setting up of some desktop-specific options
and creating of icons with nearly unlimited size and quality.

@{b}Options:@{ub}

File               filename of the desktop-files
Trashcan-Action    lets you selected if you want to remove only
                   icons or icons and files


@{b}Icon-Saver:@{ub}

Image1             filename of the first (normal) image of the
                   icon to be generated
Image2             optional 2nd image
Icon               icon-file to be generated
Color              sets the type of palette to be generated
Width              specified the icon-width, the height depends
                   on the aspect of the 1st image
Depth              number of colors used for rendering
Convert            After pressing the convert-button the images
                   are loaded, scaled and rendered using the
                   current screen-palette. If you want to create
                   icons for the Workbench you have open Wildfire
                   on the Workbench-screen (temporary). If you want
                   to create icons in high quality use a very high
                   screen-depth and convert the created icons into
                   NewIcons later.

@{b}Change the filetype:@{ub}

If Wildfire didn't recognise the type of an external file correctly
you can change this type by simply dragging the icon into the
Icon-Window. After that a requester displaying the current and
the available filetypes will appear.

@endnode

@remark /*************************************************************/
@remark /*
@remark                              DWA
@remark */
@remark /*************************************************************/

@node DWAWindow

@{b}DWA-Window@{ub}

The DWA-Window allows you to access windows directly. This may
help you to locate special functions in a faster way. After selecting
a window and pressing the <enter>-key the selected window
and all windows which are on top of it in the window-hierarchy are opened.

If you set the "OpenDWA"-option in the @{"Preferences-Window" link PreferencesWindow}
the DWA-Window will be opened at startup automatically.

@endnode

@remark /*************************************************************/
@remark /*
@remark                              Log
@remark */
@remark /*************************************************************/

@node LogWindow

@{b}Log-Window@{ub}

All statistics, warnings and some additional informations are
collected and displayed in this window.
Of course this feature can be turned off.

@{b}Functions@{ub}:

State           toggle logfile-generation on/off
Edit            edit the logfile
Delete          delete the logfile
Clear           clear the logfile
Load            load the logfile
Save            save the logfile
Verbose         toggle verbose-mode on/off
SaveAtExit      toggle saving of the logfile at program-exit on/off

@endnode


@node InfoWindow

@{b}Info-Window@{ub}

This window displays some useful informations like the available
memory, the date, the amount of currently allocated memory
and program-informations.

@endnode

@remark /*************************************************************/
@remark /*
@remark                            PlugIns
@remark */
@remark /*************************************************************/

@node PlugInsWindow

@{b}PlugIns-Window@{ub}

The PlugIns-Window gives you control over external Wildfire-programs
known as "General PlugIns".

@{b}Functions@{ub}

Add           add one or more PlugIns
Delete        unload the selected PlugIn
SavePrefs     save the settings of a PlugIn
Open          activate the selected PlugIn
Close         deactivate a PlugIn

The "SavePrefs"-function saves the PlugIn-state and some private-date.
If the PlugIn was open while saving it will be activated
next time automatically.

@{b}Available PlugIns@{ub}

 @{"  ColorWheel     " link ColorWheelPlugIn}
 @{"  Command        " link CommandPlugIn}
 @{"  ConvertImages  " link ConvertImagesPlugIn}
 @{"  CountPlugIns   " link CountPlugInsPlugIn}
 @{"  EPSSaver       " link EPSSaverPlugIn}
 @{"  GrabWindow     " link GrabWindowPlugIn}
 @{"  TileImage      " link TileImagePlugIn}
 @{"  SlideShow      " link SlideShowPlugIn}

@endnode

@node ColorWheelPlugIn

@{b}ColorWheel-PlugIn@{ub}

The ColorWheel-PlugIn was made to simplify the selection of the right
colors for the various operators.
Just select a color of your choice and use the values indicated at
the bottom of the window as effect-parameters.

@endnode

@node CommandPlugIn

@{b}Command-PlugIn@{ub}

The Command-PlugIn executes the supplied input-string as
Wildfire-ARexx-command.
This may be useful while creating complicated macros
or simply to test out how a particular command works.

@endnode

@node ConvertImagesPlugIn

@{b}ConvertImages-PlugIn@{ub}

The ConvertImages-PlugIn converts a drawer of images keeping
all filenames. No special-effects can be applied.
This is for example useful if you have a drawer with lots of
jpeg-, tiff-, iff-, ... images and you want them all in png-format.

The file-tag can be specified using the "Extension"-gadget - if
this field is left blank the filenames are not changed.

The output-format is selected as usual in the @{"Savers-Window" link SaversWindow} of
the Processor.

@endnode

@node CountPlugInsPlugIn

@{b}CountPlugIns-PlugIn@{ub}

The CountPlugIns-PlugIn shows some statistics about the initialized
PlugIns including Operators, Savers and General PlugIns.
This trivial thing was created as example for the developer-
kit which will be available soon.

@endnode

@node EPSSaverPlugIn

@{b}EPSSaver-PlugIn@{ub}

The EPSSaver-PlugIn converts any picture which can be read
by Wildfire into an eps-file which can be included into
TeX-documents or directly processed by ghostscript.

@{b}Functions:@{ub}
 Input		input-image
 Output		eps-file to be generated
 Resolution	resolution in dpi
 Type		output-type: Gray, Color or Black&White

@{b}Notes:@{ub}
 1. This PlugIn replaces my iff2eps-package.
 2. The eps-files created by this PlugIn are uncompressed and therefore
    highly portable.
 3. The eps-image will be centered on a normal A4-page automatically.

@endnode

@node SlideShowPlugIn

@{b}SlideShow-PlugIn@{ub}

The SlideShow-PlugIn allows you to create slideshows easily.
There are many functions to create and modify a picture-list
which can be loaded and saved.
The slideshow is performed calling the external program
"Visage" by Magnus Holmgren. This nice program is used
because of it's capability of "loading while displaying".


@{b}Functions:@{ub}
 Add		 add one or more images to the list
 AddDir          add the contents of a whole drawer to the list
 From, To, Step  picture-range
 Remove          remove the selected picture from the list
 Remove Range    remove all pictures inside the specified range from the list
 Delete          delete the selected picture
 File            file for loading/saving picture-lists
 Save            save the current picture-list to disk
 Load            load a previously saved picture-list
 Clear           clear the current picture-list
 Show            display the selected picture
 Delay           pause between two images during the slideshow
 Go              perform the slideshow

The only way to abort the slideshow is to abort the viewer
sequentially pressing the right mouse-button. The number of 
required mouseclicks depends on the length of the image-paths 
and the number of items in the picture-list.

@endnode

@node GrabWindowPlugIn

@{b}GrabWindow-PlugIn@{ub}

The GrabWindow-PlugIn saves the selected Window or screen to harddisk.
The output-format is selected as usual in the @{"Savers-Window" link SaversWindow} of
the Processor.

@endnode

@node TileImagePlugIn

@{b}TileImage-PlugIn@{ub}

The TileImage-PlugIn splits a specified image into small portions
with the same size.
The output-format is selected as usual in the @{"Savers-Window" link SaversWindow} of
the Processor.

@{b}Functions:@{ub}
 Input		input-image
 Output		base-filename of the generated particles
 xCount		number of fragments in x-direction
 yCount		number of fragments in y-direction

@{b}Notes:@{ub}
 1. Finally you will get xCount*yCount fragments with
    filenames like "output.0001", "output.0002", ...
    The counter runs from the left lower edge to the right upper
    edge (which may be important if you want to use
    the created images later)
 2. the sum of the generated fragments must fit the
    image-size *exactly*. For example you can't subdivide
    an image of the dimensions 640x480 into 3x7 fragments
 3. The idea for this PlugIn is really not mine ;)

@endnode

@remark /*************************************************************/
@remark /*
@remark                            FAQ
@remark */
@remark /*************************************************************/

@node FAQ

@{b}Frequently Asked Questions@{ub}

1. Q: Is there a WWW-site for Wildfire ?
   A: Not yet.

2. Q: How to contact the author ?
   A: epgbc@cluster1.urz.Uni-Halle.DE

3. Q: The demo-version I have installed isn't capable to convert
      large animations because of ''eating'' too much memory.
      Is this only a ''feature'' of the Demo-version ?

   A: Yes, of course !
      Wildfire has an own memory handler to simplify and speed up
      memory-allocations. The Demo-version has no free()-function,
      only the freeall()-function (which cleans up after program-exit)
      is available.

4. Q: Wildfire crashes my machine heavily at startup...
   A: This is a serious thing.
      Before releasing any version of Wildfire I perform some
      characteristic enforcer-tests.
      So it's nearly impossible that the program performs
      some illegal things at startup itself.

      Maybe the reason is a lack in your system-software or a
      very special expansion-board.

      The following tools are installed in my system without
      causing any troubles with Wildfire:

       MCP (almost any things that make sense are enabled)
       DynamiCache
       NewIcons3.0
       DefIcons
       FastIPrefs
       NewMode
       PowerSnap
       ToolManager
       BlizKick
       KingCON
       fBlt
       CPUClr
       AAStarter
       PatchWPA8
       and maybe some more

      The following libraries are opened at startup:
       dos, graphics, intuition, diskfont, gadtools, utility,
       asl, wildfire, datatypes, amigaguide

      Long time ago I had a problem with another program crashing
      after opening an old version of amigaguide.library.
      So always try to use the latest and official versions of
      all of the disk-based libraries.

      For further help send me a more detailed bug-report
      including snoopdos- and enforcer-logfiles.

5. Q: Wildfire crashes my machine after loading the PlugIns...
   A: Since version 2.56 the debug-option ("wf -debug")
      turns on the output of some startup- and cleanup-informations.
      Please try it again using this option and send me the
      generated output (if possible).

6. Q: I've tried out the demo-version and it crashes after a while.
      I can't convert animations with it because I haven't enough
      memory to finish any operation.
      In may opinion you are loosing potential customers using such
      a way of restricting the unregistered program version.
      It would be much better to print your logo to every generated
      image - nobody could use the program seriously without registering.
   A: This is no bad idea. In fact I had implemented this "feature"
      in a previous version. The problem is that it's too easy to
      patch for "sunday-crackers".
      The way I currently use requires much more knowledge than
      simply replacing code-lines of the disassembled binary
      with "nop"-statements.
      Another point is that I think that's not necessary to create
      complete animations to decide if Wildfire is worth registering
      or not. Many working features of the unregistered version
      are missing in much more expensive "commercial" software.

7. Q: Why did you release Wildfire as shareware ? It looks very
      professional.
   A: Well, Wildfire *IS* a professional piece of software.
      The main reason is the fact that Wildfire released as shareware
      is one of the programs with the best price/performance-ratio.
      If you release a program as "commercial product" a lot of money
      is spent for any other purpose than the program-development.
      A printed manual for example is very expensive to produce but
      the most people doesn't read manuals.
      Another advantage is the fast availability of free updates.
      Finally we couldn't find a distributor here in Germany because
      most of them sell their own gfx-software and the remaining ones
      are not professional.

@endnode

@remark /*************************************************************/
@remark /*
@remark                            Processor
@remark */
@remark /*************************************************************/

@node ProcessorWindow

@{b}Processor-Window@{ub}

@{u}Introduction@{uu}

The Processor is Wildfire's powerful image-processing engine which acts
as a PlugIn between the Converter's input and output.
If you have understood the basic @{" concept " link pcConcept} of this architecture
it's easy for you to create almost any complicated or simple effect.

@{b}Functions:@{ub}

@{u}Process-script:@{uu}

Add            open the @{" Operators-Window " link OperatorsWindow} to append an operator to the list
Kill           kill the selected item
Duplicate      duplicate the selected item
Import         import one or more items from a previously saved Process-file
Edit           open the options-window of the selected Operator
Up             move the selected item up
Down           move the selected item down
Visible/Hidden toggle if the current item remains visible if folding is
               enabled
Folding        toggle list-folding on/off
Range          the frame-range of the current Operator

Folding is very nice feature creating very complex scripts.
If a particular scene works you should hide it to work on the next one.
A comment describing the hidden scene and maybe the frame-range
should be left visible.


@{u}Options:@{uu}

Mode           color-mode for rendered images
Dither         dithering-method used rendering images
Depth          depth of rendered images
CSkip          number of colors not used rendering images, this may
               be useful for creating Workbench-backdrops
Scale          @{" Process-Scale-value " link pcScale}
3DQuant        3D-quantization-parameter which causes the 3D-operators to
               approximate the input-image by faces to speed up the
               generation of previews.
               The value indicates the size of the generated rectangles in
               pixels, larger values increase the speed and decrease both
               the memory-consumption and the quality.
Smooth         toggle smoothing for various Operators on/off
Single Image   open the @{" SinglePicture-Window " link SinglePictureWindow} to process single images
Variables      open the @{" Variables-Window     " link VariablesWindow} to edit time-dependant animation-paramters
Savers         open the @{" Savers-Window        " link SaversWindow} to select the Saver used while writing TrueColor-images
Palette        open the @{" Palette-Window       " link PaletteWindow} to create a locked Palette
Calculator     open the @{" Calculator-Window    " link CalculatorWindow}
File           filename used for loading/saving of Process-scripts
Load           load a previously saved Process-file
Save           save the Process-script, all Variables and the Palette
               as Process-file
Clear          clear the Process-script, all Variables keep unchanged


@{b}Additional ShortCuts:@{ub}

<del>            delete the selected list-item
<space>          Test Process of the @{" SinglePicture-Window " link SinglePictureWindow}
<v>              toggle @{" Preview " link ProcessorPreview} on/off
<up>,<down>      browse through the Process-list
<left>           unfold item (if folding=off)
<left>           unfold whole list after safety-requester (if folding=on)
<right>          fold item
@endnode

@node pcConcept

@{b}The concept@{ub}

A normal animation-converter like MainActor reads in a input-stream
of pictures and writes them as output-stream to harddisk.
(The complicated process of (de)compressing various animation-
formats is here neglected.)

The Converter of Wildfire extends this simple concept by a
PlugIn-architecture. You can "plug in" as many modifications
between the input and the output as you want. These modifications
are realized via Operators.
For example this concept would allow to scale down animations
"plugging in" a Halve-operator.

A further extension is the usage of tempory buffers called
"TEMP-buffers". Every Wildfire-PlugIn has at least two Parameters:
the input- and the output-buffer. The "normal" buffer generated
by the Converter is called "STREAM". There are 8 TEMP-buffers
called "TEMP1"..."TEMP8".

In this terms the process of halving an animation looks like this:

input
  I
  ->STREAM -> Halve -> STREAM
                         I
                       output

This concept of TEMP-buffers is much more powerful. For example it
allows you to create an animation which consists of the input-
animation as gray background and as small colored foreground.
In this case you would need a Scale-, a ColorToGray- and a Compose-
PlugIn.
The scheme would look like this:

input
  I
  ->STREAM -> Scale       -> TEMP1  )
                                     > Compose -> STREAM
           -> ColorToGray -> STREAM )               I
                                                  output

But this concept doesn't allow you very complicated effects
like a jumping animation in front of a melting one.
So a further extension is necessary: time-dependant animation-
parameters.
For example this allows you to create a spinning animation.
All you need is a Rotate-PlugIn and a rotate-amount running
from 0 to 360 degrees during the whole animation.
Let's assume your animation has 120 frames. To convert it into a
spinning one you have to "plug in" the Rotate-Operator, to
create the Envelope describing the variation of the
rotate-amount with the frame number and to "plug in" this
Envelope into the Rotate-Operator. That's it.
The Envelope consists of two points one at frame 0 with the
value 0 and one at frame 120 with the value 360.
Setting the value 0 at frame 0 which is never reached (the
first frame is always 1) causes the creation of a looping
animation.

As said before, if you understood this concept you can
do almost anything.

Example: Compose four different animations after applying
a Twirl-effect to the 1st, a Negative-effect to the 2nd,
a Cube-effect to the 3rd and a Posterise-effect to the 4th one:

input
  I
  ->STREAM -> Twirl ->STREAM                     )
                                                  > Compose -> STREAM                                     )
          LoadImage ->TEMP1 -> Negative -> TEMP1 )                                                         )
                                                                                                            > Compose -> STREAM
                                             LoadImage -> TEMP1 -> Cube      -> TEMP1 )                    )               I
                                                                                       > Compose -> TEMP1 )              output
                                             LoadImage -> TEMP2 -> Poszerise -> TEMP2 )

This example doesn't make any sense but demonstrates that
the only limit is your own creativity.


@endnode

@node pcScale

@{b}Process-Scale-value@{ub}

This harmless-looking option is a real mega-feature: It allows you to
use Processor-scripts designed for a particular image-size to apply to
images of other dimensions.
Example: You have designed a large project of about 1000 frames
         processing images of a dimension 320x256. Now you want to
         create a preview-animation of the halve size.
         So simply set the Scale-value to 0.5.

Due the nature of such feature there are some restrictions:
 *the current image-sequence must have the same aspect as the one the
  script was designed for
 *some very special operators cannot be used, e.g. the font-size
  of the Text-operator cannot be scaled contingously

But the last point is no real restriction because these few
operators can be replaced (temporarily).


There is one very important thing you should always remember.
After changing the Process-Scale-value all process-parameters
which are in pixel-units are scaled. That may be cause very
strange results if you use images with a dimension which doesn't
fit this scale-value. 
Example: You use a scale-value of 0.5 and the same images the
         script was designed for. In this case all size-dependant
         are divided by 2. If you script for example contains
         a 3D-operator with a camZ-value of -800 this value will
         be reduced to -400. This will cause a very strange
         view if your image has a size of 640x480, the program
         may even hang up due the rendering of almost infinite
         large faces.

So always don't forget to change the input-stream and not only
the Process-Scale-value !

@endnode


@node ProcessorPreview

@{b}Preview-Window@{ub}

The Preview is a very useful feature while testing complicated scripts.
It applies the current-Process-script to a smaller version
of the picture specified in the @{" SinglePicture-Window " link SinglePictureWindow}.
The change of any parameter is visible in the Process-Window
instantly (on fast machines). To abort the geneneration of
the preview hold the left mouse-button.
The width and depth of the preview can be specified from within the
@{" SinglePicture-Window " link SinglePictureWindow}.
A width of 160 and a depth of 4 is a should be always good choice.


The original width of the input-image is displayed in the
window title. This may be sometimes important adjusting size-dependant
parameters.


If you used a "normal" image-processor before you may have enjoyed
the feature of graphically specifing parameters like dragging a rectangle
for a Crop-effect. Such a feature isn't implemented into Wildfire
because I had no idea of good concept yet.
The problem is that all Operators of the Process-script are
independant. That means that a Twirl-effects doesn't "know" about
a Scale-effect executed before.
And the Scale-effect doesn't "know" about about a CreateImage-effect
executed before...

A first attempt is the @{" ImageCoordinates-Window " link ImageCoordinatesWindow} which
allows you to graphically modify some types of controls inside the
Preview-Window. For example if you want to crop an image you may
use the "Rectangle"-control and later copy the indicated coordinates
to the options-window of the Crop-PlugIn.


To disable a particular effect temporaray simply modify it's working
range (especially the from-value).

@{b}Shortcuts:@{ub}
<space>       refresh the image (e.g. after aborting)
<c>           open the @{" ImageCoordinates-Window " link ImageCoordinatesWindow}

@endnode

@node ImageCoordinatesWindow

@{b}ImageCoordinatesWindow@{ub}

The ImageCoordinates-Window is a first attempt to modify parameters
graphically. There a some types of controls which can be dragged and 
modified using the mouse. All interesting values like image-coordinates
or the radius of a circle are indicated and could be copied to the 
options-window of the selected PlugIn.

@{b}Functions@{ub}

Control-Type     type of control:
                   point : simple point, e.g. represting a upper-left edge
                           of a image to be composed
                   rect  : e.g. representing a crop-region
                   circle: e.g. representing the amount and the radius
                                of a Twirl-effect

Left,Top         coordinates of the point (in coordiantes of the unscaled image),
                 upper-left edge of the rectangle,
                 centre of the circle,
Right, Bottom    lower-right edge of the rectangle
Angle            angle of the current drawn radius of the circle
Radius           radius of the circle
@endnode

@node SinglePictureWindow

@{b}SinglePicture-Window@{ub}

This window is made to process single images and to simplify the
creation of complicated Processor-scripts.

@{b}Functions:@{ub}

Input              input image, this field is by default initialized by
                   Wildfire's intro-picture because it must be always
                   filled
Frame              the current frame
Frames             number of frames, this value is only used as maximum
                   for the scrollbar below
Scrollbar          another way to change the current frame number

Test Process       execute the current Processor-script using the current
                   frame-number and display the result
Screenmode         select the screenmode used by the "Test Process"-function
Apply Dimensions   apply the dimensions of the current input-image to the
                   selected operator, e.g. if the selected operator is a
                   Twirl-effect the centre and the radius is set
Preview            toggle @{" Preview " link ProcessorPreview} on/off
Width              width of the preview
Depth              depth of the preview, if this value exceeds the
                   screen-depth the screen is updated automatically
Output             output-image
Save Image         execute the current Processor-script using the current
                   frame-number and save the result using the saver
                   selected in the @{" Savers-Window " link SaversWindow}
Save Rendered      execute the current Processor-script using the current
                   frame-number, render it using the settings made
                   in the Processor-Window and save the result as ILBM-image


@{b}Additional Shortcuts:@{ub}

 <v>               toggle @{" Preview " link ProcessorPreview} on/off
 <space>           Test Process
 <left>,<right>    decrease/increase the current frame-number
@endnode

@node VariablesWindow

@{b}Variables-Window@{ub}

From within the Variables-Window time-dependent animation-parameters
are created, modified, loaded and saved.

@{b}Functions:@{ub}

Add                 add a variable
Kill                kill the selected Variable
Rename              rename the selected Variable
Envelope            open the @{" Envelope-Window " link EnvelopeWindow} to graphically
                    edit the current variable
File                filenames used for loading/saving of variables
Load                load variables from a previously saved Variables-file
Save                save all variables to disk
Clear               clear all variables

After clearing a Variable all informations about this Variable
are lost - even in the Processor-script.

@endnode

@node SaversWindow

@{b}Savers-Window@{ub}

From within this window the Saver used for writing Truecolor-images
is choosen. Most Savers offer an options-window which can be
accessed from within the Savers-Window, too.
Another purpose is to add or remove Saver-PlugIns.
Saver-PlugIns contain both the save- and the load-functions for a
particular image-format. Removing a Saver causes the loss of the
capability to load and save images of this file-format.
All unknown fileformats are handled via datatypes which is restricted
to the operation of loading.

Most Saver-PlugIns allow you to disable the loader-function explicitly.
This may be necessary if the Wildfire-loader doesn't support a
particular sub-format and you want to use datatypes. An example is
the PNG-format with it's lots of options.

There a many people saying "may xxx-datatype is the best, the greatest
and the fastest". If this is also your opinion you may
switch the loaders permanently off saving the prefs after
disabling.
(In fact it's nearly impossible to write a datatypes which operates
 faster than Wildfire because this program always was to designed
 to be fast and not to conserve memory.)


@{b}Functions:@{ub}

Add            add an external Saver-PlugIn
Delete         delete the selected Saver-PlugIn
SavePrefs      save all of the options of the current PlugIn
Options        open the options-window of the selected Saver-PlugIn


@{b}Available Savers@{ub}

 @{" ILBM " link ILBMSaver}
 @{" JPEG " link JPEGSaver}
 @{" PNG  " link PNGSaver}
@endnode

@node ILBMSaver

@{b}ILBM-Saver@{ub}

This PlugIn saves and load images in the ILBM-format.

@{b}Options:@{ub}

Compression     ByteRun1/Node
Loader          disable/enable the loader

The choice of no compression is good for saving huge images
(e.g. at 600dpi). In such cases there may be not enough
memory to do any compression.

@endnode

@node JPEGSaver

@{b}JPEG-Saver@{ub}

This PlugIn saves and load images in the JPEG-format.

@{b}Options:@{ub}

Quality         remaining image-quality in percent
Format          toggle Normal/Progressive-format
Optimize        toggle Huffman-table-optimizing on/off
Output          toggle TrueColor/GrayScale-output
Loader          disable/enable the loader

In the most cases the TrueColor-Progressive-format should
be the best choice.

This PlugIn uses routines of the @{b}IJG JPEG Library@{ub}
developed by @{b}The Independent JPEG Group.@{ub}

@endnode

@node PNGSaver

@{b}PNG-Saver@{ub}

This PlugIn saves and load images in the PNG-format.

@{b}Options:@{ub}

Format          various formats are supported:
                 24Bit RGB   : TrueColor-image
                  8Bit Color : rendered image in 256 colors
                               (good GIF-replacement)
                  8Bit Gray  : grayscale-image
                  4Bit color : rendered image in 16 colors
                  Black&White: rendered Grayscale image in 2 colors
Loader          disable/enable the loader

This PlugIn uses routines of the @{b}PNG Reference Library@{ub}
developed by @{b}Group 42, Inc.@{ub}

@endnode

@node PaletteWindow

@{b}Palette-Window@{ub}

The Palette-Window lets you create, modify, load and save a
locked Palette used by the Processor while rendering images.

@{b}Functions:@{ub}

File              file to load/save palettes
Load              load the palette from the selected file,
Save              save the current palette to disk
Red, Green, Blue  values of the current selected palette-entry
Copy              duplicate the current color
Exchange          exchange two colors
Spread            create a color-transition between two colors
Undo              reset the last changed color to its previous value
State             toggle the state of the Palette
Use               make all performed changed permanent
Cancel            cancel all apllied changes

If the state of the Palette is enabled it will be used for all
forthcoming render-processes. This is very important if
you want to create animations with locked colors using
the Processor.

If you use a screendepth smaller than 8 no change of Palette
will be visible (indicated by changing screen-colors).
In the other case while pressing the right mouse-button the
normal screen-colors are used for the lower palette-entries
which is important to locate gadgets.

@endnode

@node CalculatorWindow

@{b}Calculator-Window@{ub}

The Calculator-window is made to easily evaluate mathematical expressions
and to define or view user-defined symbols.
Most of Wildfire's gadgets allow you to enter mathematical expressions, too.
The symbols defined from within the Calculator-Window can be accessed
from this gadgets, too.

@{b}Functions:@{ub}

1st string-gadget      expression to evaluate
Results                shows the last three results
Symbols                list of all user-defined symbols, especially constants
Load                   load symbols from a previously saved file
Save                   save all symbols to disk

To define a symbol enter it's name and optionally it's value,
e.g. "a=sqrt(9)/2" initializes the symbol "a" with the value 1.5.
Later you could enter the expression "a/2" into of the Processor-gadgets.
If the corresponding value (e.g. a zoom-factor) is of type float it
will be set to 0.75 otherwise it will be rounded to 1.

@endnode

@node EnvelopeWindow

@{b}Envelope-Window@{ub}

From within this window all time-dependent animation-parameters
(called "Envelopes") are created and modified.
An Envelope is a twodimensional curve with the frame-number
as x-values and the animation-parameter as y-value. Therefore
the x-values are always integer-values.

If the framber-number of the Processor exceeds the range of an
Envelope the first or last y-Value is used. This means if your Envelope
only contains one point the y-value of this point is used for
all frame-numbers.

Most operations are made using the mouse. A point is selected
by clicking on it. Moving the mouse while holding the left
button causes the selected point to be dragged.
The whole graph can be scrolled using the cursor-keys.

@{b}Functions:@{ub}

XRange            the displayed x-range
YRange            the displayed y-range
X                 the x-value (frame-number) of the selected point
Y                 the y-value of the selected point
Add Point         add a point
Kill Point        kill a point
Type              change the type of the Envelope:
                   Linear: connect two points by straight lines
                   Spline: use a cubic spline interpolation to connect points
                   Bezier: surround points by bezier-curves
View All          view the whole Envelope
File              filename to save/load Envelopes
Load              load a previously saved Envelope
Save              save the current Envelope to disk
Use               make all performed changes permanent
Cancel            discard all applied changes
Advanced Options  open the @{" EnvelopeAdvanced-Window " link EnvelopeAdvancedWindow} to perform
                  more complex operations
@endnode

@node EnvelopeAdvancedWindow

@{b}EnvelopeAdvanced-Window@{ub}

From within this window seldom-used but very useful transformations
are applied to Envelopes.

@{b}Functions:@{ub}

@{u}Point-Operations:@{uu}
First, Last, Step     point-range affected by transformations
YValue                x-value used by the transformation
YValue                y-value used by the transformation
Scale                 scale the Envelope by the x- and y- value specified below
Shift                 shift the Envelope by the x- and y- value specified below

@{u}Evaluate Expression:@{uu}
XMin, XMax, XStep     x-range used for evaluating
Expression            mathematical expression as function of "x"
Evaluate              create an Envelope using the x-range as frame-numbers
                      and the evaluated values as y-value

@{u}Import/Export:@{uu}
Load Curve            load a 2D-data file used by plotting programs 
                      and convert it as an Envelope
Save Curve            save the current Envelope as 2D-datafile
Load Timecodes        load a previously saved Timecodes-file and convert
                      it as an Envelope
Save Timecodes        save the current Envelope as a Timecodes-file used
                      from within the @{"Timecodes-Window" link TimecodesWindow}
@endnode

@node OperatorsWindow

@{b}Operators-Window@{ub}

The Operators-Window opens after pressing the "Add"-button of the
Processor-Window and allows you to select an operator which will be
appended to your Processor-script.
Another purpose is to add PlugIns to the internal database
or to remove them.
All operations can be done both using the mouse and the keyboard.
Use the cursor-keys to browse through the lists and the <enter>-key
to apply the selection.

@{b}Functions:@{ub}

Add             to load one or more PlugIns from harddisk
Delete          to delete the selected PlugIn
Select          to append the selected operator to the Processor-script
Cancel          to cancel the selection

@{b}Operator-PlugIns:@{ub}

There are five basic types of Operator-PlugIns according to their
purpose.


 @{b}Buffer:@{ub} modifying or creating buffers

   @{" Add             " link opAdd            } Add two images                             @{" Example " system "visage wf:doc/pictures/Add.pic"}
   @{" Compose         " link opCompose        } Compose two images                         @{" Example " system "visage wf:doc/pictures/Compose.pic"}
   @{" CreateImage     " link opCreateImage    } Create a colored image                     @{" Example " system "visage wf:doc/pictures/CreateImage.pic"}
   @{" Crop            " link opCrop           } Cut off a rectangular area of an image
   @{" KillTemp        " link opKillTemp       } Kill a TEMP-buffer
   @{" LoadImage       " link opLoadImage      } Load an image from harddisk
   @{" LoadTemp        " link opLoadTemp       } Copy a TEMP-buffer to the main stream
   @{" Plasma          " link opPlasma         } Create a colored image                     @{" Example " system "visage wf:doc/pictures/Plasma.pic"}
   @{" ReplaceComp     " link opReplaceComp    } Replace a color-channel of an image        @{" Example " system "visage wf:doc/pictures/ReplaceComp.pic"}
   @{" SaveImage       " link opSaveImage      } Save an image to disk
   @{" SaveTemp        " link opSaveTemp       } Copy the main stream to a TEMP-buffer


 @{b}2D-F/X:@{ub} performing 2D-transformations

   @{" BlackHole       " link opBlackHole      } Deform an image                            @{" Example " system "visage wf:doc/pictures/BlackHole.pic"}
   @{" Cartesian2Polar " link opCartesian2Polar} Transform the coordinates of an image      @{" Example " system "visage wf:doc/pictures/Cartesian2Polar.pic"}
   @{" Displace        " link opDisplace       } Randomly exchange points of an image       @{" Example " system "visage wf:doc/pictures/Displace.pic"}
   @{" Flip            " link opFlip           } Mirror an image along various directions   @{" Example " system "visage wf:doc/pictures/Flip.pic"}
   @{" Halve           " link opHalve          } Quickly halve the dimensionsions of an image
   @{" Magnet          " link opMagnet         } Deform the image                           @{" Example " system "visage wf:doc/pictures/Magnet.pic"}
   @{" MotionBlur      " link opMotionBlur     } Apply a touch of motion to an image        @{" Example " system "visage wf:doc/pictures/MotionBlur.pic"}
   @{" Pixelize        " link opPixelize       } Reduce the resolution of an image          @{" Example " system "visage wf:doc/pictures/Pixelize.pic"}
   @{" Roll            " link opRoll           } Scroll an image along every direction      @{" Example " system "visage wf:doc/pictures/Roll.pic"}
   @{" Rotate          " link opRotate         } Rotate (a portion) of the image            @{" Example " system "visage wf:doc/pictures/Rotate.pic"}
   @{" RotateBlur      " link opRotateBlur     } Apply a touch of motion to an image        @{" Example " system "visage wf:doc/pictures/RotateBlur.pic"}
   @{" Scale           " link opScale          } Scale an image
   @{" Shear           " link opShear          } Shear the image                            @{" Example " system "visage wf:doc/pictures/Shear.pic"}
   @{" ShiftLines      " link opShiftLines     } Randomly shift the lines of an image       @{" Example " system "visage wf:doc/pictures/ShiftLines.pic"}
   @{" Twirl           " link opTwirl          } Deform an image                            @{" Example " system "visage wf:doc/pictures/Twirl.pic"}
   @{" Wave            " link opWave           } Apply a harmonic 2D-Wave to the image      @{" Example " system "visage wf:doc/pictures/Wave.pic"}


 @{b}Color:@{ub}  applying color-transformations

   @{" Alpha           " link opAlpha          } Color Changes using an Alpha Channel       @{" Example " system "visage wf:doc/pictures/Alpha.pic"}
   @{" Antique         " link opAntique        } Change the colors to look "antique"        @{" Example " system "visage wf:doc/pictures/Antique.pic"}
   @{" Balancing       " link opBalancing      } Change the colors using Balancing          @{" Example " system "visage wf:doc/pictures/Balancing.pic"}
   @{" ColorToGray     " link opColorToGray    } Convert an image into grayscale            @{" Example " system "visage wf:doc/pictures/ColorToGray.pic"}
   @{" Convolve        " link opConvolve       } Apply a convolution-filter                 @{" Example " system "visage wf:doc/pictures/Convolve.pic"}
   @{" Emboss          " link opEmboss         } Change an image to look like made of stone @{" Example " system "visage wf:doc/pictures/Emboss.pic"}
   @{" LUT             " link opLUT            } Change the colors using a LookUpTable      @{" Example " system "visage wf:doc/pictures/LUT.pic"}
   @{" MedianFilter    " link opMedianFilter   } Apply a medianfilter to an image
   @{" Negative        " link opNegative       } Turn dark portions into light portions     @{" Example " system "visage wf:doc/pictures/Negative.pic"}
   @{" Noise           " link opNoise          } Apply random noise to an image             @{" Example " system "visage wf:doc/pictures/Noise.pic"}
   @{" OilTransfer     " link opOilTransfer    } Change the image to look like "oilpainted" @{" Example " system "visage wf:doc/pictures/OilTransfer.pic"}
   @{" Posterise       " link opPosterise      } Reduce the color-information of an image   @{" Example " system "visage wf:doc/pictures/Posterise.pic"}
   @{" SwapRGB         " link opSwapRGB        } Swap the color-components of an image      @{" Example " system "visage wf:doc/pictures/SwapRGB.pic"}
   @{" Threshold       " link opThreshold      } Create alpha channels                      @{" Example " system "visage wf:doc/pictures/Threshold.pic"}


 @{b}3D-F/X:@{ub}   performing complex 3D-transformations

   @{" Bump            " link opBump           } Add a third dimension to an image          @{" Example " system "visage wf:doc/pictures/Bump.pic"}
   @{" Cube            " link opCube           } Wrap an image on a cube                    @{" Example " system "visage wf:doc/pictures/Cube.pic"}
   @{" LWOB            " link opLWOB           } Load and draw Lightwave-objects            @{" Example " system "visage wf:doc/pictures/LWOB.pic"}
   @{" Perspective     " link opPerspective    } Add perspective to an image                @{" Example " system "visage wf:doc/pictures/Perspective.pic"}
   @{" Water           " link opWater          } Apply an anharmonic water-wave to an image @{" Example " system "visage wf:doc/pictures/Water.pic"}
   @{" Wave3D          " link opWave3D         } Apply a harmonic wave to an image          @{" Example " system "visage wf:doc/pictures/Wave3D.pic"}
   @{" Wrap            " link opWrap           } Wrap the image on a sphere or a tube       @{" Example " system "visage wf:doc/pictures/Wrap.pic"}


 @{b}Misc:@{ub}     very special or seldom-used PlugIns

   @{" ARexx           " link opARexx          } Exchange images with other applications
   @{" Comment         " link opComment        } Add a comment to the Processor-script
   @{" Example         " link opExample        } Example for the developer-kit              @{" Example " system "visage wf:doc/pictures/Example.pic"}
   @{" Raster          " link opRaster         } Apply a black raster to an image           @{" Example " system "visage wf:doc/pictures/Raster.pic"}
   @{" Text            " link opText           } Render text using various styles           @{" Example " system "visage wf:doc/pictures/Text.pic"}

@endnode

@node opAdd

@{b}Add-Operator@{ub}

This operator adds or subtracts two images.

@{b}Parameters@{ub}

Input1       1st source buffer
Input2       2nd source buffer
Output       destination buffer
Mode         add or subtract the images
@endnode

@node opCompose

@{b}Compose-Operator@{ub}

This operator composes two images using several genlock-methods
and optionaly an alpha-channel.

@{b}Parameters@{ub}

Background           background image
Foreground           foreground image
Destination          destination buffer
Alpha                optional alpha buffer
Left                 left edge of the foreground image
Top                  top edge of the foreground image
Mix                  transparency of the foreground image
CentreX              center the foreground horizontally
CentreY              center the foreground vertically
Red1, Green1, Blue1: genlock-color 1
Red2, Green2, Blue2: genlock-color 2
Genlock              type of genlock:
                      none                : no genlock
                      single color        : normal genlock using color 1
                      inside color range  : extended genlock using all colors
                                            inside the range color1...color2
                      outside color range : extended genlock using all colors
                                            outside the range color1...color2
@endnode

@node opCreateImage

@{b}CreateImage-Operator@{ub}

This operator creates an image with an optional color-transition.

@{b}Parameters@{ub}

Output                output-buffer
Width                 width of the generated image
Height                height of the generated image
Palette               select one of the four edges
Red, Green, Blue      color of the edges
HCopy                 copy the selected color horizontally
VCopy                 copy the selected color vertically
HVCopy                apply the selected color to all four edges
@endnode

@node opCrop

@{b}Crop-Operator@{ub}

This operator cuts out a rectangular area of an image.

@{b}Parameters@{ub}

Input       input buffer
Output      output buffer
Left        left edge of the rectangle
Top         top edge of the rectangle
Width       width of the rectangle
Height      height of the rectangle
@endnode

@node opKillTemp

@{b}KillTemp-Operator@{ub}

This operator clears a TEMP-buffer and frees it's memory.

@{b}Parameters@{ub}

Buffer       TEMP-buffer to kill
@endnode

@node opLoadImage

@{b}LoadImage-Operator@{ub}

This operator loads an image or an image-sequence from disk.

@{b}Parameters@{ub}

Output       output buffer
Sequence     complete filename of an single image or base-filename
             of an image-sequence
Loop         length of the image-sequence
Shift        shift-value for the filenames of an image-sequence
Show         show the choosen image
@endnode

@node opLoadTemp

@{b}LoadTemp-Operator@{ub}

This operator replaces the input-stream with a TEMP-buffer.

@{b}Parameters@{ub}

Buffer       TEMP-buffer which holds the image to apply
@endnode

@node opPlasma

@{b}Plasma-Operator@{ub}

This operator creates an image using a fractal algorithm.

@{b}Parameters@{ub}

Output       output buffer
Width        width of the generated image
Height       height of the generated image
Dimension    fractal dimension which affects the smoothness of the fractal
Seed         Parameter which affects the shape
@endnode

@node opReplaceComp

@{b}ReplaceComp-Operator@{ub}

This operator replaces a color-channel of an image with the
red-channel of an other image. The main purpose of this
PlugIn is to create Stereo-3D-Images.

@{b}Parameters@{ub}

Input1       input buffer
Input2       image which replaces the selected channel
Output       output buffer
Component    color-channel to replace
@endnode

@node opSaveImage

@{b}SaveImage-Operator@{ub}

This operator saves images to harddisk.

@{b}Parameters@{ub}

Input        image to save
File         filename
Numbering    C-formatstring, if this string is non-empty the current
             frame-number is appended to filename
@endnode

@node opSaveTemp

@{b}SaveTemp-Operator@{ub}

This operator copies the content of the input-stream to a TEMP-buffer.

@{b}Parameters@{ub}

Buffer       Buffer to copy to
@endnode


@node opBlackHole

@{b}BlackHole-Operator@{ub}

This operator contracts the whole image.

@{b}Parameters@{ub}

Input                input buffer
Ouput                output buffer
CentreX, CentreY     centre of the effect
Amount               amount, large values may cause the whole image
                     to disappear
Radius               parameter specifying the local deformation
Zoom                 zoom-factor for the whole image
@endnode

@node opCartesian2Polar

@{b}Cartesian2Polar-Operator@{ub}

This operator transforms the cartesian image-coordinates into
polar coordinates.

@{b}Parameters@{ub}

Input       input buffer
Output      output buffer
R0          starting radius
Phi0        starting angle
Zoom        zoom factor for the whole image
@endnode

@node opDisplace

@{b}Displace-Operator@{ub}

This operator swaps points of an image randomly.

@{b}Parameters@{ub}

Input         input buffer
Ouput         output buffer
Radius        largest distance between two points to swap
Probability   probability of swapping in percent, a value of 100
              causes all points to be affected
Seed          start-value for the random number generator
@endnode

@node opFlip

@{b}Flip-Operator@{ub}

This operator mirrors an image along a specified axis.

@{b}Parameters@{ub}

Input         input buffer
Ouput         output buffer
Axis          mirror-axis
@endnode

@node opHalve

@{b}Halve-Operator@{ub}

This operator halves the dimensions of an image.

@{b}Parameters@{ub}

Input         input buffer
Ouput         output buffer
@endnode

@node opMagnet

@{b}Magnet-Operator@{ub}

This operator applies a local contraction or expansion to an image.

@{b}Parameters@{ub}

Input              input buffer
Ouput              output buffer
CentreX, CentreY   centre of the effect
Amount             amount of the deformation, positive values cause
                   a contraction, negative a expansion, this
                   value should be always in the range -20...20
Damping            parameter which controls the fall-off of the deformation
Zoom               zoom-factor for the whole image
@endnode

@node opMotionBlur

@{b}MotionBlur-Operator@{ub}

This operator applies a touch of motion to an image.

@{b}Parameters@{ub}

Input            input buffer
Ouput            output buffer
DeltaX, DeltaY   direction and amount of the effect
@endnode

@node opPixelize

@{b}Pixelize-Operator@{ub}

This operator reduces the resolution of an image creating
rectangles.

@{b}Parameters@{ub}

Input             input buffer
Ouput             output buffer
Width, Height     size of the rectangles to create
Centre            centre the rectangles, this options should be
                  switched off if the size of the rectangle varies
                  with time
Grid              type of the optional grid to create
Size              thickness of the grid to create
Red, Green, Blue  base color of the grid
DLeft, DRight ,   color variation of the grid to produce
DTop, DBottom     a threedimensional look
@endnode

@node opRoll

@{b}Roll-Operator@{ub}

This operator scrolls an image into a specified direction.

@{b}Parameters@{ub}

Input            input buffer
Ouput            output buffer
DeltaX, DeltaY   scroll direction and amount
Wrap             toggle wrapping on/off

@endnode

@node opRotate

@{b}Rotate-Operator@{ub}

This operator rotates a circular region of an image.

@{b}Parameters@{ub}

Input              input buffer
Ouput              output buffer
CentreX, CentreY   centre of the circle
Radius             radius of the circle
Amount             rotate-angle
Zoom               zoom-factor for the rotated region
@endnode

@node opRotateBlur

@{b}RotateBlur-Operator@{ub}

This operator adds a touch of motion to an image.

@{b}Parameters@{ub}

Input              input buffer
Ouput              output buffer
CentreX, CentreY   centre of the blurred circle
Radius             radius of the circle
Amount             blur-amount, large-values like 60 cause a very long
                   computation time
@endnode

@node opScale

@{b}Scale-Operator@{ub}

This operator scales up or down images.

@{b}Parameters@{ub}

Input              input buffer
Ouput              output buffer
Width, Height      new size-values
Type               choose if the size-values are in pixels or percent
Aspect             choose the type of scaling:
                    ignore    : scale the image to the specified values
                    takewidth : scale the image to the specified width-value
                                and a computed height-value keeping the aspect
                    takeheight: scale the image to specified height-value
@endnode                        and computed width-value keeping the aspect

@node opShear

@{b}Shear-Operator@{ub}

This operator shears an image with additional damping.

@{b}Parameters@{ub}

Input               input buffer
Ouput               output buffer
OriginX, OriginY    shear-centre where no damping occurs
Amount              shear-amount
Zoom                zoom-value for the whole image
Axis                shear-direction
Damping             toggle damping on/off
Damping             damping-value
@endnode

@node opShiftLines

@{b}ShiftLines-Operator@{ub}

This operator shifts the lines of an image with optional
jitter-effect.

@{b}Parameters@{ub}

Input         input buffer
Ouput         output buffer
Direction     shift-direction
Jitter        toggle jitter on/off
Shift         shift-value
Amount        jitter-amount
Probability   probability for the jitter-effect
Seed          start -value for the random number generator
@endnode

@node opTwirl

@{b}Twirl-Operator@{ub}

This operator applies a nonlinear deformation to an image.

@{b}Parameters@{ub}

Input              input buffer
Ouput              output buffer
FallOff            radial direction of the fall-off of the deformation
CentreX, CentreY   centre of the effect
Radius             radius of the affected circular region of the image
Amount             twirl amount, very large value like 1000 are allowed
Power              parameter describing the local deformation, large
                   values like 6 concentrate the deformation around
                   the centre of the circle
Zoom               zoom-factor for the affected circular region
@endnode

@node opWave

@{b}Wave-Operator@{ub}

This operator applies a harmonic wave to an image.

@{b}Parameters@{ub}

Input             input buffer
Ouput             output buffer
CentreX, CentreY  centre of the wave, the point with no damping
Amplitude         amplitude of the wave
Phase             phase of the wave in degrees
Wavelength        wavelength
Shift             diagonal-shift-parameter
Zoom              zoom-value for the whole image
Damping           toggle damping on/off
Damping           damping-value
Axis              wave-direction
Frame             current frame
Frames            frame-number describing a whole cycle
@endnode

@node opAlpha

@{b}Alpha-Operator@{ub}

This operator modifies the brightness of an image using 
an alpha-channel.

@{b}Parameters@{ub}

Input         input buffer
Ouput         output buffer
Alpha         alpha buffer
Left          left edge of the alpha image
Top           top edge of the alpha image
@endnode

@node opAntique

@{b}Antique-Operator@{ub}

This operator turns the colors of an image to look "anitique".

@{b}Parameters@{ub}

Input         input buffer
Ouput         output buffer
@endnode

@node opBalancing

@{b}Balancing-Operator@{ub}

This operator performs some balancing operations.

@{b}Parameters@{ub}

Input         input buffer
Ouput         output buffer
Red           shift-value for the red component
Green         shift-value for the green component
Blue          shift-value for the green component
Contrast      contrast-value, negative values decrease the contrast
Bright        shift value for all color-channels
Gamma         gamma-value

All values have to be in the range -255...255.
@endnode

@node opColorToGray

@{b}ColorToGray-Operator@{ub}

This operator converts an image into grayscale.

@{b}Parameters@{ub}

Input              input buffer
Ouput              output buffer
Weights            weight of the red, green and blue component:
                    luminance : use luminance weights
                    average   : use for all components the same weight
                    custom    : use custom weights
Red, Green, Blue   custom weights, to avoid the use of float numbers
                   all values are integers which are formed multiplying
                   the real weight by a factor of 10000,
                   e.g. the average weights are 3333, 3334 and 3333.
@endnode

@node opConvolve

@{b}Convolve-Operator@{ub}

This operator applies a 3x3- or 5x5 convolution-matrix to an image.

@{b}Parameters@{ub}

Input         input buffer
Ouput         output buffer
Mix           intensity of the generated effect
Shift         shift-value which is applied to the result for each pixel,
              this makes it for example possible to turn negative
              results into the valid range 0...255 without loosing details
Size          toggle the size of the matrix
File          filename for loading/saving a matrix
Load          load a matrix in Wildfire's or ADPro's format
Save          save the current matrix to disk
@endnode

@node opEmboss

@{b}Emboss-Operator@{ub}

This operator converts an image in a gray relief

@{b}Parameters@{ub}

Input         input buffer
Ouput         output buffer
Direction     direction of the "lightsource", different directions
              may cause results looking extremely different
@endnode

@node opLUT

@{b}LUT-Operator@{ub}

This operator applies a LookUpTable to an image.
Unlike to all other image-processors LUT's are represented
by Envelopes and can be morphed !
There are 6 Envelopes: a Start- and an End-Envelope for every
component. After specifying the number of frames the Start-Envelope
is morphed into the End-Envelope. Different point-counts
are possible.

@{b}Parameters@{ub}

Input         input buffer
Ouput         output buffer
Mode          toggle Edit/View-mode
Type          type of the spline of the current channel
Component     current component
RGB           apply the current Envelope to all components
Preset        choose a preset
Apply         apply the selected preset to the current component
Position      modify the Start- or the End-Envelope
Both          apply the Envelope of the current component as
              End- and as Start-Envelope
Frames        number of frames used for morphing
Frame         current frame displayed in view-mode
MirrorX       mirror the current Envelope along the x-axis
MirrorY       mirror the current Envelope along the y-axis
MirrorXY      flip the current Envelope along the diagonal
MoveX         shift the current Envelope by the specified amount in x-direction
MoveY         shift the current Envelope by the specified amount in y-direction
Amount        shift-value
File          file used for loading/saving envelopes
Load          load an Envelope
Save          save the current Envelope to disk

There are two modes: the View- and the Edit-mode. In Edit-mode
all changes are applied, in view mode the morphing of the
splines is visualized. In this mode you can change the current-frame-
number both using the scrollbar and the "Frame"-gadget.


If you want to create your Envelopes using the @{"Envelope-Window" link EnvelopeWindow}
the only restriction is that all values must be in the range 0..255.
The first point must have the x-coordinate 0, the last one the
coordinate 255.
@endnode

@node opMedianFilter

@{b}MedianFilter-Operator@{ub}

This operator applies a median-filter to the image.
(In the most cases there will be no visible change.)

@{b}Parameters@{ub}

Input         input buffer
Ouput         output buffer
Rect          size of the rectangle scanned for every pixel
@endnode

@node opNegative

@{b}Negative-Operator@{ub}

This operator turns the colors of an image into negative ones.

@{b}Parameters@{ub}

Input         input buffer
Ouput         output buffer
@endnode

@node opNoise

@{b}Noise-Operator@{ub}

This operator applies random noise to an image.

@{b}Parameters@{ub}

Input         input buffer
Ouput         output buffer
Intensity     intensity of the noise in color-units
Probability   noise-probability
Seed          start-value for the random number generator
@endnode

@node opOilTransfer

@{b}OilTransfer-Operator@{ub}

This operator applies the OilTransfer-algorithm to an image.

@{b}Parameters@{ub}

Input         input buffer
Ouput         output buffer
Rect          size of the rectangle scanned for every pixel
@endnode

@node opPosterise

@{b}Posterise-Operator@{ub}

This operator reduces the number of bits per byte for every pixel
of the image.

@{b}Parameters@{ub}

Input         input buffer
Ouput         output buffer
Bits          number of bits (1..7) per byte, a value 8 which is
              the normal case would cause no change

@endnode

@node opSwapRGB

@{b}SwapRGB-Operator@{ub}

This operator swaps the color-channels of an image

@{b}Parameters@{ub}

Input         input buffer
Ouput         output buffer
Mode          swap-mode, all possible permutations of RGB
@endnode

@node opThreshold

@{b}Threshold-Operator@{ub}

This operator converts an image into black&white using a grayscale-level,
this may be especially useful for the creation of alpha-channels.

@{b}Parameters@{ub}

Input         input buffer
Ouput         output buffer
Level         grayscale-level, all pixels with a higher brightness
              ar turned into white ones, all other in black ones
@endnode

@node opBump

@{b}Bump-Operator@{ub}

This operator uses a 2nd image to add height-information which
is visualized using a single lightsoure to an image.

@{b}Parameters@{ub}

Input                   input buffer
Ouput                   output buffer
HeightMap               image used to create the height-information
Amount                  height-value corresponding to a brightness of 255
LightX, LightY, LightZ  coordinates of the lightsource
Intensity               light-intensity
Left                    left edge of the height-map
Top                     top edge of the height-map
@endnode

@node opCube

@{b}Cube-Operator@{ub}

This operator wraps an image onto a cube.

@{b}Parameters@{ub}

Input                   input buffer           (image-buffer or 3D-buffer)
Ouput                   output buffer          (image-buffer or 3D-buffer)
Zoom                    zoom factor for the whole image        (-10...10)
CentreX, CentreY        centre for zooming and rotating        (in pixels)
CamX, CamY, CamZ        camera-position                        (in pixels)
Rotate                  axis-pair to rotate around/disable rotating
Alpha                   first rotation angle                   (in degrees)
Beta                    second rotation angle                  (in degrees)
Light                   toggle light on/off
LightX, LightY, LightZ  light-position                         (in pixels)
Intensity               light-intensity                        (0.0...1.0)
Ambient                 intensity of the ambient light         (0.0...1.0)
Hardness                add gloss to the surface               (0.8...1.0)
Size                    size of the cube

The image is sliced into 6 parts (2 rows, 3 columns) which are mapped
onto the six surfaces of the cube.
To create a cube with 6 different images simply compose them together
and use the result as input for the Cube-operator.

To speed up the generation of previews modify the "3DQuant"-parameter
in the @{"Processor-Window" link ProcessorWindow}.


@endnode

@node opLWOB

@{b}LWOB-Operator@{ub}

This operator reads in a Lightwave-object and renders it using
flat shading. The main purpose of this PlugIn is to produce
preview images for object-catalogues.
Therefore the filename can be plotted directly to the generated
image and whole drawers can be processed easily.


@{b}Parameters@{ub}

Ouput                   output buffer
Zoom                    zoom factor for the whole image        (-10...10))
CentreX, CentreY        centre for zooming and rotating        (in pixels)
CamX, CamY, CamZ        camera-position                        (in pixels)
Rotate                  axis-pair to rotate around/disable rotating
Alpha                   first rotation angle                   (in degrees)
Beta                    second rotation angle                  (in degrees)
Light                   toggle light on/off
LightX, LightY, LightZ  light-position                         (in pixels)
Intensity               light-intensity                        (0.0...1.0)
Ambient                 intensity of the ambient light         (0.0...1.0)
Hardness                add gloss to the surface               (0.8...1.0)
Faces                   draw the faces single- or double-sided
Text                    toggle the kind of text to be plotted to the image:
                          off  : no text will be generated
                          small: plot the filename without the path
                          full : plot the full filename with path
Select Font             select the font for the generated string
File                    object-file or drawer to be scanned
Width, Height           dimensions of the image to create
BGRed, BGGreen, BGBlue  background color
TRed, TGreen, TBlue     text color

If the specified input-file cannot be found the path is scanned
as drawer to create an alphabetically sorted filelist.
Later the n-th item of this list is processed at frame n.

See the @{" Tutorial " link Tutorials} for an example.
@endnode

@node opPerspective

@{b}Perspective-Operator@{ub}

This operator adds perspective to an image.

@{b}Parameters@{ub}

Input                   input buffer
Ouput                   output buffer
Zoom                    zoom-factor for the whole image
CentreX, CentreY        centre for rotating and zooming
CamX, CamY, CamZ        camera-position
Rotate                  axis-pair to rotate around/disable rotating
Alpha                   first rotation angle
Beta                    second rotation angle
Light                   toggle lightsource on/off
LightX, LightY, LightZ  light-position
Dimish                  dimishing-radius, at this distance from the
                        light-position the intensity has fallen off to the
                        the half
@endnode

@node opWater

@{b}Water-Operator@{ub}

This operator applies a threedimensional anharmonic water-wave
to an image.

@{b}Parameters@{ub}

Input                   input buffer           (image-buffer or 3D-buffer)
Ouput                   output buffer          (image-buffer or 3D-buffer)
Zoom                    zoom factor for the whole image        (-10...10))
CentreX, CentreY        centre for zooming and rotating        (in pixels)
CamX, CamY, CamZ        camera-position                        (in pixels)
Rotate                  axis-pair to rotate around/disable rotating
Alpha                   first rotation angle                   (in degrees)
Beta                    second rotation angle                  (in degrees)
Light                   toggle light on/off
LightX, LightY, LightZ  light-position                         (in pixels)
Intensity               light-intensity                        (0.0...1.0)
Ambient                 intensity of the ambient light         (0.0...1.0)
Hardness                add gloss to the surface               (0.8...1.0)
Faces                   draw the faces single- or double-sided
Frame                   current frame
Frames                  frame count describing a full cycle
Times                   number of rings, values in the range 1..3 are
                        are always a good choice
Rings                   number of times the growing of rings is performed,
                        after one cycle the 1st ring has the
                        distance times*wavelength from the centre,
                        values 2..10 give good results
Axis                    direction of propagation:
                         "X" : parallel to the x-axis
                         "Y" : parallel to the y-axis
                         "XY": radial propagation
Amplitude               wave-amplitude, this value should be always in
                        the range 1..4
Wavelength              wavelength
OriginX, OriginY        location of the wave-source
Damping                 toggle damping on/off
Damping                 damping-value
moveXY                  specify if the deformation is applied to all
                        components (x,y,z) or not. If this option is set
                        there may occur some singularities ("bad points"),
                        but this mode is very close to the reality.

To speed up the generation of previews modify the "3DQuant"-parameter
in the @{"Processor-Window" link ProcessorWindow}.
@endnode

@node opWave3D

@{b}Wave3D-Operator@{ub}

This operator applies a harmonic wave in the threedimensional
space to an image.

@{b}Parameters@{ub}

Input                   input buffer           (image-buffer or 3D-buffer)
Ouput                   output buffer          (image-buffer or 3D-buffer)
Zoom                    zoom factor for the whole image        (-10...10))
CentreX, CentreY        centre for zooming and rotating        (in pixels)
CamX, CamY, CamZ        camera-position                        (in pixels)
Rotate                  axis-pair to rotate around/disable rotating
Alpha                   first rotation angle                   (in degrees)
Beta                    second rotation angle                  (in degrees)
Light                   toggle light on/off
LightX, LightY, LightZ  light-position                         (in pixels)
Intensity               light-intensity                        (0.0...1.0)
Ambient                 intensity of the ambient light         (0.0...1.0)
Hardness                add gloss to the surface               (0.8...1.0)
Faces                   draw the faces single- or double-sided
Frame                   current frame
Frames                  number of frame describing a full cycle
Amplitude               wave-amplitude
Wavelength              wavelength
Phase                   phase in degrees
Axis                    direction of propagation:
                         "X"      : parallel to the x-axis
                         "Y"      : parallel to the y-axis
                         "XY"     : radial propagation in the xy-plane
                         "Radial" : radial propagation in the xyz-space
OriginX, OriginY        position of the wave-source
Damping                 toggle damping on/off
Damping                 damping-value

To speed up the generation of previews modify the "3DQuant"-parameter
in the @{"Processor-Window" link ProcessorWindow}.
@endnode

@node opWrap

@{b}Wrap-Operator@{ub}

This operator wraps an image onto a sphere or a tube. An unique
feature is the deformation of "unwrapped" portions of the image
in "RADIUS"-mode.


@{b}Parameters@{ub}

Input                   input buffer           (image-buffer or 3D-buffer)
Ouput                   output buffer          (image-buffer or 3D-buffer)
Zoom                    zoom factor for the whole image
Zoom                    zoom factor for the whole image        (-10...10))
CentreX, CentreY        centre for zooming and rotating        (in pixels)
CamX, CamY, CamZ        camera-position                        (in pixels)
Rotate                  axis-pair to rotate around/disable rotating
Alpha                   first rotation angle                   (in degrees)
Beta                    second rotation angle                  (in degrees)
Light                   toggle light on/off
LightX, LightY, LightZ  light-position                         (in pixels)
Intensity               light-intensity                        (0.0...1.0)
Ambient                 intensity of the ambient light         (0.0...1.0)
Hardness                add gloss to the surface               (0.8...1.0)
Faces                   draw the faces single- or double-sided
Axis                    wrap axis:
                         "X" : wrap the image onto a tube along the x-axis
                         "Y" : wrap the image onto a tube along the y-axis
                         "XY": wrap the image onto a sphere
OriginX,OriginY         origin of the sphere/tube
Amount                  wrap-amount
Radius                  sphere/tube-radius
Method                  method used for wrapping:

                         "RADIUS": create a sphere/tube of the radius
                                   specified, wrap the image onto it and
                                   deform the unwrapped portions according
                                   to the shape
                         "AMOUNT": create a sphere/tube to fit the whole
                                   wrapped image, the specified amount-value
                                   specifies the amount of wrapping in percent

To speed up the generation of preview modify the "3DQuant"-parameter
in the @{"Processor-Window" link ProcessorWindow}.
@endnode

@node opARexx

@{b}ARexx-Operator@{ub}

This operator makes it possible to exchange images with other applications.
The basic concept is to produce an ARexx-script which causes the application
to load, process and save a temperary image created by Wildfire.

@{b}Parameters@{ub}

Input         input buffer
Ouput         output buffer
Port          ARexx-port of the application
Temp-File     path for the temperorary image to be created
Add           add a line to the ARexx-script
Kill          kill the selected line
Up            move the selected line up
Down          move the selected line down
Clear         clear the whole script
Add Variable  add a variable-entry to the selected line
Import        load a previously saved script
Export        save the current script to disk


A "normal" script should contain the three parts:
 -loading of the temporary image created by Wildfire
 -processing of this image
 -saving of the result
The 3rd part is the only important.


Every line of the script has to be entered in the format of
a C-printf-command. This allows one to use Envelopes in
such an ARexx-script.


The basic syntax is as follows:  "<formatstring>",arguments
(The enclosing '"'-characters are important.)
Three formats are supported:
 "%s" - for strings
 "%d" - for integer parameters
 "%f" - for float parameters
The number of format-specifiers must be always equal to the number
of arguments. Any special formats-strings like "%.4lf" are
not supported.

Examples:
 line to be entered:                 line generated by Wildfire:
  "integer: %d",10.3                  integer: 10
  "float: %f",10.3                    float: 10.3
  "i: %d, f: %f, s: '%s'",4,3,str     i: 4, f: 3.0, s: 'str'
To use an Envelope simply enter it's name as argument, rounding
is performed if you specify "%d" as corresponding formatstring.
The filename of the temporary image can be omitted using
the predefined argument "tempfile".



Now let's create a working example. Assume you want to have
ADPro to halve your images and to apply an Antique-effect
to the result.
At first you have to set the path of your application (which
will be started automatically if it's port cannot be located)
from within the @{" Preferences-Window " link PreferencesWindow}.
After that you have to specify the portname, in this case "ADPro".

At first entry in the script you should specify ADPro's default Loader:
 "lformat "universal""

Now the image can be loaded
 "load '%s'",tempfile

Apply the effects:
 "operator halve"
 "operator antique"

Specify the the Saver to use:
"sformat "iff""

Save the image:
 "save '%s' raw",tempfile

That's all. Now you should save this script

 "lformat "universal""
 "load '%s'",tempfile
 "operator halve"
 "operator antique"
 "sformat "iff""
 "save '%s' raw",tempfile

as "reference-script". For further purposes only the "operator"-lines
have to be replaced.

@endnode

@node opComment

@{b}Comment-Operator@{ub}

This operator simply allows you to add comments to the Processor-script.

@{b}Parameters@{ub}

String     the comment
@endnode

@node opExample

@{b}Example-Operator@{ub}

This operator acts as an example for the developer-kit.
It turns all pixels which have a brightness larger than a specified
value into grayscale.

@{b}Parameters@{ub}

Input         input buffer
Ouput         output buffer
Switch1       not used
Switch2       not used
IntVal1       not used
IntVal2       grayscale-level
FloatVal1     not used
FloatVal2     not used
@endnode

@node opRaster

@{b}Raster-Operator@{ub}

This operator applies a black raster to an image. The main
purpose of this PlugIn is to reduce the size of delta-compressed
animations without loosing too much details.

@{b}Parameters@{ub}

Input         input buffer
Ouput         output buffer
@endnode

@node opText

@{b}Text-Operator@{ub}

This operator renders text in various styles. Unlike to other programs
whole text-files can be used and edited.

@{b}Parameters@{ub}

Ouput                       output buffer
Style                       render-style:
                             "NORMAL ": use the font without applying
                                        any changes, this method should be
                                        selected using color-fonts
                             "OUTLINE": draw outlines of the selected font
                             "EMBOSS ": produce a threedimensional look
Adjust                      text-adjustment, this setting has only an effect when
                            plotting more than one line of text
Red, Green, Blue            text-color
BGRed, BGGreen, BGBlue      background-color
Strength                    thickness of the outline drawed around the
                            text in "OUTLINE"- and "EMBOSS"-mode
Intensity                   light-intensity
LightX, LightY, LightZ      light-position
HSkip                       additional space between two lines
Select Font                 select the font to use for all lines
Add                         add a line of text
Kill                        delete the selected line
Up                          move the selected line up
Down                        move the selected line down
Clear                       clear all lines of text
Import                      import text from a file
Export                      save the current text to disk
@endnode

@NODE beispiele "5. Examples"

@{b}5. Examples
-----------------------------------------------------------------@{ub}
 (i) An animation will be displayed in negative colors and a smaller
     version of the anim will be placed in the right colors over
     the `negative` animation

     Scheme:
      *STREAM to negativ and save to TEMP1
      *STREAM to halve and save to STREAM
      *Compose TEMP1 as background and STREAM as foreground
       and save to STREAM

     ARexx-Program:
      pc_add negative stream temp1
      pc_add scale stream stream width/2 height/2
      pc_add compose width/3 height/3 100 temp1 stream stream none

     NOTE:
	*The ARexx-notation is very useful. So you can take the examples
	 as macros and you`ll learn how to use the ARexx port of Wildfire,
	 too.

	*Of course you should try out the examples inside the program,
	 first. Just start @{" WILDFIRE " link WildFire.guide/MAIN}, klick on the PROCESSOR-GADGET,
	 and push the ADD BUTTON. Doubleclick on NEGATIVE and doubleclick
	 on the NEGATIVE entry in the script. Now you can select STREAM as INPUT and
	 TEMP1 as output. Do the needed things for the other 2 commands, too.

	*width and height are the height and the width of the animation or
	 the single-pictures. With the ARexx commands "T_ANIMINFO" or
	 "T_PICINFO" you can get the needed details.

 (ii) An animation will be placed on a colored background using a white
      border with shadow.

      Scheme:
	*create a colored background with width+80 and height+80 in 
	 "TEMP1"
	*create a white picture with width+20 and height+20 in "TEMP2"
	 the border-size is 10 pixels (20/2)
	*create a black picture with width+20 and height+20 in "TEMP3"
	 the border-size is 10 pixels, too
	*place the black picture on the colored background with offset
	 40x40 pixels
	*place the white picture on the colored background (now with
	 the black picture on it) with offset 30x30

	*all these things you have to do ONLY 1 time, the result-picture
	 will be saved to buffer "TEMP1" and will NOT be changed anymore!
	 So we can tell @{" Wildfire " link WildFire.guide/MAIN} that it has to do this
	  effect only for the first frame!
	*every picture from the animation will be placed with
	 offset 40x40 on the created colored picture with black and white
	 border.

      ARexx-Programm:
       /* create background and save to TEMP1  */
       pc_add createimage temp1 width+80 height+80 255 0 0  255 255 0  0 255 0  0 0 255
       pc_add createimage temp2 width+20 height+20 255 255 255  255 255 255  255 255 255  255 255 255
       pc_add createimage temp3 width+20 height+20 0 0 0  0 0 0  0 0 0  0 0 0
       pc_add compose 40 40 100 temp1 temp3 temp1 none
       pc_add compose 30 30 100 temp1 temp2 temp1 none

       /* only do this operations at frame 1 */
       pc_select createimage 1
       pc_to 1
       pc_select createimage 2
       pc_to 1
       pc_select createimage 3
       pc_to 1
       pc_select compose 1
       pc_to 1
       pc_select compose 2
       pc_to 1

       /* compose STREAM with TEMP1 for every animation-picture */
       pc_add compose 40 40 100 temp1 stream stream none

@ENDNODE


@remark /*************************************************************/
@remark /*
@remark                            Developer
@remark */
@remark /*************************************************************/

@node Developer
If you are interested in developing addional PlugIns (savers,
operators or general PlugIns) for Wildfire please contact
the author at "epgbc@cluster1.urz.Uni-Halle.DE".
If there are at leat 10 requests I will start to create
a developer-kit including working examples.
@endnode

@remark /*************************************************************/
@remark /*
@remark                            ARexx
@remark */
@remark /*************************************************************/

@node ARexx

@{b}The ARexx-port@{ub}

The ARexx-port is another powerful feature of WildFire which
allows you

  -to use all features from within other programs
  -to enhance the GUI with your own windows without
  -to write own ARexx-applications which operate like the program itself

Example: You have designed a nice special effect like a transition
         between three animations or whatever. Now you want to integrate
         this nice feature into Wildfire as a "natural feature".
         This is easy ! All you have to do is to design a so-called
         "Custom-window" with buttons, string-gadgets, switches, ...
         and to write the procedure itself.


@{b}Topics:@{ub}

 @{" Usage          " LINK ARexxUsage}
 @{" Error-Messages " LINK ARexxErrors}
 @{" Custom-windows " LINK ARexxCWindows}
 @{" Commands       " LINK ARexxCommands}

@endnode


@node ARexxUsage
The name of the ARexx-port is equal to the name of the publicscreen
opened by Wildfire.
For the first running copy of the programm the port is named "Wildfire",
for the second "Wildfire.1" and so on.
I don't think that's very usefull to run more copies at one time -
but it's possible.

The command-hierarchy is equal to the window-hierarchy.
This makes it very easy for you to find out the right name
for a particular command.
Every command consists of the hierarchy-identifier and
the function-name, e.g. the "Play"-button of the Player-window
is named "P_PLAY".

Most of the arguments are strings or integer-values. It's recommended
to enclose strings into "'"-characters otherwise they are converted
to uppercase by the ARexx-system.


There are three ways to invoke ARexx-commands:
 1. scripts
  1a) called as macros from Wildfire after pressing one of the function-keys
  1b) started from a shell
 2. direct commands
 3. external programs

Direct commands are nice to try out a special command, e.g., if you
want to check out the "PL_APPENDDIR"-command you may type in a shell-
window:

 rx "address 'Wildfire' pl_appenddir 'data:grafix/frames'"

Another way to test single commands is to use the "Command"-PlugIn.
An input string

 "pl_appenddir 'data:grafix/frames'"

would cause the same result as the example shown above.
The advantage of the use of the Command-PlugIn is the fact that it's
faster because it doesn't use ARexx and displays the results
of the in the same window. (ARexx-errors sometimes are cryptic.)

@endnode

@node ARexxCWindows
Custom-windows are another powerful feature of Wildfire.
You can create as much own windows as you want, they can
be loaded, saved, opened, closed, deleted, ... at any time.
So it's possible to create Toolmanager-like docks on the
Wildfire-screen which can be loaded at startup.

But the main purpose is to give you the possibility to enhance
the program easily and to fit it to your needs.


Window-elements
-------------------------------------------------------------------
Custom windows can contain
  -buttons
  -string-gadgets
  -switches
  -lines
  -boxes and
  -texts.
All these elements remain to the window as long as you
don't kill them.
But you have the possibility to apply graphical elements
which are not stored as structures to the window.
So you could create an own progress-bar or a function-plotter..

Attention:
If you want to have spaces in you window- or gadget-names
you have to use a special character (code 160).
(This restriction is due the command-parsing.)
Example:
space='a0'x
wnd="Transition.rexx" || space || "V0.3"

Window-coordinates
-------------------------------------------------------------------
Because Wildfire has a fontsensitve GUI you can't use absolute
coordinates to specify window-elements.
So you have to design your windows using a topaz.8-font
to ensure that they look perfect for example with a times.24-font.

If you want to design a very difficult window with 500
gadgets, 300 bevelboxes, ... it's seems to be no bad idea
to use GadToolsBox¹. Using this nice program you can drag and
size your gadgets in an easy way - just take down the coordinates
after finishing it.


A simple example
-------------------------------------------------------------------
The following example called "ConvertPics.rexx" opens a window
which lets you specify a range of your current picture-list
and has a "Convert"-button. This makes is possible to
convert only a small part of the picture-list which is
very usefull if you want to test a very complex process.

1. Program-structure

    (i) create the window, initialize the parameters
    (ii) perform an endless loop receiving messages:
          1. check for pressed gadgets
              -> start filerequester, read gadget-contents
          2. check for the closegadget
              -> exit
          3. check for the start-button
              -> check the parameters
              -> do it

2. Program

    /* Are we right ? */
    if ~show('P','Wildfire') then do
     say " Error: The Wildfire-program must be started before executing this script."
     exit
    end

    /* Initialize the global variables */
    address "Wildfire"
    options results
    wnd="Convert"
    from=1
    to=1

    /* Create the window */
    cw_kill wnd
    cw_add wnd 309 70
    /* Create the Gadget */
    cw_addgadget wnd string 202 11 84 "From"
    cw_addgadget wnd string 202 27 84 "To"
    cw_addgadget wnd button 25 46 261 "Convert"
    /* It's important to open the window before setting the gadgets */
    cw_open wnd
    cw_setgadget wnd "From" from
    cw_setgadget wnd "To" to

    /* main loop */
    do forever

     /* check if the window is still open */
     cw_isopen wnd
     qt=result
     /* no: leave the script */
     if qt=0 then call cleanup

     /* wait for gadgets */
     cw_wait wnd
     gadget=result

     /* which gadget was pressed */

     if gadget="From" then do
      /* get the "from"-value from the gadget */
      cw_getgadget wnd "From"
      from=result
     end

     else if gadget="To" then do
      /* get the "to"-value from the gadget */
      cw_getgadget wnd "To"
      to=result
     end

     else if gadget="Convert" then do
      /* now let's do it */
      c_convertpics from to
     end
    end

    cleanup:
    cw_kill wnd
    exit


¹ GadToolsBox is Copyright © 1991-93 Jaba Development

@endnode

@node ARexxErrors
There are 4 error-messages which will be shown together
with the command in the default CON:-window:
 1: wrong number of arguments
 2: wrong arguments
 3: unknown command
 4: command failed

Most of the commands are valid everywhere, but there are exeptions,
e.g. if you haven't defined any variable you can't open
the envelope-window. This would cause error 4.

Normally you can access all program functions without opening
any of the windows, but there are the following exceptions:
 -Timecodes-, AnimInfo-, Envelope- and EnvelopeAdvanced-commands
  require that the corresponding Window was opened
  (This is due the internal data-structure and no error or
   similar.)

If the program executes an ARexx-command all requesters
except the one invoked by the "M_MESSAGE"-command are
turned off, but the requester-messages are shown in the
Log-Window.

@endnode

@node ARexxCommands

The command-list below shows all available commands,
values enclosed into brackes are alternative keywords.

 Main:
  M_EXIT
  M_WAIT secs
  M_MESSAGE text
  M_REQUEST text (res=0: o.k.)
  M_OPENCONVERTER
  M_CLOSECONVERTER
  M_OPENPROCESSOR
  M_CLOSEPROCESSOR
  M_OPENEDITOR
  M_CLOSEEDITOR
  M_OPENPLAYER
  M_CLOSEPLAYER
  M_OPENPREFS
  M_CLOSEPREFS
  M_OPENINFO
  M_CLOSEINFO
  M_MOVE x y
  M_TOFRONT
  M_TOBACK
  M_OPENTMAKER
  M_CLOSETMAKER
  M_OPENIMOPTIONS
  M_CLOSEIMOPTIONS
  M_ADDICON file
  M_CLEANUP
  M_LOAD
  M_SAVE

Tools:
  T_DELPICTURELIST
  T_GETNUMBER title [preset]
  T_GETSTRING title [preset]
  T_GETFILE title [preset]
  T_GETDRAWER titlee [preset]
  T_ANIMINFO name (0=o.k.)
  T_PICINFO name (0=o.k.)
  T_GETWIDTH
  T_GETHEIGHT
  T_GETDEPTH
  T_GETCOLORS
  T_GETFRAMES
  T_GETANIMDRAWER
  T_GETPICDRAWER
  T_GETMODDRAWER
  T_GETROOTDRAWER
  T_PEXTENSION extension
  T_REQSTATUS (ON|OFF)

 Prefs:
  PR_PLAYERSCREEN name
  PR_SCREENMODE id width height depth
  PR_SCREENDEPTH depth
  PR_LOADPREFS
  PR_SAVEPREFS
  PR_OPENPATHS
  PR_CLOSEPATHS
  PR_OPENMACROS
  PR_CLOSEMACROS
  PR_DCLICKTIME val
  PR_STATISTICS (ON|OFF)
  PR_EXPERTMODE (ON|OFF)
  PR_BRUTALBLIT (ON|OFF)
  PR_MOVE x y

 Paths:
  PT_ANIMATIONDRAWER name
  PT_PICTUREDRAWER name
  PT_SOUNDDRAWER name
  PT_ROOTDRAWER name
  PT_YAFAPLAYER name
  PT_ANIMPLAYER name
  PT_MPEGPLAYER name
  PT_VIEWER name
  PT_MOVE x y

 Info:
  I_FREEMEM
  I_MOVE x y

 Text:
  TXT_TEXT file
  TXT_TEXTNC file
  TXT_MOVE x y
  TXT_CLOSE
  TXT_WAIT
  TXT_CENTRE

 Player:
  P_FILE [name]
  P_BUFFERS num
  P_ABUFFER num
  P_DISPLAY (NORMAL|ZOOMED|DITHERED)
  P_CACHING (ON|OFF)
  P_OUTPUT (HARDWARE|WINDOW|BGWINDOW|SCREEN)
  P_WAIT (ON|OFF)
  P_PLAY [from to]
  P_MOVE x y
  P_OPENANIMINFO
  P_CLOSEANIMINFO
  P_OPENTIMECODES
  P_CLOSETIMECODES

 AnimInfo:
  AI_MOVE x y
  AI_EXPORT name
  AI_IMPORT num

 Timecodes:
  TC_RANGE from to step
  TC_IMPORT name
  TC_EXPORT name
  TC_TIMERANGE num
  TC_MOVE x y

 Editor:
  E_AADD name
  E_AKILL
  E_AREPLACE name
  E_AINFO
  E_ASELECT name
  E_ASELECTNEXT
  E_ASELECTPREV
  E_AFROM from
  E_ATO to
  E_AUP
  E_ADOWN
  E_MADD name (MODULE|SAMPLE|EXECUTABLE)
  E_MKILL
  E_MREPLACE name
  E_MEDIT
  E_MSELECT name
  E_MSELECTNEXT
  E_MSELECTPREV
  E_MUP
  E_MDOWN
  E_OPENPROFILE
  E_CLOSEPROFILE
  E_OPENFILMCONTROL
  E_CLOSEFILMCONTROL
  E_PLAYALL
  E_PLAYSEL
  E_SAVEALL
  E_FILENAME [name]
  E_CLEAR
  E_EXPORT
  E_LOAD
  E_SAVE
  E_INSERT file
  E_APPEND file
  E_MOVE x y

 EditorAnimInfo:
  EAI_DISPLAY (NORMAL|ZOOMED|DITHERED)
  EAI_CACHING (ON|OFF)
  EAI_BUFFERS num
  EAI_ABUFFER num
  EAI_SPEED num
  EAI_MOVE x y
  EAI_CLOSE

 ModuleOptions:
  MO_TEST
  MO_STOP
  MO_CLOSE
  MO_MOVE x y

 SampleOptions:
  SO_TEST
  SO_STOP
  SO_CHANNEL (LEFT0|RIGHT0|LEFT1|RIGHT1)
  SO_REPEAT num
  SO_VOLUME num
  SO_CLOSE
  SO_MOVE x y

 CommandOptions:
  CO_TEST
  CO_CLOSE
  CO_MOVE x y

 Processor:
  PC_ADD type [options]
    SCALE in out width height [(PIXELS|PERCENT) (IGNORE|TAKEWIDTH|TAKEHEIGHT)]
    CROP in out left top width height
    ALPHA in alpha out left top
    COMPOSE left top mix back=(STREAM|TEMPx) fore=(STREAM|TEMPx) dest=(STREAM|TEMPx) (NONE|COLOR|INRANGE|OUTRANGE) [red1 green1 blue1 [red2 green2 blue2]]
    BALANCING in out red green blue bright contrast gamma
    DISPLACE in out radius probability seed
    ROTATE in out centreX centreY radius amount zoom
    NEGATIVE in out
    COLORTOGRAY in out (AVERAGE|LUMINANCE|CUSTOM) [red] [green] [blue]
    SHIFTLINES in out (HORIZONTAL|VERTICAL) shift [(NORMAL|POSITIVE|NEGTIVE) amount probability seed]
    SAVETEMP buffer
    LOADTEMP buffer
    KILLTEMP buffer
    LOADIMAGE out sequence repeat shift
    CREATEIMAGE out width height [red0 green0 blue0 ... red3 green3 blue3]
    PIXELIZE in out width height (ON|OFF) [(XY|X|Y) size red green blue dLeft dRight dTop dBottom]
    CONVOLVE in out mix shift (file|matrix)
    TWIRL in out (IN|OUT) centreX centreY radius amount power zoom
    PERSPECTIVE in out centreX centreY alpha beta (XY|YZ|ZX) camX camY camZ zoom [lightX lightY lightZ dimish]
    BUMP in heightMap out left top amount lightX lightY lightZ intensity
    TEXT out red green blue bgRed bgGreen bgBlue (NORMAL|OUTLINE|EMBOSS) (LEFT|RIGHT|CENTERED) hSkip font fontSize italic bold underline color textFile [strength [lightX lightY lightZ intensity]]
    ANTIQUE in out
    HALVE in out
    FLIP in out (X|Y|XY)
    MOTIONBLUR in out deltaX deltaY
    ROTATEBLUR in out centreX centreY amount radius
    BLACKHOLE in out centreX centreY amount radius
    MAGNET in out centreX centreY amount damping
    WAVE in out centreX centreY (X|Y) frames frame zoom damping (ON|OFF) amplitude wavelength phase shift
    AREXX in out port tempfile script
    COMMENT [string]
    PLASMA out width height dimension seed
    EMBOSS in out direction
    REPLACECOMP in1 in2 out (RED|GREEN|BLUE)
    OILTRANSFER in out rect
    MEDIANFILTER in out rect
    ADD in1 in2 out (ADD|SUBTRACT)
    RASTER in out
    SWAPRGB in out (RBG|GRB|GBR|BRG|BGR)
    NOISE in out intensity probability seed
    POSTERISE in out bits
    ROLL in out deltaX deltaY (ON|OFF)
    CARTESIAN2POLAR in out r0 phi0
    CUBE in out centreX centreY zoom (XY|YZ|XZ|NONE) alpha beta camX camY camZ (ON|OFF) lightX lightY lightZ intensity hardness ambient size
    WRAP in out centreX centreY zoom (XY|YZ|XZ|NONE) alpha beta camX camY camZ (ON|OFF) (NORMAL|DOUBLE) lightX lightY lightZ intensity hardness ambient (RADIUS|AMOUNT) radius amount (X|Y|XY)
    WATER in out centreX centreY zoom (XY|YZ|XZ|NONE) alpha beta camX camY camZ (ON|OFF) (NORMAL|DOUBLE) lightX lightY lightZ intensity hardness ambient frames frame (X|Y|XY) originX originY times rings amplitude wavelength (ON|OFF) damping doXY=(ON|OFF)
    WAVE3D in out centreX centreY zoom (XY|YZ|XZ|NONE) alpha beta camX camY camZ (ON|OFF) (NORMAL|DOUBLE) lightX lightY lightZ intensity hardness ambient frames frame (X|Y|XY) originX originY amplitude wavelength phase (ON|OFF) damping
    THRESHOLD in out level
    SHEAR in out originX originY amount (X|Y) zoom damping (ON|OFF)
    LWOB out centreX centreY zoom (XY|YZ|XZ|NONE) alpha beta camX camY camZ (ON|OFF) (NORMAL|DOUBLE) lightX lightY lightZ intensity hardness ambient file width height
  PC_KILL
  PC_CLEAR
  PC_SELECT type [which]
  PC_UP
  PC_DOWN
  PC_FROM num
  PC_TO num
  PC_STEP num
  PC_OPENEDIT
  PC_MOVEEDIT x y
  PC_CLOSEEDIT
  PC_MODE (COLOR|HAM6|HAM8)
  PC_DITHER (NONE|FS)
  PC_SMOOTHING (ON|OFF)
  PC_DEPTH num
  PC_CSKIP num
  PC_FILENAME [name]
  PC_LOAD
  PC_SAVE
  PC_OPENPCSINGLEPICTURE
  PC_CLOSEPCSINGLEPICTURE
  PC_OPENVARIABLES
  PC_CLOSEVARIABLES
  PC_OPENPALETTE
  PC_CLOSEPALETTE
  PC_MOVE

 Variables:
  V_ADD name
  V_SELECT name
  V_KILL
  V_RENAME
  V_SELECT name
  V_ENVELOPE
  V_FILENAME
  V_SAVE
  V_LOAD
  V_CLEAR
  V_MOVE

 Envelope:
  EV_XRANGE xmin xmax
  EV_YRANGE ymin ymax
  EV_VIEWALL
  EV_SCROLLUP
  EV_SCROLLDOWN
  EV_SCROLLLEFT
  EV_SCROLLRIGHT
  EV_SELECT num
  EV_SELECTNEXT
  EV_SELECTPREV
  EV_KILL
  EV_ADD xval yval
  EV_MOVE xval yval
  EV_DRAG xval yval steps
  EV_LOAD name
  EV_SAVE name
  EV_INTERPOLATION (SPLINE|BEZIER|LINEAR)
  EV_USE
  EV_CANCEL
  EV_OPENADVANCED
  EV_MOVE

 SinglePicture:
  PCS_INPUT name
  PCS_OUTPUT name
  PCS_TEST [time]
  PCS_SAVE
  PCS_SAVERENDERED
  PCS_APPLYDIMENSIONS
  PCS_FRAME num
  PCS_MOVE
  PCS_SCREENMODE id
  PCS_PREVIEWWIDTH val
  PCS_PREVIEWDEPTH val
  PCS_PREVIEW (ENABLED|DISABLED)

 EnvelopeAdvanced:
  EVA_RANGE from to step
  EVA_SCALE
  EVA_SHIFT
  EVA_LOADCURVE name
  EVA_SAVECURVE name
  EVA_LOADTIMECODES
  EVA_SAVETIMECODES
  EVA_XVAL val
  EVA_YVAL val
  EVA_CLOSE
  EVA_MOVE

 Converter:
  C_INPUTTYPE (ANIMATION|YAFAANIM|BLACKFRAMES)
  C_INPUTEXPORT
  C_INPUTFILENAME name
  C_OUTPUTTYPE (PICTURES|YAFAANIM|IFFANIM|NONE)
  C_OUTPUTEXPORT
  C_OUTPUTFILENAME name
  C_ANNOTATION (ON|OFF)
  C_ANNOFILENAME [name]
  C_ANNOSTRING [string]
  C_LOADSESSION
  C_SAVESESSION
  C_CONVERT
  C_CONVERTPICS first last
  C_OPENINPUTOPTIONS
  C_OPENOUTPUTOPTIONS
  C_CLOSEINPUTOPTIONS
  C_CLOSEOUTPUTOPTIONS
  C_PREVIEW (NONE|WINDOW|SCREEN)
  C_PROCESSOR (ENABLED|DISABLED)
  C_MOVE

 YAFAOptions:
  YO_IMAGEDATA (RAW|CHUNKY)
  YO_DELTA (NONE|BYTE|WORD|LONG|BYTEBR|WORDBR|LONGBR)
  YO_COMPRESSION (NONE|XPK)
  YO_COMPRESSOR name
  YO_MODE mode
  YO_COLORMAP (UNLOCKED|LOCKED)
  YO_SPEED num
  YO_FORCETIMECODES (ON|OFF)
  YO_OPENANALYSIS
  YO_MOVE
  YO_APPLY name

 Analysis:
  A_FRAMES num
  A_TEST
  A_USE
  A_CANCEL
  A_MOVE

 ANIMOptions:
  AO_TYPE (ANIM5|ANIM7S|ANIM7L)
  AO_COLORMAP (UNLOCKED|LOCKED)
  AO_SCREENMODE mode
  AO_MOVE

 PictureOptions:
  PO_BASENAME name
  PO_SCREENMODE mode
  PO_SHIFT num
  PO_MOVE
  PO_TYPE (RENDERED|TRUECOLOR)

 CreateFrames:
  CF_WIDTH num
  CF_HEIGHT num
  CF_FRAMES num

 PictureList:
  PL_INSERT names
  PL_APPEND names
  PL_INSERTDIR name
  PL_APPENDDIR name
  PL_DUPLICATE times
  PL_SORT
  PL_CHECK
  PL_RANGE from to step
  PL_REMOVERANGE
  PL_TIMERANGE num
  PL_SHOW
  PL_SELECT name [which]
  PL_SELECTNEXT
  PL_SELECTPREV
  PL_OPENPICTUREINFO
  PL_CLOSEPICTUREINFO
  PL_MOVE

 Custom-Windows:
  CW_CLOSE name
  CW_OPEN name
  CW_MOVE name x y
  CW_ADD name width height
  CW_KILL name
  CW_ADDGADGET window (STRING|BUTTON|SWITCH) left top width name [action]
  CW_GETGADGET window name
  CW_SETGADGET window name value
  CW_WAITGADGET window name
  CW_ADDTEXT window left top pen text
  CW_ADDLINE window x1 y1 x2 y2 pen
  CW_ADDRECT window left top width height pen (NORMAL|FILLED|BBOX|BBOX2)
  CW_DRAWTEXT window left top pen text
  CW_DRAWLINE window x1 y1 x2 y2 pen
  CW_DRAWRECT window left top width height pen (NORMAL|FILLED|BBOX|BBOX2)
  CW_SAVE name
  CW_LOAD name
  CW_WAIT name
  CW_ISOPEN name

 Palette:
  PP_FILENAME
  PP_LOAD
  PP_SAVE
  PP_COLOR color red green blue
  PP_STATE (ENABLED|DISABLED)
  PP_MOVE x y

 FilmStrip:
  FC_PLAY file loops rows cols [left top]
  FC_FILE file
  FC_FILMFILE file
  FC_RANGE from to step
  FC_WIDTH width
  FC_SIZE rows cols
  FC_COLOR (ORIGINAL|GRAY)
  FC_UPDATE
  FC_CLEANUP
  FC_LOAD
  FC_SAVE
  FC_CONVERT
  FC_APPEND
  FC_SCROLL val (negative->scroll left)

 CRange:
  CR_FROM num
  CR_TO num
  CR_STEP num
  CR_STATE (ENABLED|DISABLED)

 IMOptions:
  IM_RESET
  IM_FILE file
  IM_TRASHCAN (KILLICON|DELETE)

 Icon-Saver:
  IC_Image1 file
  IC_Image2 [file]
  IC_ICON file
  IC_WIDTH width
  IC_DEPTH depth
  IC_COLOR (COLOR|GRAY)
  IC_CONVERT

 TMaker:
  TM_INPUT1 file
  TM_INPUT2 file
  TM_OUTPUT file
  TM_TEMP drawer
  TM_FRAMES frames
  TM_PREVIEW (NONE|WINDOW|SCREEN)
  TM_SHOWEXAMPLE (ON|OFF)
  TM_TYPE type subtype
  TM_CREATETEMPFILES
  TM_KILLTEMPFILES
  TM_PLAY
  TM_CONVERT
  TM_CREATEEXAMPLES

@endnode

@remark /*************************************************************/
@remark /*
@remark                            Tutorials
@remark */
@remark /*************************************************************/

@node Tutorials

@endnode

@node PowerPlugs!

@{b}PowerPlugs! - it's not a dream @{" Example " system "visage wf:PowerPlugs!.jpg"} @{ub}


@{u}Introduction@{uu}

PowerPlugs! are a special version of Wildfire's 3D-operators
allowing the superposition of effects in the threedimensional space.
For example after wrapping an image onto a cube a radial-wave
could be applied to the cube.

This is of course an incredible mega-feature many 3D-programs
are missing.
But many users may have no need for it because they have slow
machines with only some memory or don't need any 3d-effect.

So you have to register for the PowerPlugs!-package separately.
The price is 50,00 DM or 40,00 US-$. I think this is quite fair
for such unique features and makes it possible to keep the low price
of the base-package.

After registering you will receive an extended version of the
"wildfire.library" which enables the handling of so-called
"3D-temp-buffers".
If you have installed the normal version of the library (registered
or not) all 3D-operators are restricted to operate on image-
buffers (STREAM and TEMP1, ..., TEMP8).
After installing the extended PowerPlugs!-library four
additional buffers can be used: TEMP3D1, ... TEMP3D4.


@{u}Usage@{uu}

The usage is quiet simple. If you specify a 3d-temp-buffer
instead of an image the transformation is applied to
a virtual object and not to an image. This means that
all "final" transformation operations like rotating, scaling
or adding light are not performed. 3d-temp-buffers
can be specified both as input and output.

Example: You want to linearcombine two simple waves.

          Add a Wave3D-effect and set the originX-value to 60.
          Set the output-buffer to TEMP3D1.
          Add a second Wave3D-effect and sets it's originX-value to 260.
          Set the input-buffer to TEMP3D1.

         So what happens ? The image is read and deformed by the first
         Wave3D-operator but not rotated, scaled or rendered.
         The result is read in by the second Wave3D-operator, deformed,
         rotated and rendered.


@{u}Operators@{uu}

The following operators support the PowerPlugs!-concept and
can therefore combined in any manner:

   @{" Cube            " link opCube           } Wrap an image on a cube                    @{" Example " system "visage wf:doc/pictures/Cube.pic"}
   @{" Water           " link opWater          } Apply an anharmonic water-wave to an image @{" Example " system "visage wf:doc/pictures/Water.pic"}
   @{" Wave3D          " link opWave3D         } Apply a harmonic wave to an image          @{" Example " system "visage wf:doc/pictures/Wave3D.pic"}
   @{" Wrap            " link opWrap           } Wrap the image on a sphere or a tube       @{" Example " system "visage wf:doc/pictures/Wrap.pic"}

You may ask "Only four of them ?".
So have a look at the example-picture again and keep in mind that all
parameters may be animated easily.

@{" Example again " system "visage wf:PowerPlugs!.jpg"}


@{u}Updates@{uu}

The extension of this package depends on your feedback. If there
are many registrations I will start to develop more complicated
and incredible effects which will be available as free updates.

@endnode
