Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/doc/xaos.texinfo
diff options
context:
space:
mode:
authorBernie Innocenti <bernie@codewiz.org>2010-05-03 21:53:47 (GMT)
committer Bernie Innocenti <bernie@codewiz.org>2010-05-03 21:53:47 (GMT)
commit1030dc837b10a03a02a85d5504cbeec168ce49e2 (patch)
tree698eefa87ac437deaf36a4141b326f8ce7986692 /doc/xaos.texinfo
Import XaoS r489 (trunk after version 3.5)
Diffstat (limited to 'doc/xaos.texinfo')
-rw-r--r--doc/xaos.texinfo3468
1 files changed, 3468 insertions, 0 deletions
diff --git a/doc/xaos.texinfo b/doc/xaos.texinfo
new file mode 100644
index 0000000..fbcc70c
--- /dev/null
+++ b/doc/xaos.texinfo
@@ -0,0 +1,3468 @@
+\input texinfo @c -*-texinfo-*-
+
+@c The original files are xaos.geninfo and xaos.hlp. xaos.texinfo is
+@c automatically generated. So make all changes in the orignal files please.
+@c To regenerate xaos.texinfo, please run "mktexinfo".
+
+@c Use A4 paper - If you don't like that, remove the following 3 lines.
+@iftex
+@afourpaper
+@end iftex
+
+@setfilename xaos.info
+@settitle An fast realtime interactive fractal zoomer --- user's manual
+@dircategory Graphics
+@direntry
+* XaoS: (xaos). A fast real-time interactive fractal zoomer
+@end direntry
+
+
+@ifinfo
+@copyright{} 1996-2008 Jan Hubicka and the XaoS Development Team
+
+Permission is granted to make and distribute verbatim
+copies of this manual provided the copyright notice and
+this permission notice are preserved on all copies.
+
+@end ifinfo
+
+@c %**end of header
+
+@set VERSION 3.4
+@set DATE April 17, 2008
+
+@titlepage
+
+@title{XaoS @value{VERSION}}
+@subtitle{A fast real-time interactive fractal zoomer --- User's manual}
+
+@author{Jan Hubi@v cka}
+@tex
+Dukelsk\'ych bojovn\'\i ku 1944
+@end tex
+@*
+390 03 T@'abor @*
+Czech Republic
+
+Email: @code{jh@@ucw.cz}
+
+@value{DATE}
+
+@page
+@vskip 0pt plus 1filll
+@vskip 0pt plus 1filll
+
+@copyright{} 1996-2008 @tex Jan Hubi\v cka and the XaoS Development Team
+@end tex
+
+Permission is granted to make and distribute verbatim
+copies of this manual provided the copyright notice and
+this permission notice are preserved on all copies.
+
+@end titlepage
+
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@node Top, Overview, (dir), (dir)
+
+@ifinfo
+@top XaoS @value{VERSION}
+@flushright 1.0
+A real-time interactive fractal zoomer
+User's manual
+@value{DATE}
+@end flushright
+
+This manual contains user documentation about XaoS --- a fast real-time fractal
+zoomer. XaoS uses a development model, so sources are freely available. The
+file @code{xaosdev.texinfo} in the source documentation contains a hacker's
+manual (design overview, algorithm description etc.).
+@end ifinfo
+
+@menu
+* Overview:: What does this software do then?
+* tutorial:: XaoS tutorial
+* controls:: Basic controls
+* video:: How to encode video files
+* format:: XaoS's file format description
+* writehelp:: How to write XaoS help files
+* xshl:: XaoS simple hypertext language
+* drivers:: Driver specific documentation
+* menus:: Functions, menu items and command line parameters
+* about:: Credits
+* support:: Getting Support
+* index:: Function index
+@end menu
+
+
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@node Overview, tutorial, Top, Top
+
+@chapter Overview
+@menu
+* Why?:: Why yet another fractal generator?
+* What?:: What does this software do then?
+@end menu
+
+@node Why?, What?, Overview, Overview
+@section Why yet another fractal generator?
+
+
+We decided to make XaoS, because all fractal browsers we know of take a
+long time to calculate each image. You may browse nice images
+generated by them but real impressions of fractals --- the self
+similarity and infinite zooming into the nice parts of fractals ---
+can be seen only in animations. There are many programs available that
+make nice animations, but they take a long time to calculate and lots
+of space on disk. Most such animations are quite ugly because their
+authors can't see them without many hours of calculations.
+
+A natural question is: is it possible to generate such animations in
+real-time? The answer was negative for many years, since the Mandelbrot set is
+very computationally expensive. Things are changing. Today's computers
+are fast enough to calculate approx. 10.000 of pixels per frame,
+which is enough
+for a very low resolution animation (100x100). Several programs doing that
+are available. But 100x100 animation still looks quite ugly. To make
+animation nice you need at least 320x200 pixels. And that is 6 times more!
+One possibility is to wait until computers will be fast enough, but
+it will take many years, and then 320x200 animations will be obsolete
+and everyone will want 1024x768 resolution instead or more.
+
+We found a special algorithm that saves up to 99.98% of calculations during
+zooming by reusing pixels already calculated in previous frames. There were
+some programs doing similiar tricks before but we don't know about any able
+to do zooming interactively with a speed similar to XaoS. Many other tricks
+were later implemented XaoS to achieve yet higher framerates. Now XaoS does
+up to 120 frames per second on a 120Mhz pentium in a fullscreen 320x200
+animation, and calculates an average of 160 (0.24%) pixels per frame. This makes
+XaoS fast enough to achieve its primary goal, realtime animation, but there
+are still many areas that could improve, since more complex fractals,
+higher resolutions, or slower computers still bring many problems.
+
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@node What?, , Why?, Overview
+@comment node-name, next, previous, up
+@section What does this software do then?
+
+XaoS is a realtime interactive fractal zoomer. This means that it lets you
+zoom smoothly into any place in the fractal you choose without the many hours
+of calculation required by most other fractal generators. It now has many
+other features too, like 13 different fractal types, autopilot, special coloring
+modes, support for various bit depths (8bpp, truecolor, hicolor and realcolor),
+random palette generation, color cycling etc...
+
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@node tutorial, controls, Overview, Top
+
+@chapter XaoS tutorial
+
+This is a brief introduction to the basic XaoS features.
+
+@section How to zoom
+The main advantage of XaoS is that after a few seconds' delay to calculate
+the first image, you may choose any point with the mouse and press the @emph{left} button.
+The image will start to zoom smoothly into the point you choose. You may move
+the mouse and zoom smoothly into interesting areas. By pressing the @emph{middle
+button} (or @emph{left+right} buttons) you may also
+@emph{move the image} using ``drag & drop'' if you missed an interesting
+place. @emph{Unzooming} is also possible by using the @emph{right button},
+but it is much slower because optimizations are not so effective as for zooming.
+
+In case you think that the default @emph{speed} is boring (it is quite slow, to
+make XaoS smooth on a slow computer) you may change it by pressing @emph{arrow
+up/down}. But faster zooming is more expensive, so if the speed is too high
+you will see little but funny colorful blinking rectangles.
+
+@section Autopilot
+
+To make XaoS yet more impressive we made a special autopilot that
+automatically drives into interesting boundaries of the set. So you can
+press @code{A}, play your favorite music, drink coffee and relax. I never
+tried this but it should be really relaxing! Many pictures in the XaoS
+gallery were discovered using the autopilot.
+
+The autopilot also has some additional features. It turns back when the
+zoomed picture stops being interesting, and is able to spot when it's zoomed
+into a really boring part (or has reached the limit of floating point
+numbers) and restart zooming from the top.
+
+@section Various fractal formulae
+
+XaoS also supports formulae other than the Mandelbrot set. You may change
+@emph{formula} using the @emph{number keys}
+or @emph{SHIFT+letters}.
+
+
+
+On keys @code{1} to @code{5} are @emph{Mandelbrot sets of various power}. The ``normal''
+Mandelbrot set is on key @code{1}.
+
+On key @code{6} is a fractal called @emph{Newton}. It is Newton's famous formula for finding roots.
+
+On key @code{7} is the @emph{fourth ordered Newton} fractal.
+
+On key @code{8} is a fractal called @emph{Barnsley}.
+
+On key @code{9} is @emph{Barnsley's second} fractal.
+
+On key @code{0} is @emph{Barnsley's third} fractal.
+
+With keys @code{SHIFT-A} you can display a fractal called @emph{octo}. It is a fractal that Thomas
+discovered in fractint.
+
+With keys @code{SHIFT-B} you can display a fractal called @emph{Phoenix}. It is a very nice and quite famous fractal.
+
+With keys @code{SHIFT-C} you can display a fractal called @emph{Magnet}. This fractal has quite a complex formula so it is
+a bit slow.
+
+With keys @code{SHIFT-D} you can display the @emph{Magnet2} fractal.
+
+The rest of the built-in fractals are accessible through an other menu, but
+you can still use the hotkeys.
+
+On @code{SHIFT-E} is a fractal called @emph{Triceratops} found by Arpad.
+
+On @code{SHIFT-F} is a fractal called @emph{Catseye} found by Arpad.
+This is more interesting if you change the bailout value.
+
+On @code{SHIFT-G} is a fractal called @emph{Mandelbar}. It was in
+Gnofract4d, and they found it at:
+http://mathworld.wolfram.com/MandelbarSet.html
+
+On @code{SHIFT-H} is the @emph{Lambda} fractal.
+
+On @code{SHIFT-I} and @code{SHIFT-J} are the @emph{Manowar}
+and @emph{Spider} fractals, they were found by users of fractint.
+(Scott Taylor or Lee Skinner)
+It was on http://spanky.triumf.ca/www/fractint/
+taylor_skinner_type.html
+
+The next 3 fractals are famous classic fractals.
+
+On @code{SHIFT-K} is the @emph{Sierpinski} Gasket.
+You can change its shape by selecting another Julia seed.
+(This is for technical reasons.)
+
+On @code{SHIFT-L} is the @emph{Sierpinski Carpet.}
+It's shape can also be changed by selecting another Julia seed.
+
+On @code{SHIFT-M} is the @emph{Koch Snowflake.}
+
+
+
+@section Out-coloring modes
+
+To make fractals yet more interesting, more coloring modes for points
+outside the set are provided. ``Classical coloring mode'' uses the number of
+iterations that the orbit required to escape to (nearly) infinity. You can change this
+mode from the @emph{Fractal menu} or by pressing key @code{C}
+To see more about coloring modes, try the tutorial on Incoloring modes from the XaoS features overview.
+
+Those cryptic names for coloring modes are mathematical formulae, where @emph{iter} means number
+of iterations, @emph{real} means real coordinate of last orbit, and @emph{imag} means imaginary
+coordinate of last orbit.
+
+@section In-coloring mode
+
+In-coloring mode is similar to out-coloring, except that it changes how
+things inside the set are displayed. This can also be changed from the @emph{fractal
+menu} or by pressing @code{F}.
+
+You might also want to see the tutorial on
+Out-coloring modes from the XaoS features overview.
+
+@section Planes
+
+All fractals displayed by XaoS are functions with a complex parameter. It
+can be displayed in the normal complex plane, where x is the real part of
+the number, and y is the imaginary part; but it can also be displayed in
+a number of other planes. You can select the plane to use from the
+@emph{Fractal menu}, or by pressing @code{I}.
+
+Like the coloring modes, planes have cryptic names. You guessed it, they're
+mathematical formulae. Here @code{mu} means coordinates in the normal
+complex plane. If you have coordinates in @code{1/mu} plane, and you need
+coordinates in the a complex plane (to calculate the Mandelbrot set) you
+simply use the coordinates as mu. Lambda is another plane that can be
+converted to mu using a similar formula.
+
+@table @strong
+@item mu
+normal mode.
+
+@item 1/mu
+Inversion: infinity goes to 0 and 0 goes to infinity.
+
+@item 1/(mu+0.25)
+Similar to inversion, but moves the center outside of the
+Mandelbrot set so that it looks parabolic.
+
+@item lambda
+Lambda plane.
+
+@item 1/lambda
+Inversion of lambda plane.
+
+@item 1/lambda-1
+Inversion with moved center.
+
+@item 1/(mu-1.40115)
+A very interesting mode for the Mandelbrot set. It makes small things
+big, so you can browse the set's details easily.
+@end table
+
+
+@section Mandelbrot/Julia switching
+
+Most of the fractals displayed by XaoS (currently all of them) have two
+forms: Mandelbrot and Julia. Every point in a Mandelbrot set has its
+own Julia set. To see more about this correspondence, try the tutorial on
+Julia set from the Introduction to fractals.
+
+In the Mandelbrot mode, you can get a corresponding Julia by moving the mouse
+to an interesting point and pressing @code{M}. To get back press @code{M}
+again. Some fractals (Barnsley and phoenix) are already in their Julia
+versions, because the Mandelbrot ones are boring. But by pressing @code{M}
+in such fractal you should get the Mandelbrot version, and by choosing another
+point as the base point and pressing @code{M} again you should get a
+completely different fractal. The most interesting points for Julia sets
+are at the boundaries of the Mandelbrot set. Most of the Julias inside or
+outside the set are boring.
+
+
+@section Fast Julia preview mode
+
+Fast Julia mode is a quick way to find a point to use as a base for the Julia
+set.. Just press @code{J} and a small Julia set will be displayed in the top
+left corner. Then move the mouse around with button 1 depressed, and the Julia
+for the point the mouse is over will be automatically generated.
+
+@section Palette
+
+If you think that the default XaoS colors are ugly or you are just
+bored by them you can change it by pressing @code{P}. XaoS will
+automatically generate random palettes. Many of them look ugly, so
+press @code{P} again to get another one until you find one you like.
+
+@section Filters
+
+Many interesting effects are done by post-calculation filters. @xref{filter}.
+XaoS has filters that do everything from embossing, through motion-blurring,
+right through to turning the fractal into a stereogram. To enable them use
+the @code{filter menu} or press @code{E}.
+
+@section Palette cycling
+
+This is a very old trick that makes the Mandelbrot set a little flashier. You
+may enable or disable it using @code{Y}. In the truecolor modes you need
+to enable the palette emulator filter first. This is done
+via the @code{E} key, or from the filter menu.
+
+@section Changing number of iterations
+
+To calculate fractals perfectly, you need an infinite number of
+iterations. XaoS does just the first few of them, so after lots of zooming
+you may get into a place that looks quite boring, and the boundaries of the
+set are rounded, without any interesting details. This can be changed by
+changing the number of iterations:
+
+Press and hold @code{arrow right} and wait until iterations are high enough.
+This may slow down calculation much. To reduce number of iterations
+press @code{arrow left}.
+
+@section Changing resolution
+
+XaoS usually starts in a low resolution (320x200 or thereabouts) to make
+calculations faster. If you have a fast computer or you need to
+save bigger @code{.gif} images, you may change the resolution. This
+can be done by pressing @code{=} in the full screen drivers, or simply
+by resizing the XaoS window.
+
+@section Changing driver
+
+XaoS usually has more than one driver available. You may change it on
+the fly in case you want a different one. For example, XaoS started in X11
+can be switched at runtime to use the AA driver. This can be done from the
+UI menu.
+
+This action is bit dangerous, because XaoS can crash during initialization
+if there is some problem with initialization; XaoS tries to initialize a new
+driver, and if it fails it attempts to return back to the original. Sometimes
+this is impossible, and all XaoS can do is terminate..
+
+@section Other features
+XaoS has many other features, but they don't fit into this tutorial. Most of
+them are available from the menu, so you can experiment with them. You might
+also want to see the @emph{animated tutorials} from the @emph{help menu},
+to have an idea what XaoS can do.
+
+
+@c ## chapter tutorial ##
+
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@comment node-name, next, previous, up
+@node controls, video, tutorial ,Top
+
+@chapter Basic controls
+By default the mouse buttons work in the following way:
+
+@table @strong
+@item left
+zoom in
+@item right
+zoom out
+@item middle
+move fractal in a drag-and-drop fashion
+@end table
+
+@emph{Note:} Since most Macs only have one button mice, these controls
+are emulated on Mac OS X using modifier keys. See the help section on
+Mac OS X for details.
+
+This behavior can change. If you enable rotation, the first button is used for rotating
+fractals. Also, in fast Julia mode, the first button is used to change the seed.
+
+If you don't have a middle button, press both buttons to enable
+emulation.
+
+After few minutes of zooming you will probably exceed the precision and the
+fractals will get boring. If you are getting strange big rectangles on the screen,
+you probably reached the numeric limit: there is no way to avoid this except
+un-zoom back and choose a different area. It doesn't hurt so much, since you have
+zoomed approximately 64 051 194 700 380 384 times, so there are quite a lot of areas to
+explore. Algorithms with unlimited precision exist, but they are still too
+slow for real-time zooming.
+
+The other possibility is that you have reached the iteration limit. The fractal is
+calculated approximately, and in this case you need to increase number of
+iterations used for approximation (and decrease the speed in the process).
+This is done from the menu or using the arrow keys @emph{Left} and @emph{Right}.
+
+An @emph{Up} and @emph{Down} keys should be used to change zooming
+speed. Note that higher speed costs more and image will be blocky.
+
+This behavior can also change. With palette cycling enabled, @emph{Left}
+and @emph{Right} keys change cycling speed; in continuous
+rotation they change rotation speed.
+
+All other functions are available from the menu, which (in the default
+configuration) are displayed when you move the mouse to the top of the
+screen/window. It is useful to learn the shortcut keys, which are
+shown in gray next to the menu items they trigger.
+
+
+@c ## chapter controls ##
+
+
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@comment node-name, next, previous, up
+@node video, format, controls ,Top
+
+
+@chapter How to encode video files from XaoS
+
+To create a video, make and @code{xaf} file first (the easiest way to do this is
+to use the @emph{record} function in the file menu). Then you need to render
+the animation. XaoS can output sequences of ordinary @code{PNG} images, that
+can later be used by a video encoder.
+
+@section Generating image sequences for video
+
+To generate an image sequence, choose @emph{Render Animation} from the @emph{Misc}
+menu. You can also use the following command on the command line:
+
+
+@example
+xaos -render [filename] -size 352x240 -antialiasing
+-renderframerate 24 -basename [basename]
+@end example
+
+
+@emph{File to render} (@code{[filename]}) is the name of the @code{xaf} file,
+@emph{Basename} (@code{[basename]}) is the name used as the base filename for rendered images. This should also include the path where you want to save the images.
+XaoS adds a four digit sequence number and @code{.png} extension to this name automatically.
+
+You might also want to change the resolution. Make sure that the resolution
+you choose is supported by the video codec you wish to use.
+
+The framerate can also be altered. Make sure you choose a framerate that is supported by
+the video codec you wish to use.
+
+@emph{Antialiasing} (@code{-antialiasing}) is used to produce anti-aliased images.
+It takes a much longer
+time and much more memory to calculate them, but resulting images are better
+for video compression and they result in a much smaller video file.
+(the same is true of @emph{JPEG images})
+
+On the other hand, the other XaoS rendering option @emph{Always Recalculate} (@code{-alwaysrecalc}) (which disables
+XaoS's zooming optimizations) is @emph{not recommended}. If that's used, the
+sequence of animation then contains quite a lot of extra information, which
+increases size of video file, but because of the codec's lossy compression it is hard
+to see any difference, so it's not worth it.
+@section Rendered files
+Once you start it, XaoS will generate thousands of frames. They take quite
+a long time to calculate and save, and consume plenty of disk space.
+(e.g. to render part 1 of the tutorial you need about 60MB and half an hour of time).
+
+All images are named @code{[basename]framenum.png}. For example @code{intro0001.png} is
+the first frame of the animation intro. If consecutive frames are the same, XaoS
+doesn't save them, so some frames may be missing. If your encoder can't handle
+that, you will need to write a simple script which will fill in the gaps by means
+of @code{mv} or symbolic linking.
+
+A list of all filenames is saved into the file @code{[basename].par}, where each line is
+the name of one frame. The names repeat here if necessary, so you can use this
+file to supply filenames to the encoder.
+@section Encoding videos
+Once XaoS has generated the png files for each frame of the animation, you
+can use a third-party video encoder to convert the sequence of images into
+a video file. We currently recommend the following encoders, which support
+a wide variety of video codecs and file formats:
+@table @strong
+@item ffmpeg
+Available from: @code{http://ffmpeg.mplayerhq.hu/}
+Instructions: @code{http://ffmpeg.mplayerhq.hu/faq.html#SEC12}
+@item mencoder
+Part of mplayer, available from: http://www.mplayerhq.hu/
+Instructions: @code{http://www.mplayerhq.hu/DOCS/HTML/en/menc-feat-enc-images.html}
+@end table
+These are both command line tools. If you prefer a graphical tool, you may
+prefer Quicktime Pro from Apple (http://www.apple.com/quicktime/pro/). However,
+this software costs approximately US$30, and the authors of XaoS have no
+experience with it. Although QuickTime may be easier to use, the two free
+encoders above are just as capable once you learn how to use them.
+
+
+Note: we used to recommend Berkeley parallel MPEG encoder to
+encode the generated png files into MPEG videos. We have kept
+the instructions mainly for historic purposes.
+
+
+@c ## chapter video ##
+
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@comment node-name, next, previous, up
+@node format, writehelp,video ,Top
+@chapter XaoS's file format
+This section describes the format used by XaoS for animations, configuration
+files and saved positions. All these files have a common format, designed
+to be easily readable, to allow manual editing of files and easy conversion by
+other programs.
+
+I also taken care to make it easily extensible for future versions of XaoS
+so I hope there will not be many incompatibilities between various XaoS
+versions.
+
+The format is a simple set of commands executed sequentially. XaoS does not provide
+any variables/cycles as usual scripting languages do, but future extension to
+full-blown Scheme should be easy since the format uses Scheme-like syntax.
+The syntax of every command is:
+
+@code{(command_name }@emph{[param1] [param2]}@code{)}
+
+where parameters are optional and separated by whitespace (an arbitrary number
+of spaces, tabs and newlines). The parameters can have the following types:
+
+@table @strong
+@item integer
+number w/o decimal point (@code{123})
+@item float
+floating point number in decimal notation with optional exponent (@code{1.23E2})
+@item keyword
+text started by quote @code{'}. It is used to pass various string constants
+like formula name (@code{'mandel}) Quote is required for scheme compatibility
+@item string
+Text inside double quotes. The only parameter that should contain whitespace
+@item boolean
+@code{#t} for true or @code{#f} for false
+@end table
+
+There is a complete description of all XaoS functions (with some examples) and an
+index of functions in the XaoS registry. @xref{menus}. You may particularly want
+to read about the animation functions. @xref{animf}. Also, the following functions
+are significant:
+
+@table @strong
+@item load
+
+This function loads and interprets a file. It works similarly to @code{#include}
+in C.
+@item initstate
+
+Available in version 3.0 and above, this function resets XaoS's state to default
+values. This command should be at the beginning of each animation file,
+since otherwise some stuff previously enabled by user could cause unexpected
+effects. State is not reset by default before playing animations since it would
+make it impossible to write macros. Current versions don't really need macros, but
+in future versions, when the Scheme programming language will be available, this
+should be a much more interesting subject.
+@item usleep
+
+This function waits for a selected amount of time(in usec) before processing the
+next command. The screen is recalculated and displayed at the beginning of
+the sleep if necessary. The remaining time is spent by waiting, calculating if
+necessary, or performing any animation you entered via animation commands.
+@item wait
+
+Waits until the animation or image rendering is complete. Do not call this
+function when zoom, or continuous rotation is active otherwise deadlock happens. It is
+a good idea to call it immediately before text subtitles are displayed, since it looks
+ugly when they are displayed over a blocky unfinished fractal. Because the
+degree of blockiness at a given instant is a function of your machine speed,
+it may look nice for you but ugly for others with slower machines. Also
+you should call this after an animation is performed, before the switch to another
+fractal happens; since the switch involves calculation, the screen is stopped
+for a while and an unfinished fractal there looks ugly.
+You should also call it, when you want to do something as soon as possible.
+@end table
+
+Example:
+
+
+@example
+;configure everything for the first frame
+(inistate)
+(palette 1 1163254293 0) ;custom palette
+(cycling #t) ;enable cycling
+(cyclingspeed 7)
+(maxiter 276) ;higher number of iterations
+(range 3) ;default range for solid guessing
+(usleep 1000000) ;second frame starts here
+(moveview -1.8101154154614007889 -8.2687205907162041209E-05)
+;just move the image
+(usleep 1000000) ;third frame
+(morphview -1.8101154154614007889 -8.2687205907162041209E-05
+6.277210971069452361E-10 6.2772109785334669875E-10)
+;10 seconds of zooming into selected
+rectangle
+(usleep 100000000)
+@end example
+
+
+The best way to learn XaoS command language is probably to read position files
+and modify them. For example, to create zooming animation from the original
+file:
+
+
+@example
+(initstate)
+(defaultpalette 0)
+(formula 'mandel)
+(view -1.64128273713 -5.50393226816E-05 9.69332308848E-08
+9.69332308834E-08)
+@end example
+
+
+Just change the @code{view} command to @code{morphview}, and add @code{usleep}:
+
+
+
+@example
+(initstate)
+(defaultpalette 0)
+(formula 'mandel)
+(morphview -1.64128273713 -5.50393226816E-05 9.69332308848E-08
+9.69332308834E-08)
+(usleep 10000000)
+@end example
+
+
+The following code produces Julia morphing in the real axis:
+
+
+@example
+(initstate)
+(fastjulia #t)
+(juliaseed -2 0)
+(morphjulia 2 0)
+(usleep 2000000)
+@end example
+
+
+
+And following is the ``rotozooming'' animation:
+
+
+
+@example
+(initstate)
+(fastrotate #t)
+(morphview -1.64128273713 -5.50393226816E-05 9.69332308848E-08
+9.69332308834E-08)
+(morphangle 300)
+(usleep 10000000)
+(wait)
+(fastrotate #f)
+@end example
+
+
+
+@chapter XaoS gallery
+
+I plan to make a gallery of animations and position files on the XaoS home-page,
+so please send any nice animations and images you created using XaoS
+to the mailing list or upload them to our website.
+@c ## chapter format ##
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@comment node-name, next, previous, up
+@node writehelp, xshl,format ,Top
+@chapter How to write XaoS help files
+XaoS help is stored in the file @code{help/xaos.hlp}. It is divided into parts,
+each part being started by a @emph{keyword}. In the help file keywords are
+written as @code{%keyword}
+
+If you are writing documentation about some command in the XaoS function
+registry, use the same keyword as the name of the command in order to make
+context sensitive help work.
+
+
+@c ## chapter writehelp ##
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@comment node-name, next, previous, up
+@node xshl, drivers,writehelp ,Top
+@section xshl
+@emph{Xshl} stands for @emph{XaoS simple hypertext language}. It
+uses similar tags to HTML. It is simpler and more restrictive in order to
+make it easy to parse using various scripts. In C code you can use the
+library present in @code{src/util/xshl.c} to parse it.
+
+The following tags are supported:
+
+@table @strong
+@item head
+make headings (should be at the beginning of the page, at least)
+@item emph
+emphasize
+@item tt
+Use non proportional font
+@item br
+Break line
+@item p
+Next paragraph
+@item dl
+Definition list
+@item dt
+Definition tag (should be used only inside a definition list)
+@item dd
+Definition description (should be used only inside a definition list)
+@item center
+align to center
+@item right
+align to right
+@item red
+change color to red (should not be used in help files)
+@item black
+change color to black (should not be used in help files)
+@item white
+change color to white (should not be used in help files)
+@item a name
+link to other help page
+@item tutor name
+activate tutorial
+@item notex
+Ignore this in texinfo manuals
+@end table
+
+
+
+@c ## section xshl ##
+
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@comment node-name, next, previous, up
+@node drivers, menus,xshl ,Top
+
+@chapter Platform-specific documentation
+XaoS is portable and works on many different platforms. Since not all platforms are
+exactly the same, there are some differences between the behavior of XaoS on
+different platforms. Here is documentation about each specific port.
+
+@c ## chapter drivers ##
+
+@menu
+* aa:: AA-lib --- high quality ascii art driver
+* BeOS:: BeOS drivers
+* DGA:: DGA driver
+* dos:: DOS driver
+* dX-fullscreen:: directX fullscreen driver
+* dX-window:: directX windowed driver
+* ggi:: GGI driver
+* plan9:: plan9 driver
+* SVGAlib:: SVGAlib driver
+* win32:: Win32 driver
+* X11:: X11 driver
+@end menu
+
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@comment node-name, next, previous, up
+@node aa, BeOS , ,drivers
+
+@section AA-lib driver
+
+The AA driver is currently the most advanced and portable driver for XaoS.
+It is based on AAlib---a high quality ASCII-art library developed by the AA-project.
+(see @code{http://aa-project.sf.net})
+
+It is a fully featured XaoS driver for text mode displays. It supports 256 colors
+and the mouse where possible.
+
+It also has some extended features available from the UI menu:
+
+@table @strong
+@item Attributes
+AA-lib may use character attributes to improve image quality.
+By default it uses normal, dim and bold characters where possible,
+but you can also enable different attributes like reversed or bold font
+characters. You may also enable usage of non ansii/reversed characters if
+your device supports it.
+@item Font
+AA-lib uses a bitmap image of the font to prepare the approximation table
+used for ASCII art rendering. This bitmap is expected to be same as the one used
+by your device. AAlib performs detection where possible however some devices
+(like UNIX text terminals or MDA) do not support this. AAlib has few font
+images compiled in, so in this case you should try to use one of them to
+achieve best results.
+@item Inversion
+Some devices use inverse video: use this to get correct results on such devices.
+@item Dithering mode
+Dithering is an way to get more exact color in approximations, by combining
+more characters; but this method can produce ugly looking noise on certain images.
+Use this menu to disable or tune it.
+@item Palette options
+By default AA driver uses the XaoS palette to render images, but it quite often
+looks ugly on text displays. Here you can choose a special text palette instead. Note that with
+filters enabled, the results may be rather ugly. This function is available from
+the @emph{palette menu}.
+@item Save text screen
+The normal save function will generate a PNG image instead of nice
+ASCII-art. To save ASCII art use this function instead. It supports many
+text file formats like HTML, ANSI, more, etc... It will also ask you for
+font and attributes(see above). It is available from the @emph{file
+menu}.
+@end table
+
+The AA-lib driver also provides the full set of standard AA-lib's command line
+options. You may use them to tune parameters like gamma correction, and so on.
+See @code{xaos -help} or the AA-lib documentation for details.
+
+The AA driver was written by Jan Hubicka, 1997.
+
+@c ## section aa ##
+
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@comment node-name, next, previous, up
+@node BeOS, DGA , aa ,drivers
+
+@section BeOS support
+
+XaoS has pretty advanced support for BeOS R4. It works on both PowerPC and
+Intel platforms, supports multithreading, the clipboard, file dragging,
+has native look and feel and can work as an image translator from XaoS files
+to images.
+
+The first version of the BeOS driver was written by Jens Kilian and later
+extended by Jan Hubicka.
+
+@subsection Installation
+
+You can start the installation script to do everything for you. If you want
+something special, read this section.
+
+In order for XaoS to work you need to keep the executable together with
+its data files (@code{help}, @code{examples}, @code{catalogs} and the @code{tutorials} directory)
+
+When first started, XaoS registers two new mime types called
+@code{image/x-xaos-position} for XaoS Position Files and
+@code{video/x-xaos-animation} for XaoS Animation Files,
+registers icons for them and sets itself as default application.
+
+@subsection Available display drivers
+
+XaoS supports following drivers:
+
+@table @strong
+@item BeOS
+Standard windowed driver using application server
+@item DirectWindow
+Driver done using Game Kit's direct window class
+@item WindowScreen
+Fullscreen driver.
+@end table
+
+By default, XaoS starts in windowed mode and uses the application server for output.
+You could change the driver to DirectWindow to use direct access to video RAM.
+Note that this mode is slower in most cases, and not supported by some videocards.
+
+The BeOS driver by default chooses the most similar bitmap supported by XaoS
+to achieve best and fastest results.
+In the UI menu you can change this default choice to another one if you wish.
+Also you can ask the BeOS and DirectWindow to resize to fullscreen mode.
+
+XaoS also supports real fullscreen mode using the BWindowScreen API. To switch
+XaoS to this driver, use the UI menu. If you want to use this mode by default,
+use the @code{-driver WindowScreen} command line option.
+
+This driver differs a lot from windowed ones. It use direct access to the video
+card, allowing you to change video mode. Also, the 256 color mode
+can access the palette, so it is not dithered like the windowed mode.
+Because BeOS can't do GUI in fullscreen mode, XaoS uses its own toolkit.
+I hope you will feel confortable in it.
+
+@subsection XaoS as translator
+
+You should be able to open XaoS files in graphics applications
+such as ShowImage or ArtPaing. In Preferences you can find the DataTranslations
+program, that can be used to set the size, type and DPI of the resulting image.
+Also antialiasing can be enabled.
+
+Note that @emph{translation can take a while}. So be patient and
+wait for the result.
+
+If the translator doesn't work, ensure that you have a link to the XaoS executable
+in @code{/boot/beos/system/add-ons/Translators/}.
+
+@c ## section BeOS ##
+
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@comment node-name, next, previous, up
+@node DGA, dos , BeOS ,drivers
+
+@section DGA driver
+This is the driver for DGA (Direct Graphics Architecture) extension used by
+XFree86 X servers. It is pretty new so it could be buggy.
+
+Bugs/limitations:
+
+@table @strong
+@item In 8bpp mode, XaoS has problems with the palette with certain window managers
+I don't know why this happens. Just let me know what's wrong, or use another
+window manager.
+@item Banked modes are not supported.
+I don't have any card to test this with, so it doesn't work in the current version.
+@end table
+
+DGA driver was written by Jan Hubicka, 1999.
+
+
+@c ## section DGA ##
+
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@comment node-name, next, previous, up
+@node dos, dX-fullscreen , DGA ,drivers
+
+@section DOS driver
+This is a fully featured driver for DJGPP and allegro.
+It supports many VGA modes, VESA 1.0---3.0, VBE/AF, S3 and some other cards.
+
+The following problems may occur:
+
+@table @strong
+@item Some DPMI servers may cause problems
+Some DPMI servers like the one from Novell/Dr/Open DOS are buggy. Use clean DOS
+instead and XaoS will automatically start @code{cwsdpmi}.
+Under Open Dr DOS use @code{dpmi off} at command line to disable it.
+@item Higher resolutions don't work
+If your videocard has enough memory for the selected resolution,
+you most probably have an unsupported videocard.
+Please use a VESA BIOS extension on this videocard. (See the note about VESA
+at the end of this section.)
+@item XaoS needs a coprocessor
+I don't distribute a coprocessor library linked into XaoS because it is too slow for
+a real-time zoomer. Coprocessor emulation will not help, because xaos works in protected mode.
+@item XaoS needs mouse driver to be usable
+@item XaoS works slowly in higher resolution
+This could also be caused by Allegro's slow driver or your videocard's VESA BIOS.
+You could try some other VESA BIOS extension instead.
+Look at the @code{http://www.talula.demon.co.uk} for the FreeBE
+project or Scitech Display Doctor package.
+(See the note about VESA at the end of this section.)
+@end table
+@subsection VESA
+VESA is a standard for using higher resolutions in DOS. Many videocards have
+VESA support in the BIOS so you don't need any additional software, while others
+need support from a special program. Also some VESA BIOS implementations are
+buggy or suboptimal; there are 3 different versions, version 1.0 is many times
+slower than 2.0, which has support for protected mode and linear framebuffers.
+So if you have problems with higher resolutions, or some graphics modes are
+not available (like 320x200 truecolor), you might try some software package
+which emulates VESA.
+
+The most famous VESA emulating program is Scitech Display Doctor. It has support
+for many videocards and is quite reliable. It's disadvantage is that it is
+shareware and works for only 30 days. You might also look on
+@code{ftp.simtel.net}, where there are many VESA emulation packages such as
+@code{s3vbe} or the new FreeBe project at
+@code{http://www.talula.demon.co.uk}
+
+DOS driver was written by Jan Hubicka, 1997.
+
+@c ## section dos ##
+
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@comment node-name, next, previous, up
+@node dX-fullscreen, dX-window , dos ,drivers
+
+@section DirectX fullscreen driver
+This is da river for Windows 9x and NT. It is new since version 3.1 and
+because of some oddities of Windows API and kludges in DirectX
+it may be rather unstable. Please report all bugs. In case
+of problems you could use the DOS version of XaoS instead.
+
+This driver allows the Windows port of XaoS to run in full screen mode.
+The driver supports 256, 65536 and 16777216 color modes (24bpp and 32bpp)
+in all resolutions supported by DirectX.
+You can change graphics mode by pressing the @code{=} key
+(or by using the UI/Resize menu). If the selected mode is not supported,
+the driver will restore the previous setting.
+
+Use the @code{-mode WIDTHxHEIGHTxDEPTH} (like @code{-mode 640x480x16})
+command line option to change graphics mode.
+
+If you want to start XaoS in DirectX, use the @code{-driver dX-fullscreen}
+option.
+
+See the Win32 driver documentation for some more Windows
+releated information.
+
+DirectX driver was written by Jan Hubicka, Jan Olderdissen
+and Pavel Tzekov, 1999.
+
+@c ## section dX-fullscreen ##
+
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@comment node-name, next, previous, up
+@node dX-window, ggi , dX-fullscreen ,drivers
+@c ## section DX-window ##
+
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@comment node-name, next, previous, up
+@node ggi, plan9, dX-window ,drivers
+
+@section GGI driver
+
+GGI stands for General Graphics Interface. Part of this project is to develop
+libggi, a portable graphics library, and XaoS's GGI driver uses that.
+It is experimental, since the API of libggi is not stabilized yet.
+There are some problems with keyboard handling---the shift key doesn't work
+yet.
+
+Everything else might work well, but there are no guarantees. It is alpha quality
+software.
+
+GGI driver was written by Jan Hubicka, 1998.
+
+@c ## section ggi ##
+
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@comment node-name, next, previous, up
+@node plan9, SVGAlib, ggi ,drivers
+
+@section Plan9 driver
+
+Plan9 is a very nice small operating system by the authors of Unix at Bell Labs.
+It is very incompatible with other operating systems; even the C compiler and
+header files are different, but XaoS should work well there (even on the
+limited free demo installation without any POSIX compatibility stuff)
+
+There are a few limitations: the file selector and image saving don't work.
+You can save position files and then later render them on the other OS, or save
+screenshots.
+
+Plan9 terminals also don't provide any way to catch the arrow keys, so you
+can't use them. Use the mouse to navigate in the menus. Also, getting the screen
+resolution is impossible, so use @code{-pixelwidth} and @code{-pixelheight}
+instead of @code{-screenwidth} and @code{-screenheight}.
+
+By default XaoS changes the colormap. This will collide with other colorful
+programs like Mortha. You can disable this behavior using
+@code{-nopalette} switch, but this will slow down XaoS.
+
+Plan9 driver was written by Jan Hubicka, 1997.
+
+@c ## section plan9 ##
+
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@comment node-name, next, previous, up
+@node SVGAlib, win32, plan9 ,drivers
+
+@section SVGAlib driver
+
+This is a driver for Linux SVGAlib. I really like this driver, because
+I much prefer full screen zooming instead of a small 320x320 window in X11.
+It was one of the first drivers for XaoS and is fully featured.
+The following problems can occur:
+
+@table @strong
+@item XaoS doesn't initialize graphics mode
+when started under users other than root SVGAlib requires root privileges
+to directly access the hardware. When you really want to start XaoS as a
+normal user, enable the suid bit (@code{chmod +s}) at XaoS executable.
+note that I take care to disable all security holes caused by this
+bit so I believe it is safe.
+@item Mouse doesn't work
+@item Screen is blank at higher resolutions
+Both this problems are probably caused by misconfiguration of
+SVGAlib. Please configure it in @code{etc/vga/libvga.cong} or
+@code{/usr/local/lib/libvga.conf}
+GPM can also cause problems. Try to kill it before starting XaoS.
+@item When I switch console I can't switch back
+This is another typical SVGAlib bug. Try to hold @code{F} key longer than @code{alt}.
+It helps on my computer. On older SVGAlib there was a famous ``enter bug'' that caused
+a crash after pressing enter. Try to update to a newer release.
+@end table
+
+SVGAlib driver was written by Jan Hubicka, 1997.
+
+@c ## section SVGAlib ##
+
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@comment node-name, next, previous, up
+@node win32, X11, SVGAlib ,drivers
+
+@section Win32 driver
+
+This is a driver for Windows 9x and NT. It is new since version 3.1 and
+because of some oddities of Windows API it may be rather unstable.
+Please report all bugs. In case of problems you could use the DOS version
+of XaoS instead.
+
+The driver should work in all bit depths, but 16 color mode is not natively
+supported by the XaoS engine. XaoS internally works in 32k colors and
+the result is converted to 16 colors by Windows. Because Windows
+conversion routines are slow and ugly, the result is slow and ugly.
+Please configure your display to another bit depth to ``solve''
+this problem.
+
+Use @code{-size WIDTHxHEIGHT} command line option to change the default
+window size.
+
+This driver also maps to native Windows look and feel. There is a small
+problem with combo boxes in dialogs. They are expected to give you a choice
+between a few strings. The keyboard controls (changing choice by arrow keys)
+work, but mouse selection is broken. If you know how to solve this bug,
+please let me know.
+
+XaoS is a UNIX application and has many command line options.
+Some features are not available from the GUI.
+Because Windows applications can't have normal output,
+most of the critical messages are displayed in message boxes, but
+some longer messages are omitted. The most significant omission is the help
+about command line options that you can find in @code{doc/cmdopts.txt}.
+
+One thing that might be confusing is that animation rendering mode doesn't
+display anything, but only renders images. Start the rendering,
+and a message box will inform you that XaoS is entering the calculation
+loop. Relax and wait for the message box signaling the end of the loop.
+
+Note that XaoS also supports the DirectX API.
+
+Win32 driver was written by Jan Hubicka, Jan Olderdissen and Pavel Tzekov, 1999.
+
+
+@c ## section win32 ##
+
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@comment node-name, next, previous, up
+@node X11, , win32 ,drivers
+
+@section X11 driver
+This was the first driver done for XaoS. It supports many visuals, shared
+colormaps and MitSHM extension.
+
+Bugs/limitations:
+
+@table @strong
+@item XaoS makes some X servers too busy
+Sometimes XaoS generates images faster than X can display them.
+In this case XaoS responds poorly to the mouse, and other applications slow
+down too. This happens especially often on old R4 servers. Use @code{-sync}
+to avoid this problem. Note that @code{-sync} does @code{not} make all
+communication with X asynchronous; it just adds one additional XSync call.
+So the slowdown is not as large as you might expect.
+@item Does not work on all visuals
+This driver supports only 8bpp pseudocolor/grayscales, 15,16,24 and 32bpp truecolor, 1bpp and 8bpp staticolor visuals.
+@item Palette rotating does not work for 8bpp pseudocolor w/o private palette
+@end table
+
+X11 driver was written by Jan Hubicka and Thomas Marsh, 1997.
+
+@c ## section X11 ##
+
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@comment node-name, next, previous, up
+@node menus, about, drivers,Top
+
+@appendix Menus, functions and command line parameters
+All XaoS functions are referenced by a central function registry. The
+scripting language, menus, dialogs and command line options are built
+from this database. This section contains information about all functions
+available in this registry.
+@menu
+* root:: Root menu
+* animroot:: Animation root menu
+* plc:: Replay only commands
+
+* linemenu:: Line drawing functions
+* animf:: Animation functions
+* time:: Timing functions
+* file:: File
+* edit:: Edit
+* fractal:: Fractal
+* calc:: Calculation
+* mfilter:: Filters
+* ui:: UI
+* misc:: Misc
+* helpmenu:: Help
+* xtextpos:: Horizontal text position
+* ytextpos:: Vertical text position
+* mformula:: Formulae
+* palettemenu:: Palette
+@end menu
+@node root, animroot, , menus
+
+
+
+@node animroot, plc, root, menus
+
+
+
+@appendixsec Animation root menu
+This menu is displayed at the top of the screen when animation replay is active.
+@menu
+* file:: File
+* stopreplay:: Stop replay
+* helpmenu:: Help
+* ui:: UI
+@end menu
+@node stopreplay, , , animroot
+
+
+@appendixsubsec Stop replay
+Terminate animation replay.
+
+@emph{Available as}: menu item
+
+
+
+@node plc, linemenu, animroot, menus
+
+
+@appendixsec Replay only commands
+Some commands, such as timing primitives or animation functions, are available
+only in animation files.
+@menu
+* linemenu:: Line drawing functions
+* animf:: Animation functions
+* time:: Timing functions
+* load:: Include file
+@end menu
+@node load, , , plc
+
+
+
+
+@appendixsubsec Include file
+@defun load file
+@end defun
+
+This function lets you include another file in your script. It works similarly
+to @code{#include} in C or @code{load} in Scheme.
+The file is searched for in the same directory as the current source file.
+
+@emph{Available as}: command
+
+@node linemenu, animf, plc, menus
+
+
+
+@appendixsec Line drawing functions
+XaoS has support for drawing lines. These functions are available only in
+animations and could be used to show some parts of fractals or draw simple
+diagrams. See the tutorial ``Introduction to fractals''
+for examples of this feature.
+
+Lines can be drawn in @emph{screen} coordinates, where 0,0
+is the top left corner and 1,1 is bottom right, @emph{scaled}
+coordinates, which are similar, but scaled to keep 0,0---1,1 rectangular,
+or @emph{Fractal} coordinates, to draw a line at an exact position
+on the screen.
+
+The color of the line should be specified by the @code{color} command.
+You might draw an arbitrary number of lines and, later, morph them. Each line is
+identified by a unique numeric key; the current key can be set using @code{linekey}.
+Commands for changing lines operate on the line with the current key.
+(Lines drawn in sequence have consecutive numbers.)
+
+For example:
+
+
+@example
+(color 'red)
+(line 'scaled 0.3 0.5 0.7 0.5)
+(line 'scaled 0.3 0.5 0.7 0.5)
+(line 'scaled 0.3 0.5 0.3 0.5)
+(line 'scaled 0.7 0.5 0.7 0.5)
+(linekey 0)
+(morphline 'scaled 0.3 0.3 0.7 0.3)
+(morphline 'scaled 0.3 0.7 0.7 0.7)
+(morphline 'scaled 0.3 0.3 0.3 0.7)
+(morphline 'scaled 0.7 0.3 0.7 0.7)
+(usleep 1000000)
+@end example
+
+
+Creates line morphing to rectangle.
+
+
+
+
+@defun line keyword complex complex
+@end defun
+
+Draw line between two points.
+@code{keyword} specifies type of coordinates and should be one of the
+following: @code{`fractal}, @code{`screen} or @code{`scaled}.
+This function also increases the line key.
+
+@emph{Available as}: command
+
+
+
+
+
+@defun morphline keyword complex complex
+@end defun
+
+Morph current line to given coordinates.
+@code{keyword} specifies type of coordinates and should be one of the
+following: @code{`fractal}, @code{`screen} or @code{`scaled}.
+The line will start moving at the next timing command, and reach the
+final position before the end of it.
+This function also increases the line key.
+
+@emph{Available as}: command
+
+
+
+
+
+@defun morphlastline keyword complex complex
+@end defun
+
+This function has the same functionality as morphline, but it doesn't
+increase the line key, and touches the line with the previous key. This is useful when
+you want to move a just-drawn line---you don't need to set linekey back.
+
+@emph{Available as}: command
+
+
+
+@defun linekey integer
+@end defun
+
+Set current line key.
+
+@emph{Available as}: command
+
+
+
+@defun clearline
+@end defun
+
+Clear current line. This function also increases the line key.
+
+@emph{Available as}: command
+
+@defun clearlines
+@end defun
+
+Clear all displayed lines. Lines can also be cleared using the
+@code{clearscreen} or @code{display} commands available from the Misc menu. @xref{misc}.
+
+@emph{Available as}: command
+
+@node animf, time, linemenu, menus
+
+
+
+@appendixsec Animation functions
+These functions are used to animate fractal state---to zoom, unzoom and morph
+various parameters. They should be used only in animation files.
+Animations are usually performed for a time selected by an immediately following
+timing function. @xref{time}.
+For example:
+
+
+@example
+(view 0 0 1 1)
+(morphview 0 0 2 2)
+(usleep 5000000)
+@end example
+
+
+Will do a 5 second long unzooming animation.
+@menu
+* animateview:: Animate view
+* smoothmorph:: Smooth morphing
+* morphview:: Morph view
+* morphjulia:: Morph julia
+* moveview:: Move view
+* morphangle:: Morph angle
+* zoom:: Zooming functions
+@end menu
+@node animateview, smoothmorph, , animf
+
+
+@appendixsubsec Animate view
+@defun animateview float float float float
+@end defun
+
+This function is almost identical to function @code{view}. @xref{uiview}.
+It expects that the view will be changed only slightly, so recalculation is done
+with @code{ANIMATE} priority. This means that dynamic resolution is used by
+default.
+
+Viewport is selected by the center and two radiuses (real and imaginary). See
+@code{view} for more information.
+
+@emph{Available as}: command
+
+@node smoothmorph, morphview, animateview, animf
+
+
+@appendixsubsec Smooth Morphing
+@defun morphview keystring starttime endtime
+@end defun
+This function lets you smoothly start and stop morphing. Specify
+starttime and stoptime as nonzero, and morphing will speed up and slow down for
+that number of usecs.
+
+The keystring is used to select what morphing you want to control. It is one of
+the following:
+@table @strong
+@item 'view
+control morphview
+@item 'angle
+control morphangle
+@item 'julia
+control morphjulia
+@item 'line
+control morphline
+@end table
+@node morphview, morphjulia, smoothmorph, animf
+
+
+@appendixsubsec Morph view
+@defun morphview float float float float
+@end defun
+For the time selected by the next @code{usleep} or other timing function, the viewpoint is smoothly morphed from
+the current one to that selected by @code{morphview}.
+
+Viewport is selected by the center and two radiuses (real and imaginary). See
+@code{view} for more information.
+
+This function can easily be used for creating zooming/unzooming animations using position files.
+This is an example position file generated by XaoS:
+
+
+@example
+(initstate)
+(defaultpalette 0)
+(formula 'mandel)
+(view -1.64128273713 -5.50393226816E-05 9.69332308848E-08
+9.69332308834E-08)
+@end example
+
+
+By replacing the @code{view} command with @code{morphview} and
+adding @code{usleep} you can create a zooming animation:
+
+
+@example
+(initstate)
+(defaultpalette 0)
+(formula 'mandel)
+(morphview -1.64128273713 -5.50393226816E-05 9.69332308848E-08
+9.69332308834E-08)
+(usleep 10000000)
+@end example
+
+
+
+
+@emph{Available as}: command
+
+@node morphjulia, moveview, morphview, animf
+
+
+@appendixsubsec Morph Julia
+@defun morphjulia complex
+@end defun
+For the time selected by the next @code{usleep} or other timing function, the Julia seed
+is smoothly interpolated from the current one to that selected by @code{morphjulia}. By default this will
+cause recalculation of the whole screen.
+To avoid this, use fast Julia mode. @xref{fastjulia}.
+
+A simple animation morphing Julia seed in the X axis:
+
+
+@example
+(initstate)
+(fastjulia #t)
+(juliaseed -2 0)
+(morphjulia 2 0)
+(usleep 2000000)
+@end example
+
+
+
+@emph{Available as}: command
+
+@node moveview, morphangle, morphjulia, animf
+
+
+@appendixsubsec Move view
+@defun moveview complex
+@end defun
+Smoothly move the image center to another position.
+
+@emph{Available as}: command
+
+@node morphangle, zoom, moveview, animf
+
+
+@appendixsubsec Morph angle
+@defun morphangle float
+@end defun
+Smoothly rotate the image to another angle. By default rotation causes
+recalculation of the whole screen. To avoid this you need to enable
+fast rotate mode. @xref{rotate}. Don't forget to disable it later, since
+it slows down other animations.
+
+
+A simple ``rotozooming'' animation:
+
+
+@example
+(initstate)
+(fastrotate #t)
+(morphview -1.64128273713 -5.50393226816E-05 9.69332308848E-08
+9.69332308834E-08)
+(morphangle 300)
+(usleep 10000000)
+(wait)
+(fastrotate #f)
+@end example
+
+
+@emph{Available as}: command
+
+@node zoom, , morphangle, animf
+
+
+@appendixsubsec Zooming functions
+
+The functions for zooming/unzooming were created mainly for recording
+animations. In manually created animation files, it is easier to use
+@code{morphview}. @xref{morphview}.
+
+@defun zoomcenter complex
+@end defun
+This function sets the center to zoom in on. The center is given as a position
+in fractal coordinates.
+
+@emph{Available as}: command
+@defun zoom
+@end defun
+Start zooming to the area specified by @code{zoomcenter}.
+
+The speed of zooming should be controlled by the function @code{speed}
+or in a more exact way by @code{maxstep} and @code{speedup}.
+
+@defun unzoom
+@end defun
+
+Start unzooming from the area specified by @code{zoomcenter}.
+
+@emph{Available as}: command
+@defun stop
+@end defun
+Stop zooming or unzooming.
+
+@emph{Available as}: command
+
+@node time, file, animf, menus
+
+
+
+@appendixsec Timing functions
+Timing functions are used to control the animation replay daemon. It can wait
+for a given time, or wait until calculation is complete. The animation functions
+are controlled by such waiting; animations that are running while delays start
+keep running through the delay.
+@menu
+* usleep:: Usleep
+* textsleep:: Wait for text
+* wait:: Wait for complete image
+@end menu
+@node usleep, textsleep, , time
+
+
+@appendixsubsec Usleep
+@defun usleep integer
+@end defun
+
+This function waits for a given amount of time (in usec) before processing
+the next command. The screen is recalculated and displayed at the beginning of
+usleep if necessary necessary. The remaining time is spent in waiting or
+performing animation.
+
+@emph{Available as}: command
+
+@node textsleep, wait, usleep, time
+
+
+@appendixsubsec Wait for text
+@defun textsleep
+@end defun
+
+
+This function's behavior is very similar to @code{usleep},
+but the time is calculated from the number of letters currently displayed
+onscreen. If you want to wait just long enough for the user to read the subtitle,
+use this function. The user can alter the replay speed as desired using
+@code{letterspersec}. @xref{letterspersec}. This value can be changed during
+replay with the arrow keys.
+
+@emph{Available as}: command
+
+@node wait, , textsleep, time
+
+
+@appendixsubsec Wait for complete image
+@defun wait
+@end defun
+
+Wait until the image is complete. You should always use this function after
+zooming or unzooming when dynamic resolution is in use. This ensures that
+the image calculation will be complete so the user can see the result before
+the animation continues. It may also be useful in combination with filters like
+motion blur. @xref{blur}.
+
+This function deadlocks if used with animation functions; don't
+do that.
+
+@emph{Available as}: command
+
+@node file, edit, time, menus
+
+
+
+@appendixsec File
+@menu
+* loadpos:: Load
+* savepos:: Save
+* record:: Record
+* play:: Replay
+* saveimg:: Save image
+* loadexample:: Load random example
+* savecfg:: Save configuration
+* quit:: Quit
+@end menu
+@node loadpos, savepos, , file
+
+
+@appendixsubsec Load XaoS position file
+
+Load a XaoS position file (@code{*.xpf}).
+See the format description for more information.
+
+@emph{Available as}: menu item, command line option
+
+@node savepos, record, loadpos, file
+
+
+@appendixsubsec Save XaoS position file
+@defun savepos file
+@end defun
+
+Save current state to a XaoS position file (@code{*.xpf}). This file is
+human-readable, and can easily be improved by hand after saving, or used as
+a base for animations.
+See the format description for more information.
+
+@emph{Available as}: menu item, command line option, command
+
+@node record, play, savepos, file
+
+
+@appendixsubsec Record animation
+@defun record bool [ file ]
+@end defun
+
+
+e
+Toggle recording to a XaoS animation file (@code{*.xaf}). This file is
+human-readable, and can easily be improved by hand after recording.
+See the format description for more information.
+
+From the scripting language, @code{(record #t)} enables recording, and
+@code{(record #f)} disables it.
+
+@emph{Available as}: menu item, command line option, command
+
+@node play, saveimg, record, file
+
+
+@appendixsubsec Replay animation
+
+Replay a XaoS animation file (@code{.xaf}).
+
+@emph{Available as}: menu item, command line option
+
+@node saveimg, loadexample, play, file
+
+
+@appendixsubsec Save image
+@defun saveimg file
+@end defun
+
+Save current state to an image file. This file is in @code{.png} (portable
+network graphics) format, which can be read by many applications varying from
+graphics programs all the way to Web browsers.
+
+This function needs an external library called @code{libpng}. If the library
+wasn't available during compilation, this function is unavailable too.
+Please see @code{INSTALL} for more information about obtaining libpng
+and recompiling XaoS.
+
+@emph{Available as}: menu item, command line option, command
+
+@node loadexample, savecfg, saveimg, file
+
+
+@appendixsubsec Load random example
+@defun loadexample
+@end defun
+
+Choose random @code{.xpf} file from the @code{examples} directory and
+load it.
+You might use it as the starting point for next exploration.
+
+@emph{Available as}: menu item, command line option, command
+
+@node savecfg, quit, loadexample, file
+
+
+@appendixsubsec Save configuration
+@defun savecfg
+@end defun
+
+Save current configuration to @code{~/.xaosrc} (under Unix) or @code{xaos.cfg}
+(under DOS and Windows). XaoS automatically reloads the configuration from this
+file when it starts.
+
+@emph{Available as}: menu item, command line option, command
+
+@node quit, , savecfg, file
+
+
+@appendixsubsec Quit
+@defun quit
+@end defun
+
+Quit XaoS.
+
+@emph{Available as}: menu item, command line option, command
+
+@node edit, fractal, file, menus
+
+
+@appendixsec Edit
+A fairly ordinary Edit menu.
+@menu
+* undo:: Undo
+* redo:: Redo
+* copy:: Copy
+* paste:: Paste
+@end menu
+@node undo, redo, , edit
+
+
+@appendixsubsec Undo
+Undo last operation. `Last operation' is quite hard to define in
+XaoS (where changes are continuous), so it might be surprising.
+I hope it will do what you want.
+
+@emph{Available as}: menu item
+@node redo, copy, undo, edit
+
+
+@appendixsubsec Redo
+Redo last undone operation. See undo. @xref{undo}.
+
+@emph{Available as}: menu item
+@node copy, paste, redo, edit
+
+
+@appendixsubsec Copy
+Copy fractal to clipboard. This is a platform-dependent operation that may
+not have an analogue on your platform (e.g. there is no concept of a clipboard
+under aalib).
+
+@emph{Available as}: menu item
+@node paste, , copy, edit
+
+
+@appendixsubsec Paste
+Paste fractal from clipboard. This is a platform-dependent operation that may
+not have an analogue on your platform (e.g. there is no concept of a clipboard
+under aalib).
+
+@emph{Available as}: menu item
+
+@node fractal, calc, edit, menus
+
+
+@appendixsec Fractal
+This menu contains all functions related to fractal parameters and display;
+you can change things like the formula used, coloring modes, seeds and much
+else.
+
+@menu
+* formula:: Formula
+* mformula:: formulae
+* incoloring:: Incoloring mode
+* outcoloring:: Outcoloring mode
+* plane:: Plane
+* palettemenu:: Palette
+* uimandelbrot:: Mandelbrot mode
+* uiperturbation:: Perturbation
+* uiview:: View
+* initstate:: Reset to defaults
+* tcolor:: True-color coloring modes
+@end menu
+@node formula, uimandelbrot, , fractal
+
+
+@appendixsubsec Formula
+@defun formula keyword
+@end defun
+
+Set the current fractal formula. @code{keyword} should be one of the
+following:
+@table @strong
+@item 'mandel
+Standard Mandelbrot set. @xref{mandel}.
+@item 'mandel3
+Mandelbrot set, power 3. @xref{mandel3}.
+@item 'mandel4
+Mandelbrot set, power 4.
+@item 'mandel5
+Mandelbrot set, power 5.
+@item 'mandel6
+Mandelbrot set, power 6.
+@item 'newton
+Newton's approximation method. @xref{newton}.
+@item 'barnsley
+First Barnsley's formula. @xref{barnsley}.
+@item 'octo
+Fractint's octo. @xref{octal}.
+@item 'phoenix
+Phoenix. @xref{phoenix}.
+@item 'magnet
+Magnet. @xref{magnet}.
+@end table
+
+@emph{Available as}: command
+
+@node uimandelbrot, uiperturbation, formula, fractal
+
+
+@appendixsubsec Mandelbrot/Julia mode
+
+Most fractals rendered by XaoS can be represented as Mandelbrot sets or Julias.
+Each point in the Mandelbrot set has its own Julia set. To learn more about
+this correspondence, see the tutorial on the Julia set.
+
+This function switches between Mandelbrot and Julia representations. When
+switching to Julia, you need to set the seed---a point selected from the
+Mandelbrot set.
+
+If you run this function from the menu, you are prompted for the Julia seed
+as a number. Often, this can be clumsy, and it would be easier to specify a
+point with the mouse pointer. If you hit the @code{M} key instead of
+using the menu, the current mouse position is used.
+
+Good seedpoints lie at the boundaries of the Mandelbrot set; other seeds
+usually generate quite a boring fractal. You can also explore various seeds
+at high speed using the Fast Julia mode. @xref{fastjulia}.
+
+Not all fractals have Julias, but XaoS can generate fake Julia sets for
+those that do not, which use some Julia-like modification of the formula;
+so this function is currently usable for all fractal types.
+
+@emph{Available as}: menu item
+@defun julia bool
+@end defun
+
+This function is used to enable/disable julia mode in animation files.
+
+@emph{Available as}: command line option, command
+@defun juliaseed complex
+@end defun
+
+Select the current julia seed.
+
+@emph{Available as}: command line option, command
+
+@node uiperturbation, uiview, uimandelbrot, fractal
+
+
+@appendixsubsec Perturbation
+
+Perturbation is a simple trick which changes the point at which orbits start.
+Traditionally zero is used, but other values can generate interesting
+results too.
+
+On enabling this function from the menu, you will be asked for a complex
+number specifying the perturbation. It is a toggle; selecting it again
+resets the perturbation to zero without prompting.
+
+It can be used to specify a complex number representing a point on the screen.
+If you hit the @code{B} key instead of using the menu, the current mouse
+position is used. This too is a toggle, so @code{B} again will disable
+perturbation by setting it to zero.
+
+This function only has an effect for certain formulae (like the
+Mandelbrot set</a>) and only then in <a uimandelbrot>Mandelbrot mode. @xref{mandel}.
+
+@emph{Available as}: menu item
+@defun perturbation complex
+@end defun
+
+This is the scripting-language variation of the perturbation function. Instead
+of toggling, you always specify the perturbation to use. Use 0 0 to disable
+perturbation.
+
+@emph{Available as}: command line option, command
+
+@node bailout, fastjulia, maxiter, calc
+
+
+@appendixsubsec Bailout
+
+Bailout is the value which is checked for each point of
+the orbit if the point is far enough
+from the complex zero point in the current iteration.
+If the point is far enough, then the iteration immediately
+stops and the starting point on the screen will be
+painted with a given colour, depending on the fractal
+type and many other settings.
+
+For the Mandelbrot set
+this value is 4. Other fractal types usually
+have the same bailout value. For most fractals many bailout values
+give more or less similar output. E.g., for the second order
+Mandelbrot set one can prove that the sequence |z| (z:=z^2+c) tends to
+infinity if and only if |z|>2 for some element z of this sequence.
+In XaoS program, Bailout value is the square of this 2, i.e. you can change this
+to any value greater than 2 for similar results.
+
+Other fractal types may use other bailout values. The default
+is 4 for each types.
+
+@emph{Available as}: menu item, command line option, command
+@defun bailout float
+@end defun
+
+
+@node uiview, initstate, uiperturbation, fractal
+
+
+@appendixsubsec View
+
+Set your current viewpoint in the fractal. This function is useful when you have
+found some interesting coordinates somewhere (on a web page, perhaps) and you
+want to see that position in XaoS.
+
+In the dialog you will be asked for the @emph{center}, @emph{radius}
+and @emph{angle} of the image.
+
+The center specifies the point which is displayed at the center of the screen.
+The radius is the radius of a circle around this point; XaoS will size the image
+so that this circle only just fits on the screen. The angle gives the rotation of
+the image in degrees.
+
+People specify fractal coordinates in many ways. Some people use the coordinates
+of the upper-left and lower-right visible points, specifying the coordinates as four
+numbers @math{x1}, @math{y1}, @math{x2}, @math{y2}.
+To set the same viewpoint in XaoS, set the real portion of the center to
+@math{(x1+x2)/2}, the imaginary part of center to @math{(y1+y2)/2}, and
+the radius to the greater of @math{x2-x1} and @math{y2-y1}.
+
+Other programs use a zoom factor instead of a radius. For these, you can set the
+radius to @math{2/zoom}.
+
+@emph{Available as}: menu item
+@defun view float float float float
+@end defun
+
+This function is used to set the visible area of fractal in animation files.
+It doesn't let let you specify the angle, (for that, see the separate function
+@code{angle}), but lets you specify an ellipse instead of a circle. You can
+specify both a real and an imaginary radius, so you have better control over the
+area that will be visible. XaoS will size the image so that the ellipse only just
+fits on the screen.
+
+@emph{Available as}: command line option, command
+@defun angle float
+@end defun
+
+Set the rotation angle in degrees. By default this causes recalculation of the
+screen. You can enable the fast rotation mode, which lets you
+rotate the screen without recalculation; but it slows down other things, so
+don't forget to disable it later.
+
+@emph{Available as}: command line option, command
+
+@node initstate, plane, uiview, fractal
+
+
+@appendixsubsec Reset to defaults
+@defun initstate
+@end defun
+
+This function resets most of XaoS's values to their defaults. It is useful when
+you get lost and want to start from the beginning. It should also be used
+as the first command of every animation file, to ensure that the file is always
+played with the same settings in effect.
+
+@emph{Available as}: menu item, command line option, command
+
+@node plane, incoloring, initstate, fractal
+
+
+@appendixsubsec Plane
+@defun plane integer
+@end defun
+
+All fractals displayed by XaoS are functions with a complex parameter.
+They can be be displayed in the normal complex plane where the @code{x}
+coordinate is the real part of the number and the @code{y} is imaginary;
+but they can also be displayed differently:
+@table @strong
+@item @math{mu}
+Normal complex plane (default)
+@item @math{1/mu}
+Inversion---infinity is at 0 and
+0 is at infinity.
+@item @math{1/(mu+0.25)}
+Similar to inversion, but moves
+the center outside the Mandelbrot set,
+so it looks parabolic.
+@item @math{lambda plane}, @math{1/lambda}, @math{1/lambda-1}
+Lambda plane and its inversion, and with a different center.
+@item @math{1/(mu-1.40115)}
+A very interesting mode for the
+Mandelbrot set, this makes small
+things large, for easier browsing
+of the set's details.
+@end table
+The tutorial about planes has some examples.
+
+
+
+In the scripting language, the planes are numbered as follows:
+
+@table @strong
+@item 0
+@math{mu}
+@item 1
+@math{1/mu}
+@item 2
+@math{1/(mu+0.25)}
+@item 3
+@math{lambda}
+@item 4
+@math{1/lambda}
+@item 5
+@math{1/(lambda-1)}
+@item 6
+@math{1/(mu-1.40115)}
+@end table
+
+@emph{Available as}: command line option, command
+
+@node incoloring, outcoloring, plane, fractal
+
+
+@appendixsubsec Inside coloring mode
+@defun incoloring integer
+@end defun
+
+Areas inside the set are usually filled in black, but this is only a convention;
+you could color them in differently to make the fractal look more interesting.
+The only method available to make areas inside the set visible is to display
+the value of the latest orbit as the value of each pixel.
+
+The tutorial on incoloring has more information and
+examples.
+
+XaoS has many different ways to show that value. The cryptic names of the modes
+are mathematical formulae, where @emph{real} means the real part of the
+latest orbit, and @emph{imag} means the imaginary part. @emph{zmag}
+uses the magnitude of the value. The @emph{Decomposition-like} method uses
+the angle of the orbit. Also, truecolor incoloring modes are available, that
+display one value in each of the red, blue and green color planes (or, for some
+modes, in each of the hue, saturation and value planes).
+
+In the scripting language, the incoloring mode is specified by one of the
+following integers:
+
+@table @strong
+@item 0
+@math{0} (default)
+@item 1
+@math{zmag}
+@item 2
+Decomposition-like
+@item 3
+@math{real/imag}
+@item 4
+@math{abs(abs(c)-abs(r))}
+@item 5
+@math{cos(mag)}
+@item 6
+@math{mag*cos(real^2)}
+@item 7
+@math{sin(real^2-imag^2)}
+@item 8
+@math{atan(real*imag*creal*cimag)}
+@item 9
+squares
+@item 10
+Truecolor. To set exact parameters for truecolor coloring use the
+@code{tcolor} command.
+@end table
+
+@emph{Available as}: command line option, command
+
+@node outcoloring, tcolor, incoloring, fractal
+
+
+@appendixsubsec Outside coloring mode
+@defun outcoloring integer
+@end defun
+
+Outcoloring modes are similar to incoloring modes, but indicate
+how to display the areas outside the set instead. As with incoloring modes, the
+value of the latest orbit can be used to determine the color of each pixel, but the
+default is to use the number of iterations needed for the value at that point to become
+recognisably divergent as the color.
+
+The tutorial on outcoloring has more information and
+examples.
+
+The cryptic names of the modes are mathematical formulae, where @emph{iter}
+means the number of iterations required for the value to become recognisably divergent,
+@emph{real} means the real part of the latest orbit, and @emph{imag}
+means the imaginary part. @emph{binary decomposition} uses a different color
+when the imaginary part of the orbit is lower than zero, and @emph{smooth}
+attempts to remove stripes and discontinuities. Also, truecolor outcoloring
+modes are available, that display one value in each of the red, blue and green color planes
+(or, for some modes, in each of the hue, saturation and value planes).
+
+In the scripting language, the outcoloring mode is specified by one of the following
+integers:
+
+@table @strong
+@item 0
+@math{iter} (default)
+@item 1
+@math{iter+real}
+@item 2
+@math{iter+imag}
+@item 3
+@math{iter+real/imag}
+@item 4
+@math{iter+real+imag+real/imag}
+@item 5
+binary decomposition
+@item 6
+biomorphs
+@item 7
+potential
+@item 8
+color decomposition
+@item 9
+smooth
+@item 10
+True-color outcoloring mode. To set exact parameters for truecolor coloring use @code{outtcoloring}. @xref{tcolor}.
+@end table
+
+@emph{Available as}: command line option, command
+
+@node tcolor, , outcoloring, fractal
+
+
+@appendixsubsec Truecolor coloring mode
+@defun intcoloring integer
+@end defun
+@defun outtcoloring integer
+@end defun
+
+Truecolor coloring modes are similar to incolor and
+outcolor coloring modes; but instead of using a palette,
+they directly calculate the red, green and blue components of the color.
+This lets you display more parameters at once, and produces interesting
+and often attractive results. On 8bpp displays you need to enable the
+palette emulator filter first to see anything, amd the quality
+won't be so good, as far fewer colors are available per parameter.
+
+The tutorial on truecolor coloring modes has more
+information and examples.
+
+The cryptic names of the modes are always three mathematical formulae (one for
+each color component), where @emph{real} means the real part of the latest
+orbit, and @emph{imag} means the imaginary part.
+
+To enable inside/outside truecolor coloring mode in the scripting language,
+set @code{incoloring}/@code{outcoloring} value to 10 (truecolor coloring
+mode) before (or after) calling @code{intcoloring} or @code{outtcoloring}.
+
+In the scripting language, the coloring mode is specified by one of the following
+integers:
+
+@table @strong
+@item 0
+black
+@item 1
+@math{re*im} @math{sin(re^2)} angle
+@item 2
+@math{sin(re)} @math{sin(im)} @math{sin(square)}
+@item 3
+hsv
+@item 4
+hsv2
+@item 5
+@math{cos(re^c)} @math{cos(im^2)} @math{cos(square)}
+@item 6
+@math{abs(re^2)} @math{abs(im^2)} @math{abs(square)}
+@item 7
+@math{re*im} @math{re*re} @math{im*im}
+@item 8
+@math{abs(im*cim)} @math{abs(re*cre)} @math{abs(re*cim)}
+@item 9
+@math{abs(re*im-csqr)} @math{abs(re^2-csqr)} @math{abs(im^2-csqr)}
+@end table
+
+@emph{Available as}: command line option, command
+
+@node calc, mfilter, fractal, menus
+
+
+
+@appendixsec Calculation
+This menu contains functions that control calculation parameters such as
+the maximum iteration count and periodicity checking.
+@menu
+* range:: Solid guessing
+* dynamic:: Dynamic resolution
+* periodicity:: Periodicity checking
+* maxiter:: Iterations
+* bailout:: Bailout
+* fastjulia:: Fast Julia mode
+* dynamic:: Dynamic resolution
+* rotate:: Rotation
+@end menu
+@node range, periodicity, , calc
+
+
+@appendixsubsec Solid guessing range
+@defun range integer
+@end defun
+
+XaoS has a solid guessing optimization: if all corners of a rectangle have
+the same color, it assumes that the whole rectangle is a solid colored block,
+and doesn't calculate points inside the rectangle. This optimization saves
+lots of calculation, but sometimes introduces errors. This value alters the
+maximum size of the rectangle that can be guessed at one time. The default
+value is 3; use 0 to disable the optimization.
+
+@emph{Available as}: command line option, command
+
+@node periodicity, maxiter, range, calc
+
+
+@appendixsubsec Periodicity checking
+@defun periodicity bool
+@end defun
+
+Periodicity checking is one way to speed up the calculation. Areas inside the
+set always need @code{maxiter} iterations to determine that
+the point is probably inside the set (while it is rare for areas outside to
+need anywhere near that much). Often the orbital trajectory falls into a
+periodic, repeating cycle; if that can be detected, the calculation can be
+stopped early, as there's no way that the orbit can ever leave the cycle
+again (hence it cannot diverge, hence the point must be inside the set).
+
+Implementating this method efficiently is quite problematic. It slows down
+the cases where cycles are not found, because cycle-checking is quite hard work
+and has to take place for all points, even those that don't become cyclic.
+Because of the inexactness of floating-point calculations, the cycles are
+never exact, so you need to use an error value. Higher error values mean that
+cycles will be detected sooner, while lower error values increase the
+exactness of the calculation. Higher values can introduce serious errors,
+especially at the front of the Mandelbrot set. XaoS detects this automatically
+and corrects for it in most cases, but sometimes it might be wrong. Also,
+other optimizations in XaoS (such as boundary tracing) don't give this method
+much of a chance to run, since areas inside the set are usually not
+calculated at all.
+
+That's why the advantages of this optimization are questionable. You should
+probably experiment with enabling and disabling it. Sometimes XaoS is faster
+with this enabled, sometimes when disabled. Also, this method works only
+when incoloring methods are disabled, and only for some
+fractal types (some fractal types, e.g. newton, don't have any concept of
+an area `inside the set' at all.)
+
+The tutorial chapter ``Escape time fractals'' has
+more information on fractal calculation in XaoS, and there is a lengthy
+section in the hacker's manual (@code{xaosdev.texinfo}) devoted to the
+subject.
+
+@emph{Available as}: menu item, command line option, command
+
+@node maxiter, bailout, periodicity, calc
+
+
+@appendixsubsec Iterations
+@defun maxiter integer
+@end defun
+
+When the fractal set is calculated, a orbital trajectory is examined for each
+point. If the orbit diverges to infinity, the point is outside the set.
+Otherwise, the point is inside the set. For exact calculations, you need to
+know the entire orbital trajectory, which is infinitely long for areas inside
+the set, so fractals cannot be calculated exactly. By default, XaoS calculates
+at most 170 positions (iterations) and then gives up; if the point is still
+inside the bail-out value, it guesses that the point is inside the set.
+
+When zoomed into a detailed area, especially one close to the set boundary,
+this value could become too low, and the fractal will become boring.
+You might try increasing this value if you want to get the image interesting
+again; but this necessarily slows down the calculation at the same time.
+
+The tutorial chapter ``Escape time fractals'' has
+more information on fractal calculation in XaoS, and there is a lengthy
+section in the hacker's manual (@code{xaosdev.texinfo}) devoted to the
+subject.
+
+@emph{Available as}: menu item, command line option, command
+
+@node fastjulia, dynamic, bailout, calc
+
+
+@appendixsubsec Fast Julia mode
+@defun fastjulia bool
+@end defun
+
+By default, changing the seed for the Julia set requires recalculation of the
+image (which is quite slow). It's a nice effect to change the seed smoothly and
+show the Julia set morphing as the seed changes. XaoS has a special algorithm
+which can calculate such morphings in realtime. It is very inexact, but it is
+good enough for a fast preview.
+
+If you want to select a good seedpoint, enable fast Julia mode and find a
+nice place by dragging with the first mouse button depressed; then change to
+the Julia mode to see the exact image.
+
+@emph{Available as}: menu item, command line option, command
+
+@node dynamic, rotate, fastjulia, calc
+
+
+
+@appendixsec Dynamic resolution
+@defun fastmode keyword
+@end defun
+
+XaoS performs many optimizations, but fairly often this is not enough. In order
+to keep a high framerate, XaoS automatically lowers the resolution of the image,
+increasing it when there is time for more calculation. This feature is enabled by
+default when animating, but you might also like to enable it for new images
+(which makes the image `come into focus' when it is recalculated from scratch for
+whatever reason), or disable it completely if you don't like it.
+
+In the scripting languge, the keyword should be one of the following:
+@table @strong
+@item @code{'never}
+Disable dynamic resolution
+@item @code{'animate}
+Use only for animations (default)
+@item @code{'new}
+Use also for new images
+@end table
+@node rotate, , dynamic, calc
+
+
+
+@appendixsec Image rotation
+
+XaoS has support for rotation of the image to any angle. By default, changing
+the angle requires recalculation of the whole screen, but when
+@emph{fast rotation mode} is enabled, the angle can be changed smoothly.
+In this mode XaoS calculates a larger non-rotated image and rotates it when
+needed, so it increases memory requirements and slows XaoS down; hence, it
+should be disabled when rotation is not being used.
+
+The user interface provides two rotation modes---@emph{rotate by
+mouse} which allows the angle to be changed by dragging with the first
+mouse button depressed, and @emph{continuous rotation mode}, where the image
+is rotated clockwise continuously, and the arrow keys can be used to change
+the rotiation speed.
+@defun fastrotate bool
+@end defun
+
+This function is used to enable and disable fast rotation mode.
+@emph{Available as}: command line option, command
+@appendixsubsec Automatic rotation
+@defun autorotate bool
+@end defun
+
+Use this function to enable continuous rotation. In the scripting language you
+can also use @code{morphangle} to get an outwardly similar
+but more controllable effect.
+@defun rotationspeed float
+@end defun
+
+Specify the speed of continuous rotation, in degrees per second.
+Negative values are allowed and rotate anticlockwise.
+
+@emph{Available as}: menu item, command line option, command
+
+
+
+@node mfilter, ui, calc, menus
+
+
+
+@appendixsec Filters
+Filters are a post-calculation effect applied to the resulting image. They
+can do things like motion blurring, edge detection, emulation of palettes
+or truecolor on displays that can't handle them, and such things. There is
+a tutorial chapter about them.
+
+@menu
+* filter:: Filter command
+* edge:: Edge detection
+* edge2:: Edge detection2
+* starfield:: Starfield
+* stereogram:: Random dot stereogram
+* interlace:: Interlace filter
+* blur:: Motion blur
+* emboss:: Emboss
+* palettef:: Palette emulator
+* anti:: Antialiasing
+* truecolor:: Truecolor emulator
+@end menu
+@node filter, edge, , mfilter
+
+
+@appendixsubsec Filter command
+@defun filter keyword bool
+@end defun
+
+This command is used to enable or disable filters. @xref{mfilter}.
+The @emph{keyword} specifies the filter to change, and should be one of
+the following:
+
+@table @strong
+@item @code{'edge}
+Edge detection
+@item @code{'edge2}
+Edge detection2
+@item @code{'starfield}
+Starfield
+@item @code{'stereogram}
+Random dot stereogram
+@item @code{'interlace}
+Interlace filter
+@item @code{'blur}
+Motion blur
+@item @code{'emboss}
+Emboss
+@item @code{'palette}
+Palette emulator
+@item @code{'anti}
+Antialiasing
+@item @code{'truecolor}
+Truecolor
+@end table
+
+@emph{Available as}: command
+@node edge, edge2, filter, mfilter
+
+
+@appendixsubsec Edge detection
+
+This filter is a standard edge detection algorithm; solid areas are filled
+in black. Some fractals look very interesting with this filter (and some
+areas of some fractals just look like noise). This version of the filter produces
+relatively wide lines, so is useful at higher resolutions. The filter
+edge detection2 makes thinner lines, for the low resolution modes.
+
+@emph{Available as}: menu item, command line option
+
+@node edge2, starfield, edge, mfilter
+
+
+@appendixsubsec Edge detection2
+
+This filter is a standard edge detection algorithm; solid areas are filled
+in black. Some fractals look very interesting with this filter (and some
+areas of some fractals just look like noise). This version of the filter produces
+relatively tight lines, so is useful at lower resolutions. The filter
+edge detection makes thinner lines, for the high resolution modes.
+
+@emph{Available as}: menu item, command line option
+
+@node starfield, stereogram, edge2, mfilter
+
+
+@appendixsubsec Starfield
+
+The starfield filter generates random stars whose density depends on the
+iteration count. Choose your favorite spiral fractal and enable this filter
+to get a Grand Design spiral galaxy :)
+
+@emph{Available as}: menu item, command line option
+
+@node stereogram, interlace, starfield, mfilter
+
+
+@appendixsubsec Random dot stereogram
+
+Fractal images are good as a base for random dot stereograms. In
+case you don't know what these are, please point your browser to
+Google or another search engine and find some articles about such
+images, because learning to read such images takes some effort. They
+make it possible to generate three dimensional images on a normal monitor
+without any additional hardware, by exploiting bugs in the human brain
+(although you need two working eyes, and some people never learn to
+see them; they can simply ignore this feature).
+
+XaoS is able to generate these images in animations, so you may use
+all normal XaoS functions (except palette changing and palette rotation,
+which makes no sense applied to a stereogram). To make the animation yet
+more exciting, XaoS emulates ``falling'' into the set; while you zoom in,
+your distance from the set drops and drops---but you never hit it; when the
+set reaches the level of your monitor, the distance is changed again so
+you are far away.
+
+To make this work right, XaoS needs to know the @emph{exact size of your
+monitor}. Because most platforms have no way to determine this, you need to
+use @emph{command line options} to tune it. If it's not set or is wrong,
+the stereograms will probably be impossible to see (if your monitor is too
+big or resolution too low), or the images will seem to be shallow (if your
+monitor is too small or resolution too high).
+
+By default XaoS expects my 15" monitor (29.0cm x 21.5 cm). Another
+cause of problems is the virtual screen supported by some windowed
+environments (like some X servers) that makes a program think that the
+resolution is higher than it actually is, and you see only part of
+this extra-large screen.
+
+The worst thing you could possibly do is to run full-screen XaoS in some
+graphical windowing system (OS/2 on top of Windows or Wine on top of Linux,
+perhaps) where XaoS can't tell the real size of its window at all. In such
+cases, it's normally better (not to mention faster) to run XaoS natively,
+rather than under such an emulation layer.
+
+The following command line options are provided to specify sizes:
+
+@table @strong
+@item @code{-screenwidth}, @code{-screenheight}
+Lets you specify the size of your screen in centimeters. Note that
+you need to specify the size of the visible image on the monitor, not
+the size with edge borders, or the size of the tube. The simplistic
+`my monitor is 17", just turn 17" into centimeters' doesn't work;
+that 17" is a marketing figure and has only a vague connection to
+reality. Get out a ruler and measure it.
+
+@item @code{-pixelwidth}, @code{-pixelheight}
+Lets you specify the exact size of a single pixel, if XaoS cannot
+determine this for itself from your screen size.
+@end table
+
+These options are used by some other parts of XaoS as well, so you should
+use them even when you don't want to see stereograms. You should probably
+write a small starting script (or alias, or shortcut; whatever your environment
+uses) that passes the correct parameters to XaoS.
+
+If the window is @emph{smaller than 8cm in any direction}, you will probably be
+unable to see anything; make the window bigger.
+
+The correct way to see XaoS stereograms is:
+@table @strong
+@item 1
+Start XaoS with options specifying the exact size of your screen or one pixel on it
+@item 2
+Sit 60cm away from monitor
+@item 3
+If you use a windowed environment, resize XaoS's window to make it wider than, say, 15 cm.
+@item 4
+Enable the filter (by pressing @code{E})
+@item 5
+focus on a point far away from the monitor (try to use your
+own reflection, if your monitor's not antireflective); the random blurring should
+eventually fall into the pattern of a Mandelbrot set.
+@item 6
+Carefully use your mouse to zoom into interesting areas
+(it is easy to lose concentration when you are not trained; but you can use
+the autopilot...)
+@item 7
+Enjoy animation :)
+@end table
+
+If you still can't see the stereograms, it could be that the fractal, or your eye,
+is deformed. A deformed fractal can be caused by your specifying your monitor size
+wrongly. Visual problems that damage depth perception, as well as problems like
+astigmatism, can make it impossible to see stereograms at all.
+
+
+@emph{Available as}: menu item, command line option
+
+@node interlace, blur, stereogram, mfilter
+
+
+@appendixsubsec Interlace filter
+
+The interlace filter halves the horizontal resolution, and in each frame alternates
+between drawing only the even and only the odd lines. This speeds up the
+calculation, and in higher resolutions produces a motion-blur-like effect.
+
+@emph{Available as}: menu item, command line option
+
+@node blur, emboss, interlace, mfilter
+
+
+@appendixsubsec Motion blur
+
+Motion blur mixes the current frame with previous ones to produce a
+motion-blur effect. It might be rather slow in 16bpp truecolor modes. The best
+results can probably be seen in 8bpp modes, so you might want to enable the
+palette filter first.
+
+@emph{Available as}: menu item, command line option
+
+@node emboss, palettef, blur, mfilter
+
+
+@appendixsubsec Emboss
+
+This is a standard emboss filter, as seen in programs such as the GIMP or
+Photoshop. It produces especially nice results with the smooth
+outcoloring mode. @xref{outcoloring}.
+
+@emph{Available as}: menu item, command line option
+
+@node palettef, anti, emboss, mfilter
+
+
+@appendixsubsec Palette emulator
+
+XaoS can work in either palette or truecolor mode. Both modes
+have advantages and disadvantages. Palette mode allows effects such as palette
+rotation, while truecolor mode allows smoother incoloring
+and outcoloring modes and the
+truecolor coloring modes. If your display is truecolor, you
+can enable this filter to get palette emulation (albeit not as cheaply as in
+a real paletted mode).
+
+@emph{Available as}: menu item, command line option
+
+@node anti, truecolor, palettef, mfilter
+
+
+@appendixsubsec Antialiasing
+
+Antialiasing is a technique to increase image quality by eliminating jagged
+edges. XaoS calculates four values for each pixel (on the subpixel boundaries)
+and uses the average of them for the pixel value.
+
+This filter slows XaoS down a @emph{lot} and greatly increases memory
+requirements. It is useful mainly when you want to save images and want to make
+them look as nice as possible. Antialiasing also helps a lot when you want to
+encode JPEG or MPEG files; they are much shorter if antialiased (MPEG and JPEG
+hate jagged edges).
+
+@emph{Available as}: menu item, command line option
+
+@node truecolor, , anti, mfilter
+
+
+@appendixsubsec Truecolor emulator
+
+XaoS can work in either palette or truecolor mode. Both modes
+have advantages and disadvantages. Palette mode allows effects such as palette
+rotation, while truecolor mode allows smoother incoloring
+and outcoloring modes and the
+truecolor coloring modes. If your display is 8bpp, you can enable
+this filter to get truecolor emulation (but, obviously, not with as many colors
+as a real truecolor display).
+
+More information about filters
+
+@emph{Available as}: menu item, command line option
+
+@node ui, misc, mfilter, menus
+
+
+
+@appendixsec UI
+
+This menu contains functions to control the user interface layer of XaoS:
+zooming speed, the autopilot, realtime status information, and so on.
+
+@menu
+* speed:: Zooming speed
+* letterspersec:: Letters per second
+* autopilot:: Autopilot
+* recalculate:: Recalculate
+* interrupt:: Interrupt
+* nogui:: Disable XaoS's builtin GUI
+* status:: Status
+* ministatus:: Ministatus
+@end menu
+@node speed, letterspersec, , ui
+
+
+@appendixsubsec Zooming speed
+@defun speed float
+@end defun
+
+Change zooming speed, where 1 is the default, 2 means twice as fast, and so on.
+
+@emph{Available as}: menu item, command line option, command
+
+In the scripting language you can use the following functions for better
+control:
+@defun maxstep float
+@end defun
+
+Selects the zooming/unzooming speed. The parameter specifies how much of the
+range will be removed each twentieth of a second; 0 means nothing, 1 means
+everything (the parameter obviously has to be less than 1).
+Higher values mean faster zooming.
+
+@emph{Available as}: command
+@defun speedup float
+@end defun
+When zooming/unzooming, every twentieth of a second the @code{speedup}
+value is added to the current step until @code{maxstep} is reached.
+So this value selects the rate at which zooming stops and starts.
+Both these functions are more for internal use of XaoS then for manually
+written scripts, but they could come in useful nonetheless.
+
+@emph{Available as}: command
+
+@node letterspersec, autopilot, speed, ui
+
+
+@appendixsubsec Letters per second
+@defun letterspersec integer
+@end defun
+
+Speed of subtitles for the @code{textsleep} function.
+The user can set this value to suit; it can also be changed with the left and
+right arrow keys during animation replay.
+
+@emph{Available as}: command line option, command
+
+@node autopilot, recalculate, letterspersec, ui
+
+
+@appendixsubsec Autopilot
+@defun autopilot bool
+@end defun
+
+To make XaoS yet more impressive, we made a special autopilot mode that
+automatically drives into interesting boundaries of the set; you should
+press @code{A}, play your favorite music, drink coffee and relax. I never
+tried this but it should be really relaxing! Many pictures in the XaoS
+gallery were discovered using the autopilot.
+
+The autopilot also has some additional features. It backtracks if the
+zoomed picture is not interesting anymore, and can detect when it's zoomed
+into really a boring part of the fractal or reached the limit of floating
+point arithmetic on the platform, and restart zooming from the top.
+
+@emph{Available as}: menu item, command line option, command
+
+@node recalculate, interrupt, autopilot, ui
+
+
+@appendixsubsec Recalculate
+@defun recalculate
+@end defun
+
+Recalculate current fractal. This should be used when the fractal on the
+screen is strange because of error propagation caused by
+solid guessing. @xref{range}.
+
+@emph{Available as}: menu item, command line option, command
+
+@node interrupt, nogui, recalculate, ui
+
+
+@appendixsubsec Interrupt
+@defun interrupt
+@end defun
+
+Interrupt current calculation.
+
+@emph{Available as}: menu item, command line option, command
+
+
+@node nogui, status, interrupt, ui
+
+
+@appendixsubsec Disable XaoS's builtin GUI
+@defun nogui bool
+@end defun
+
+Disable XaoS menus and dialogs. This function should be used by external GUI
+programs; these manipulate XaoS via a pipe, so the internal GUI should be
+disabled at the same time. See the hacker's manual (@code{xaosdev.texinfo})
+for more details.
+
+@emph{Available as}: menu item, command line option, command
+
+@node status, ministatus, nogui, ui
+
+
+@appendixsubsec Status
+@defun status bool
+@end defun
+
+Enable/disable status information. This displays some useful information
+about the current fractal, such as viewpoint etc. (In low-resolution modes it
+also almost completely obscures the current fractal...)
+
+@emph{Available as}: menu item, command line option, command
+
+@node ministatus, , status, ui
+
+
+@appendixsubsec Ministatus
+@defun ministatus bool
+@end defun
+
+Enable/disable status line. This contains basic information such as how
+much you are zoomed and the framerate.
+
+@emph{Available as}: menu item, command line option, command
+
+@node misc, helpmenu, ui, menus
+
+
+
+@appendixsec Misc
+Miscellaneous functions.
+@menu
+* command:: Command
+* renderanim:: Render animation
+* clearscreen:: Clear screen
+* display:: Display fractal
+* text:: Display text
+* color:: Color
+* xtextpos:: Horizontal text position
+* ytextpos:: Vertical text position
+* textposition:: Text position
+* message:: Message
+@end menu
+@node command, renderanim, , misc
+
+
+@appendixsubsec Command
+
+You can invoke all XaoS functions using a simple command language reminiscent
+of Scheme. This option lets you run a single command. If you want to run more
+than one, you might want to use an XaoS animation file instead;
+they are written in the same language.
+
+@emph{Available as}: menu item
+
+@node renderanim, clearscreen, command, misc
+
+
+@appendixsubsec Render animation
+
+Render an animation to image files. See How to encode MPEG files
+for more information.
+
+@emph{Available as}: menu item,
+@node clearscreen, display, renderanim, misc
+
+
+@appendixsubsec Clear screen
+@defun clearscreen
+@end defun
+
+Clear the screen. To display the fractal again, use @code{display}. @xref{display}.
+This function is mainly useful in tutorials and similar animations.
+
+@emph{Available as}: menu item, command
+
+@node display, text, clearscreen, misc
+
+
+@appendixsubsec Display fractal
+@defun display
+@end defun
+
+Display fractal. This functions reverses the effect of the @code{clearscreen},
+line drawing and text output functions.
+
+@emph{Available as}: menu item, command
+
+@node text, color, display, misc
+
+
+@appendixsubsec Display text
+@defun text string
+@end defun
+
+Display the given text on the screen. This function is mainly useful in tutorials.
+Text should be cleared by printing lots of spaces, or using the
+@code{clearscreen}</a> or <a display>@code{display}
+functions. You might also want to use the @code{textposition}
+function to select the part of the screen to display the text on.
+
+To wait for the user to read the text, you can use the @code{textsleep}
+function.
+
+Example:
+
+
+@example
+(clearscreen)
+(textposition 'center 'middle)
+(text "Welcome into my animation")
+(textsleep)
+(display)
+@end example
+
+
+@emph{Available as}: menu item, command line option, command
+
+@node color, textposition, text, misc
+
+
+@appendixsubsec Color
+@defun color keyword
+@end defun
+
+Change text and line color. @emph{keyword} should be one of @code{'white},
+@code{'black} and @code{'red}.
+
+@emph{Available as}: menu item, command line option, command
+
+@node textposition, message, color, misc
+
+
+@appendixsubsec Text position
+@defun textposition keyword keyword
+@end defun
+
+Select text position. The first keyword specifies the horizontal
+position, the second the vertical position. The horizontal position should be
+one of @code{'left}, @code{'center}, and @code{'right}.
+The vertical should be one of @code{'top}, @code{'middle}, and @code{'bottom}.
+
+@emph{Available as}: command line option, command
+
+@node message, , textposition, misc
+
+
+@appendixsubsec Message
+@defun message string
+@end defun
+
+This function is almost identical to the @code{text} function,
+except that it uses message catalogs in the @code{catalog} directory to
+translate messages into other languages. It should be used only in the multi-lingual
+XaoS tutorials.
+
+@emph{Available as}: command line option, command
+
+@node helpmenu, xtextpos, misc, menus
+
+
+
+@appendixsec Help
+This menu contains help and tutorials.
+
+@node xtextpos, ytextpos, helpmenu, menus
+
+
+
+@appendixsec Horizontal text position
+Select the horizontal position used to display text. @xref{text}.
+It can be placed at the left, in the center or at the right.
+
+@node ytextpos, mformula, xtextpos, menus
+
+
+
+@appendixsec Vertical text position
+Select the vertical position used to display text. @xref{text}. It can be
+placed at the top, in the middle or at the bottom of the screen.
+
+@node mformula, palettemenu, ytextpos, menus
+
+
+
+@appendixsec formulae
+
+Each escape time fractal has its own formula. XaoS supports the following
+formulae:
+
+@menu
+* mandel:: Mandelbrot
+* mandel3:: Mandelbrot^3
+* octal:: Octal
+* newton:: Newton
+* barnsley:: Barnsley1
+* phoenix:: Phoenix
+* magnet:: Magnet
+@end menu
+@node mandel, mandel3, , mformula
+
+
+@appendixsubsec Mandelbrot
+
+The Mandelbrot set is the most famous escape time fractal ever. It has the
+simple formula @math{z=z^2+c}. See the tutorial chapter.
+
+@emph{Available as}: menu item, command line option
+
+@node mandel3, octal, mandel, mformula
+
+
+@appendixsubsec Mandelbrot^3---Mandelbrot^6 and Mandelbrot^9
+
+The Mandelbrot^3 fractal is a simple modification of the standard
+Mandelbrot set formula, using @math{z=z^3+c} instead of
+@math{z=z^2+c}.
+
+Other derivations of the Mandelbrot set (Mandelbrot^4 and so on) use even
+higher powers. See the tutorial chapter.
+
+@emph{Available as}: menu item, command line option
+@node octal, newton, mandel3, mformula
+
+
+@appendixsubsec Octal
+
+This is a less well-known fractal that Thomas discovered in Fractint.
+It has an interesting shape when displayed in the alternative
+planes. @xref{plane}. See the tutorial chapter.
+
+@emph{Available as}: menu item, command line option
+
+@node newton, barnsley, octal, mformula
+
+
+@appendixsubsec Newton
+
+This is Newton's approximation method for finding the roots of a polynomial. It
+uses the polynomial @math{x^3=1} and counts the number of iterations needed
+to reach the approximate value of the root. See the tutorial chapter.
+
+This fractal doesn't have Julia sets, but XaoS is able to generate Julia-like
+sets which are also very interesting (they are sometimes called ``Nova
+formulae'').
+
+@emph{Available as}: menu item, command line option
+
+@node barnsley, phoenix, newton, mformula
+
+
+@appendixsubsec Barnsley1
+
+This is a formula by Michael Barnsley. It produces very nice crystalline Julia
+sets. See the tutorial chapter.
+
+@emph{Available as}: menu item, command line option
+
+@node phoenix, magnet, barnsley, mformula
+
+
+@appendixsubsec Phoenix
+
+This formula produces very nice Julia sets.
+See the tutorial chapter.
+
+@emph{Available as}: menu item, command line option
+
+@node magnet, , phoenix, mformula
+
+
+@appendixsubsec Magnet
+
+This is a formula that comes from theoretical physics.
+It is derived from the study of theoretical lattices in the context of magnetic
+renormalization transformations.
+See the tutorial chapter.
+
+@emph{Available as}: menu item, command line option
+
+@node palettemenu, , mformula, menus
+
+
+
+@appendixsec Palette
+This menu contains functions to change the palette the fractal is displayed with.
+@menu
+* defpalette:: Default palette
+* randompalette:: Random palette
+* palette:: Custom palette
+* cycling:: Color cycling
+* shiftpalette:: Shift palette
+@end menu
+@node defpalette, randompalette, , palettemenu
+
+
+@appendixsubsec Default palette
+@defun defaultpalette number
+@end defun
+
+Create a default palette. In the scripting language, @code{number} specifies
+how much the palette is shifted by.
+
+Note that changing the palette in truecolor modes forces recalculation of
+the whole screen. To avoid this, you can enable the
+palette emulation filter first.
+
+@emph{Available as}: menu item, command line option, command
+
+@node randompalette, palette, defpalette, palettemenu
+
+
+@appendixsubsec Random palette
+@defun randompalette
+@end defun
+
+Create a random palette. XaoS will automatically pick one of its
+palette-generation algorithms and create one.
+
+Note that changing the palette in truecolor modes forces recalculation of
+the whole screen. To avoid this, you can enable the
+palette emulation filter first.
+
+@emph{Available as}: menu item, command line option, command
+
+@node palette, cycling, randompalette, palettemenu
+
+
+@appendixsubsec Custom palette
+@defun palette integer integer integer
+@end defun
+
+A custom palette lets you re-create some of the random palettes. The first value
+specifies the algorithm, which should currently be one of the following:
+@table @strong
+@item 0
+Default palette
+@item 1
+Black to color gradient
+@item 2
+Black to color to white gradient
+@item 3
+Cubistic-like algorithm.
+@end table
+The seed specifies a random seed for the palette; different seeds generate
+different palettes. The last value is the amount by which the palette is shifted.
+
+Note that changing the palette in the truecolor modes forces recalculation of
+the whole screen. To avoid this, you can enable the
+palette emulation filter first.
+
+@emph{Available as}: menu item, command line option, command
+
+@node cycling, shiftpalette, palette, palettemenu
+
+
+@appendixsubsec Color cycling
+@defun cycling bool
+@end defun
+
+Color cycling is an old and simple effect to animate fractals. The Mandelbrot
+set looks particularly nice when color-cycled. On truecolor displays, color
+cycling fails to initialize (since those displays don't have a palette).
+You can enable palette emulation filter to make it possible.
+
+@emph{Available as}: menu item, command line option, command
+
+In the user interface, colors can also be cycled in the opposite direction
+with the ``@emph{Reversed color cycling}'' function.
+
+To control the cycling speed, you coan use arrow keys or the
+``@emph{Color cycling speed}'' function.
+
+@emph{Available as}: menu item
+@defun cyclingspeed integer
+@end defun
+
+The parameter specifies the number of skips per second. It can be negative to
+cycle in the opposite direction.
+
+@emph{Available as}: menu item, command line option, command
+
+@node shiftpalette, , cycling, palettemenu
+
+
+@appendixsubsec Shift palette
+@defun shiftpalette integer
+@end defun
+
+Shift palette by the specified number of cells. This can be used to tune the
+palette's position on the fractal. You can also use the
+@emph{Shift one forward} and @emph{Shift one backward} functions
+for fine-tuning. Note that shifted and rotated palettes could look different on
+different displays (because they may have different palette sizes).
+
+Shifting the palette on truecolor displays causes a recalculation of the screen.
+To avoid this, you could use palette emulation filter. @xref{palettef}.
+
+@emph{Available as}: menu item, command line option, command
+
+
+@c ## menus controls ##
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+@comment node-name, next, previous, up
+@node about, support,menus ,Top
+@appendix About XaoS
+@appendix Credits
+(alphabetically)
+@table @strong
+@item Lucio Henrique de Araujo (lucio.matema@@gmail.com)
+Brazilian/Portuguese translation
+@item Samuel Bizien (samuel@@bizien.info)
+Beryl fractal
+@item Eric Courteau (ecourteau@@cplus.fr)
+francais.cat (translation of tutorials)
+@item Jean-Pierre Demailly (Jean-Pierre.Demailly@@ujf-grenoble.fr)
+Updates for French translation
+@item Radek Doulik (rodo@@atrey.karlin.mff.cuni.cz)
+TK interface, windowid patches
+@item Martin Dozsa (madsoft@@centrum.cz)
+cs.po (Czech translation of menus)
+@item Arpad Fekete (Fekete.Arpad.2@@stud.u-szeged.hu)
+Some new fractals, and the 'More formulae' menu
+@item Zelia Maria Horta Garcia (zeliagarcia@@seed.pr.gov.br)
+Brazilian/Portuguese translation
+@item Tim Goodwin (tgoodwin@@cygnus.co.uk)
+english.cat corrections
+@item Ben Hines
+autoconf suggestions, Mac OS X port
+@item Jan Hubicka (jh@@ucw.cz)
+Zooming routines, ugly interface, palettes, drivers, autopilot, filters, documentation, tutorials etc.
+@item Jens Kilian (jjk@@acm.org)
+BeOS driver, deutsch.cat
+@item Thomas A. K. Kjaer (takjaer@@imv.aau.dk)
+OS/2 ports (320x200 graphics and AA-lib)
+@item Zoltan Kovacs (kovzol@@math.u-szeged.hu)
+Internationalization, Hungarian translations, finalizing version 3.1, bug fixes, web design, current maintainer
+@item Zsigmond Kovacs (kovzsi@@gmail.com)
+Fractal examples
+@item J.B. Langston III (jb-langston@@austin.rr.com)
+Native Mac OS X port (from version 3.2.2); web redesign; co-maintainer
+@item Andreas Madritsch (amadritsch@@datacomm.ch)
+New fractal types, bailout, many fixes
+@item Mateusz Malczak (xaos@@malczak.info)
+User formula evaluation library
+@item Giorgio Marazzi (gmarazzi@@vtr.net)
+Improvements and fixes for espanhol.cat
+@item Thomas Marsh (thomas.marsh2@@gmail.com)
+First zoomer, formulae, planes, X11 driver, inversions, many ideas
+@item Dominic Mazzoni (dmazzoni@@cs.cmu.edu)
+Macintosh port (version 2.0)
+@item David Meleedy
+Grammatical and spelling fixed version of @code{xaos.6}
+@item Paul Nasca (zynaddsubfx@@yahoo.com)
+Ministatus improvement
+@item Nix (nix@@esperi.demon.co.uk)
+Grammatical and spelling fixed version of @code{xaos.hlp} and other files
+@item Terje Pedersen (terjepe@@login.eunet.no)
+Amiga port
+@item Cesar Perez (oroz@@users.sourceforge.net)
+Spanish translations
+@item Fabrice Premel (premelfa@@etu.utc.fr)
+Periodicity checking
+@item Jan Olderdissen (jan@@olderdissen.com)
+Win32 port
+@item Ilinca Sitaru (ilinca.sitaru@@gmail.com)
+Romanian translation
+@item Daniel Skarda
+Fractal examples
+@item Andrew Stone (Stone Design - www.stone.com)
+Videator Support, Cocoa improvements, performance mode, bug fixes
+@item Marton Torok (marton.torok@@gmail.com)
+Small fixes for pipes
+@item Pavel Tzekov (paveltz@@csoft.bg)
+Win32 support
+@item Charles Vidal
+Tcl/Tk interface
+@item Tapio K. Vocaldo (taps@@rmx.com)
+Macintosh port
+@item Tormod Volden
+Fixes for X11 driver to improve compatability with Xorg, XScreenSaver, Beryl and Compiz
+@item Philippe Wautelet (p.wautelet@@fractalzone.be)
+Bug fixes for version 3.1.1, French translation, gcc 4.0 fixes
+@item Sergio Zanchetta
+Italian translation
+@end table
+@subsection Included Software
+XaoS uses the following libraries. These libraries may be included
+with some binary distributions of XaoS.
+
+@emph{gettext 0.17}
+Website: @code{http://www.gnu.org/software/gettext/}
+Copyright (C) 1995-1997, 2000-2007 Free Software Foundation, Inc.
+License GPLv3+: GNU GPL version 3 or later (http://gnu.org/licenses/gpl.html)
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+
+@emph{GNU Scientific Library 1.11}
+Website: @code{http://www.gnu.org/software/gsl/}
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 The GSL Team.
+License GPLv3+: GNU GPL version 3 or later (http://gnu.org/licenses/gpl.html)
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.
+
+@emph{libpng 1.2.25}
+Website: @code{http://www.libpng.org/pub/png/libpng.html}
+Copyright (c) 1998-2008 Glenn Randers-Pehrson
+Copyright (c) 1996-1997 Andreas Dilger
+Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
+
+@c ## appendix about ##
+
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@comment node-name, next, previous, up
+@node support, index ,about ,Top
+@appendix Getting Support
+XaoS is a community-supported free software project. There are many ways
+to get help, all of which are explained below.
+
+@appendix Home Page
+The XaoS homepage is @code{http://xaos.sf.net}. Check here for the
+latest news and information about XaoS and to download the latest versions.
+
+
+@subsection Discussion Forums
+XaoS has two discussion forums hosted on SourceForge. You can read them
+freely, but in order to post, you must to register for a free SourceForge
+account.
+
+@table @strong
+@item Help
+Provides a place for you to ask for help using XaoS. Other XaoS users
+and/or the XaoS developers will answer your questions.
+
+
+@code{http://sourceforge.net/forum/forum.php?forum_id=17768}
+@item Open Discussion
+Provides a place to discuss anything related to XaoS or fractals.
+You can share tips, your own fractal creations, or any other fractal-related
+ideas with other XaoS users.
+
+
+@code{http://sourceforge.net/forum/forum.php?forum_id=17767}
+@end table
+
+
+We welcome you to join these forums and become involved in the XaoS community.
+
+@subsection Mailing Lists
+
+XaoS currently has three mailing lists hosted on SourceForge. Unfortunately,
+there is currently very little traffic on any of them. Hopefully in the future,
+we can get more XaoS users and developers involved in the mailing lists.
+The lists are as follows:
+
+@table @strong
+@item xaos-announce@@lists.sourceforge.net
+Low volume list that is used only to announce new releases.
+
+
+Subscribe: @code{http://lists.sourceforge.net/mailman/listinfo/xaos-announce}
+Archive: @code{http://sourceforge.net/mailarchive/forum.php?forum_name=xaos-announce}
+
+@item xaos-devel@@lists.sourceforge.net
+Developer mailing list, where the developers coordinate and discuss XaoS development.
+
+
+Subscribe: @code{http://lists.sourceforge.net/mailman/listinfo/xaos-devel}
+Archive: @code{http://sourceforge.net/mailarchive/forum.php?forum_name=xaos-devel}
+
+@item xaos-discuss@@lists.sourceforge.net
+General discussion list is for XaoS users to share tips and ideas about XaoS.
+
+
+Subscribe: @code{http://lists.sourceforge.net/mailman/listinfo/xaos-discuss}
+Archive: @code{http://sourceforge.net/mailarchive/forum.php?forum_name=xaos-discuss}
+@end table
+
+
+Please feel free to join any or all of these mailing lists and share your ideas with the
+developers and other XaoS users.
+
+@subsection Bug Reports
+If you think you have found a bug in XaoS, please report it. The developers will do their
+best to resolve the bug in a timely manner.
+
+
+Bug Tracker: @code{http://sourceforge.net/tracker/?atid=105771&group_id=5771}
+
+
+Please don't submit duplicate bugs. Browse the existing ones first to make
+sure nobody has already reported it. You may add additional information about a bug by
+entering a comment on an existing bug.
+
+
+If you are not sure if something is a bug, please open a support request. The developers
+will try to answer your question and can convert your support request to a bug if necessary.
+
+
+Support Requests: @code{http://sourceforge.net/tracker/?atid=205771&group_id=5771}
+
+@subsection Feature Requests
+If you have an idea for a great new feature you'd like to see added to XaoS, please let us know about it.
+You can submit a feature request via SourceForge, and the XaoS developers will do their best to
+implement your request in a future version.
+
+
+Feature Requests: @code{http://sourceforge.net/tracker/?atid=355771&group_id=5771}
+
+
+Please don't submit duplicate feature requests. Browse the existing ones
+first to make sure nobody has already requested the feature your want. You may add your
+vote for a feature by adding a comment to the existing request.
+
+@c ## appendix support ##
+
+@c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+@comment node-name, next, previous, up
+@node index, ,support ,Top
+@unnumbered Index of functions
+
+@printindex fn
+
+
+@contents
+@bye