Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/help/xaos.hlp
diff options
context:
space:
mode:
Diffstat (limited to 'help/xaos.hlp')
-rw-r--r--help/xaos.hlp3996
1 files changed, 3996 insertions, 0 deletions
diff --git a/help/xaos.hlp b/help/xaos.hlp
new file mode 100644
index 0000000..9953af3
--- /dev/null
+++ b/help/xaos.hlp
@@ -0,0 +1,3996 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%main
+<head>XaoS</head>
+<center>
+Welcome to XaoS - a real-time fractal zoomer.
+</center>
+
+<dl>
+<dt><a about>About XaoS</a>
+<dd>Learn who's behind XaoS and how you can help.
+
+<dt><a start>Getting started</a>
+<dd>Start here to learn how to use XaoS's basic features.
+
+<dt><a support>Getting support</a>
+<dd>How to report problems and get help from the XaoS community.
+
+<dt><a sffe>User formulas</a>
+<dd>Learn how to render your own formulas in XaoS.
+
+<dt><a video>Encoding videos</a>
+<dd>Learn how to create videos from your XaoS animations.
+
+<dt><a drivers>Platform-specific documentation</a>
+<dd>XaoS runs on many platforms. Read instructions specific to yours.
+
+<dt><a format>XaoS's file format</a>
+<dd>Learn how to tweak your saved fractals and animations.
+
+<dt><a menus>Menus, commands and parameter index</a>
+<dd>An in-depth discussion of all of XaoS's commands.
+</dl>
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%about
+<head>About XaoS</head>
+<notex>
+XaoS is free software. You are welcome to redistribute it under the terms of
+the <a gpl>GNU General Public License</a>. This also means that you may get
+<emph>sources</emph> and help improve XaoS through an open
+<a devel>development process</a>.
+</notex>
+<head>Credits</head>
+(alphabetically)
+<dl>
+<dt>Lucio Henrique de Araujo (lucio.matema@gmail.com)
+<dd>Brazilian/Portuguese translation
+<dt>Eric Courteau (ecourteau@cplus.fr)
+<dd>francais.cat (translation of tutorials)
+<dt>Jean-Pierre Demailly (Jean-Pierre.Demailly@ujf-grenoble.fr)
+<dd>Updates for French translation
+<dt>Radek Doulik (rodo@atrey.karlin.mff.cuni.cz)
+<dd>TK interface, windowid patches
+<dt>Martin Dozsa (madsoft@centrum.cz)
+<dd>cs.po (Czech translation of menus)
+<dt>Arpad Fekete (Fekete.Arpad.2@stud.u-szeged.hu)
+<dd>some new fractals, and the 'More formulae' menu
+<dt>Zelia Maria Horta Garcia (zeliagarcia@seed.pr.gov.br)
+<dd>Brazilian/Portuguese translation
+<dt>Tim Goodwin (tgoodwin@cygnus.co.uk)
+<dd>english.cat corrections
+<dt>Ben Hines
+<dd>autoconf suggestions, Mac OS X port
+<dt>Jan Hubicka (jh@ucw.cz)
+<dd>Zooming routines, ugly interface, palettes, drivers, autopilot, filters, documentation, tutorials etc.
+<dt>Jens Kilian (jjk@acm.org)
+<dd>BeOS driver, deutsch.cat
+<dt>Thomas A. K. Kjaer (takjaer@imv.aau.dk)
+<dd>OS/2 ports (320x200 graphics and AA-lib)
+<dt>Zoltan Kovacs (kovzol@math.u-szeged.hu)
+<dd>Internationalization, Hungarian translations, finalizing version 3.1, bug fixes, web design, current maintainer
+<dt>Zsigmond Kovacs (kovzsi@gmail.com)
+<dd>Fractal examples
+<dt>J.B. Langston III (jb-langston@austin.rr.com)
+<dd>Native Mac OS X port (from version 3.2.2); web redesign; co-maintainer
+<dt>Andreas Madritsch (amadritsch@datacomm.ch)
+<dd>New fractal types, bailout, many fixes
+<dt>Mateusz Malczak (xaos@malczak.info)
+<dd>User formula evaluation library
+<dt>Giorgio Marazzi (gmarazzi@vtr.net)
+<dd>Improvements and fixes for espanhol.cat
+<dt>Thomas Marsh (thomas.marsh2@gmail.com)
+<dd>First zoomer, formulae, planes, X11 driver, inversions, many ideas
+<dt>Dominic Mazzoni (dmazzoni@cs.cmu.edu)
+<dd>Macintosh port (version 2.0)
+<dt>David Meleedy
+<dd>Grammatical and spelling fixed version of <tt>xaos.6</tt>
+<dt>Paul Nasca (zynaddsubfx@yahoo.com)
+<dd>Ministatus improvement
+<dt>Nix (nix@esperi.demon.co.uk)
+<dd>Grammatical and spelling fixed version of <tt>xaos.hlp</tt> and other files
+<dt>Terje Pedersen (terjepe@login.eunet.no)
+<dd>Amiga port
+<dt>Cesar Perez (oroz@users.sourceforge.net)
+<dd>Spanish translations
+<dt>Fabrice Premel (premelfa@etu.utc.fr)
+<dd>Periodicity checking
+<dt>Jan Olderdissen (jan@olderdissen.com)
+<dd>Win32 port
+<dt>Ilinca Sitaru (ilinca.sitaru@gmail.com)
+<dd>Romanian translation
+<dt>Daniel Skarda
+<dd>Fractal examples
+<dt>Andrew Stone (Stone Design - www.stone.com)
+<dd>Videator Support, Cocoa improvements, performance mode, bug fixes
+<dt>Marton Torok (marton.torok@gmail.com)
+<dd>Small fixes for pipes
+<dt>Pavel Tzekov (paveltz@csoft.bg)
+<dd>Win32 support
+<dt>Charles Vidal
+<dd>Tcl/Tk interface
+<dt>Tapio K. Vocaldo (taps@rmx.com)
+<dd>Macintosh port
+<dt>Tormod Volden
+<dd>Fixes for X11 driver to improve compatability with Xorg, XScreenSaver, Beryl and Compiz
+<dt>Philippe Wautelet (p.wautelet@fractalzone.be)
+<dd>Bug fixes for version 3.1.1, French translation, gcc 4.0 fixes
+<dt>Sergio Zanchetta
+<dd>Italian translation
+</dl>
+<head>Included Software</head>
+XaoS uses the following libraries. These libraries may be included
+with some binary distributions of XaoS.
+<p>
+<emph>gettext 0.17</emph><br>
+Website: <tt>http://www.gnu.org/software/gettext/</tt><br>
+Copyright (C) 1995-1997, 2000-2007 Free Software Foundation, Inc.<br>
+License GPLv3+: GNU GPL version 3 or later (http://gnu.org/licenses/gpl.html)<br>
+This is free software: you are free to change and redistribute it.<br>
+There is NO WARRANTY, to the extent permitted by law.
+<p>
+<emph>GNU Scientific Library 1.11</emph><br>
+Website: <tt>http://www.gnu.org/software/gsl/</tt><br>
+Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 The GSL Team.<br>
+License GPLv3+: GNU GPL version 3 or later (http://gnu.org/licenses/gpl.html)<br>
+This is free software: you are free to change and redistribute it.<br>
+There is NO WARRANTY, to the extent permitted by law.
+<p>
+<emph>libpng 1.2.25</emph><br>
+Website: <tt>http://www.libpng.org/pub/png/libpng.html</tt><br>
+Copyright (c) 1998-2008 Glenn Randers-Pehrson<br>
+Copyright (c) 1996-1997 Andreas Dilger<br>
+Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%start
+<head>Getting Started</head>
+
+<a controls>Basic controls</a><br>
+Learn the basic commands to control XaoS.
+
+<p>
+<tutor fractal.xaf>An introduction to fractals</tutor><br>
+Try this animated tutorial if you don't know what a fractal is. If
+you are new to XaoS you should try it too, since it is quite a good example
+of XaoS's features.
+
+<p>
+<tutor features.xaf>XaoS features overview</tutor><br>
+Watch this tutorial to discover more of XaoS's features.
+
+<p>
+Both the tutorials are divided into chapters and available from help menu,
+so you don't need to watch them all at once (they are about half an hour long).
+
+<p>
+<a tutorial>XaoS Overview</a><br>
+A written introduction to all of XaoS's features.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%support
+<head>Support</head>
+XaoS is a community-supported free software project.
+
+<head>Home Page</head>
+Site: <tt>http://xaos.sourceforge.net</tt><p>
+
+Check the Xaos home page for the latest news and information about
+XaoS and to download the latest versions.
+
+<head>Users' Discussion Group</head>
+Site: <tt>http://groups.google.com/group/xaos-users</tt><p>
+
+The xaos-users discussion group on Google Groups provides a place for XaoS
+users to help each other get the most out of XaoS. XaoS developers also
+monitor this discussion and answer questions from time to time.<p>
+
+You can browse the archives freely but you must join the group in order to
+post. However, Google Groups provides a range of options for participation
+from a traditional mailing list to a completely web-based forum, so you
+don't have to get emails if you don't want to.<p>
+
+If you have a question or problem, please feel free to ask for help. We
+also encourage you to share examples (.xaf or .xpf files), hints and
+tips. If you have a gallery of images created using XaoS, feel free to
+post a link to the group.
+
+
+<head>Developers' Discussion Group</head>
+
+Site: <tt>http://groups.google.com/group/xaos-devel</tt><p>
+
+The xaos-devel discussion group on Google Groups is where XaoS developers
+discuss and coordinate the further development of XaoS. XaoS users are
+welcome to monitor this forum as well, but general discussion and requests
+for help should be posted to the Users' Discussion Group instead.
+
+
+<head>Issue Tracker</head>
+
+Site: <tt>http://code.google.com/p/gnuxaos/issues/list</tt><p>
+
+Issues are tracked on Google Code. If you think you have found a bug in
+XaoS or have an idea for a great new feature, please let us know about it.
+However, if you're not sure how to submit a useful issue report, please ask
+on the xaos-users discussion group first (see above).<p>
+
+Please don't submit duplicate issues. Search the existing ones first to make
+sure nobody has already reported it. You can add additional information about
+a bug by entering a comment on an existing bug. You can also express your
+interest in an issue by using the "Star" function on Google Code. This lets
+the developers know how many users are interested in an issue and also allows
+you receive status updates.<p>
+
+The developers will do their best to respond to issues in a timely manner.
+However, keep in mind that XaoS is developed on a volunteer basis and the
+developers work on it in their spare time. Therefore, we can't guarantee that
+issues will be addressed in a certain timeframe.<p>
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%devel
+<head>Development</head>
+XaoS is free software. One of the most significant rights its <a gpl>license</a>
+grants to you is the right to <emph>freely get, study and improve</emph> its
+source code, which is available from the XaoS homepage.
+<p>
+XaoS has an open development model. All development is coordinated via Google Code
+at <tt>http://gnuxaos.googlecode.com/</tt>. Development versions are
+available via Subversion at <tt>https://sourceforge.net/scm/?type=svn&group_id=5771</tt>,
+so if you are interested in the future of XaoS, give the latest source a try! We also
+have a several <a support>discussion groups</a>, which you can join if you want to
+discuss XaoS with others or participate in the development process.
+<p>
+If you want to do some development, you are encouraged to send your work back
+to the <a about>authors</a>; if it is well done, it will be added to the
+next release. All changes should be submitted to the Google Code issue tracker.
+<p>
+XaoS is quite easily extensible. You might want to
+read a bit about its internals in the file <emph>doc/xaosdev.info</emph>.
+XaoS is also portable, so if it doesn't work on your favorite platform (or
+there is just an old version available), you could quite easily port it.
+<p>
+<head>Volunteer Opportunities</head>
+XaoS needs volunteers to make it the best fractal program it can be!
+You don't have to be a programmer to help. The following
+tasks open to volunteers:
+
+<p>Improving the documentation via the Wiki (and improving the DokuWiki converter).
+<p>Compiling binaries for your favorite operating system.
+<p>Reviewing the source code, adding comments, and checking lines which generate warnings during compilation.
+<p>Creating additional tutorials and examples.
+<p>Translating XaoS into your language.
+<p>Implementing feature requests.
+<p>Fixing outstanding bugs.
+<p>If you would like to volunteer, join the discussion groups and let us know. We would be happy to help you get started!
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%sffe usrform usrformInit
+<head>Using user formulas</head>
+<p>
+XaoS supports entering your own custom formulas.
+Select <tt>User formula</tt> from the <tt>Fractal</tt> menu to define a
+custom fractal formula. Select <tt>User initialization</tt> to change
+the sequence starting point <emph>z0</emph>. By default <emph>z0</emph>
+is set to 0. User formulas should be interpreted as functions in the form<br>
+<emph>Z(n+1) = formula (Z(n), Z(n-1), C)</emph>.
+<p>
+In user formulas, as shown above, three variables are available:<br>
+<dl>
+<dt>z
+<dd>current sequance point Z(n)
+<dt>c
+<dd>current plane 'point'
+<dt>p
+<dd>previous sequence point Z(n-1)
+</dl>
+<p>
+Format for complex numbers is <emph>{re;im}</emph><br>
+eg. {3;2} is complex number 3+2i.
+<p>
+Available functions are listed below:
+<dl>
+<p>
+<dt>basic operations
+<dd>+, -, *, /
+<p>
+<dt>basic trigonometry
+<dd>sin, cos, tan, cot<br>
+asin, acos, atan, acot<br>
+sinh, cosh, tanh, coth
+<p>
+<dt>Exponential and logarithmic functions
+<dd>exp<br>
+log - natural logarithm<br>
+log2, log10<br>
+logN (base, z) - logarithm of base N (where N is integer)<br>
+logCN (base, z) - logarithm of base CN (where CN is complex)
+<p>
+<dt>power functions
+<dd>powi - power with integer exponent (fastest)<br>
+powd - power with real exponent<br>
+powdc - power with complex exponent<br>
+pow - same as powd<br>
+sqr - square
+<p>
+<dt>square functions
+<dd>sqrt - square root of a complex number<br>
+rtni (z, n, i) - i-th root of n-th orgder
+<p>
+<dt>other functions
+<dd>rand (max) - random real number in range [0, max)<br>
+inv - inverse<br>
+abs - absolute value<br>
+re - real part<br>
+im - imaginary part
+</dl>
+<p>
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%video
+
+<head>How to encode video files from XaoS</head>
+<p>
+To create a video, make and <tt>xaf</tt> file first (the easiest way to do this is
+to use the <emph>record</emph> function in the file menu). Then you need to render
+the animation. XaoS can output sequences of ordinary <tt>PNG</tt> images, that
+can later be used by a video encoder.
+<p>
+<head>Generating image sequences for video</head>
+<p>
+To generate an image sequence, choose <emph>Render Animation</emph> from the <emph>Misc</emph>
+menu. You can also use the following command on the command line:
+<p><tt>
+xaos -render [filename] -size 352x240 -antialiasing
+ -renderframerate 24 -basename [basename]
+</tt><p>
+<emph>File to render</emph> (<tt>[filename]</tt>) is the name of the <tt>xaf</tt> file,
+<emph>Basename</emph> (<tt>[basename]</tt>) 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 <tt>.png</tt> extension to this name automatically.
+<p>
+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.
+<p>
+The framerate can also be altered. Make sure you choose a framerate that is supported by
+the video codec you wish to use.
+<p>
+<emph>Antialiasing</emph> (<tt>-antialiasing</tt>) 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</emph>)
+<p>
+On the other hand, the other XaoS rendering option <emph>Always Recalculate</emph> (<tt>-alwaysrecalc</tt>) (which disables
+XaoS's zooming optimizations) is <emph>not recommended</emph>. 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.
+<head>Rendered files</head>
+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).
+<p>
+All images are named <tt>[basename]framenum.png</tt>. For example <tt>intro0001.png</tt> 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 <tt>mv</tt> or symbolic linking.
+<p>
+A list of all filenames is saved into the file <tt>[basename].par</tt>, 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.
+<head>Encoding videos</head>
+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:
+<dl>
+<dt>ffmpeg
+<dd>Available from: <tt>http://ffmpeg.mplayerhq.hu/</tt><br>
+Instructions: <tt>http://ffmpeg.mplayerhq.hu/faq.html#SEC12</tt>
+<dt>mencoder
+<dd>Part of mplayer, available from: http://www.mplayerhq.hu/<br>
+Instructions: <tt>http://www.mplayerhq.hu/DOCS/HTML/en/menc-feat-enc-images.html</tt>
+</dl>
+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.
+
+<p>
+Note: we used to recommend <a berkeley>Berkeley parallel MPEG encoder</a> to
+encode the generated png files into MPEG videos. We have kept
+the instructions mainly for historic purposes.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%berkeley
+<head>Berkeley parallel MPEG encoder</head>
+
+This is the encoder we used to recommend. However, it has not been updated
+for a very long time and no longer appears to compile on modern systems.
+Also, there are much more modern codecs available that provide better video
+quality and compression rates. Still, we have kept the following
+instructions mainly for historic purposes.
+<p>
+It is available at Berkeley's FTP site <tt>mm-ftp.CS.Berkeley.EDU</tt> and called
+<tt>mpeg_encode1.5b</tt>
+<p>
+It has lots of options to tune, so you should spend quite a lot of time
+playing with this. The configuration I use is in file <tt>doc/mpeg.param</tt>.
+<p>
+I've also made some patches that makes possible to use the pattern and motion
+files generated from XaoS. The patch is in <tt>doc/mpeg_encode.patch</tt>. So if
+you want to use these features (they are <emph>EXPERIMENTAL</emph>) you might apply this
+patch and recompile the encoder.
+<p>
+Once you filled the <tt>mpeg.param</tt> file (see comments inside), you should render
+sequence using <tt>mpeg_encode [filename]</tt> and with luck you are done.
+
+<head>Pattern file</head>
+
+Some other files are generated as well. A <emph>pattern file</emph> is generated,
+which contains a <emph>recommended order of P, B and I frames</emph>.
+<p>
+MPEG sequence consist of these three frames. The <emph>I frames</emph> are just images
+saved in a format similar to JPEG files.
+<p>
+The <emph>P frames</emph> are images which are constructed as a delta from the
+previous one (the latest I or P frame). In case consecutive frames are similar
+(and in animations they often are), a P frame takes much less disk space
+than an I frame.
+<p>
+The <emph>B frames</emph> are constructed from the nearest previous P or I frame
+and the next P or I frame. They take even less disk space, but they are quite
+hard to encode. Also they are <emph>not used as previous frames</emph>,
+so their information is lost once they are displayed. They are usually
+rendered at lower quality than a P or I frame and used just to interpolate
+nearest frame and make animation smoother. It is generally not a good idea
+to make a whole sequence just from B frames.
+<p>
+Using just P frames is generally not a good idea. It makes the file shorter,
+but to jump into Nth frame of animation you need to <emph>recalculate all P and B frames
+since latest I frame</emph>. Decoders often want to jump to some frame (when
+the user asks, or when they can't decode a sequence in time and must skip
+some), so you need to have some I frames in the animation to make this possible.
+The latter reason means that you need to place them quite often. Usually
+they are used for every 15th frame or thereabouts. Because they cost quite a lot,
+in my animations I usually use every 27th frame. To set this distance
+use <tt>-iframedist</tt> option. It should be a multiple of 3.
+<p>
+XaoS generates a recommended order of frames based on its knowledge of
+fractal motion. Situations where the screen doesn't move at all are rendered
+just from P frames (since jumping is usually not required here); in situations
+where the screen changes completely (at least in XaoS's opinion) I frames are used
+and in other cases, a standard sequence <tt>IBBPBBPBBPBBP...</tt> is used.
+<p>
+If your encoder supports this, you should supply this pattern for encoding to
+squeeze out some bytes.
+
+<head>Motion vector files</head>
+
+XaoS also generates a motion vector recommendation for the encoder. This is
+useful for encoding of B and P frames.
+<p>
+If some objects on the screen are moving at a constant speed, motion vectors
+can store that speed, so no image needs to be saved to represent that change.
+<p>
+Calculating this motion vector is a very significant task. If you guess
+them well, you increase quality and reduce file size, which is always great.
+Calculation also takes lots of CPU and it is hard to get optimal vectors (it
+just takes too long).
+<p>
+XaoS knows how the fractals move, so it can calculate this vectors quite
+easily. XaoS saves this information into <tt>*.p</tt> and <tt>*.b</tt> files. (<tt>*.p</tt> are for P
+frames, <tt>*.b</tt> are for B frames). If your encoder supports this, you should
+provide this vector to increase quality. They are <tt>not exact</tt> (XaoS can make
+mistakes); the encoder should try to find its own vectors, then try XaoS's ones,
+and pick whichever is better.
+<p>
+This technique saves quite a lot of bytes in fast zooming/un-zooming
+animations (where images move more than 3 or 5 pixels per frame--since
+most programs look 10-20 pixels around each point for motion vectors).
+<p>
+To enable saving of motion vector files, add the option
+<tt>-rendervectors</tt>.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%controls
+<head>Basic controls</head>
+By default the mouse buttons work in the following way:
+<p>
+<dl>
+<dt>left<dd>zoom in
+<dt>right<dd>zoom out
+<dt>middle<dd>move fractal in a drag-and-drop fashion
+</dl>
+<p>
+<emph>Note:</emph> Since most Macs only have one button mice, these controls
+are emulated on Mac OS X using modifier keys. See the help section on
+<a cocoa>Mac OS X</a> for details.
+<p>
+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.
+<p>
+If you don't have a middle button, press both buttons to enable
+emulation.
+<p>
+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.
+<p>
+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</emph> and <emph>Right</emph>.
+<p>
+An <emph>Up</emph> and <emph>Down</emph> keys should be used to change zooming
+speed. Note that higher speed costs more and image will be blocky.
+<p>
+This behavior can also change. With palette cycling enabled, <emph>Left</emph>
+and <emph>Right</emph> keys change cycling speed; in continuous
+rotation they change rotation speed.
+<p>
+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.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%writehelp
+<head>How to write XaoS help files</head>
+XaoS help is stored in the file <tt>help/xaos.hlp</tt>. It is divided into parts,
+each part being started by a <emph>keyword</emph>. In the help file keywords are
+written as <tt>%keyword</tt>
+<p>
+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.
+<p>
+<notex>
+The help file is written in a special format called <a xshl>xshl</a>.
+</notex>
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%xshl
+<head>xshl</head>
+<emph>Xshl</emph> stands for <emph>XaoS simple hypertext language</emph>. 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 <tt>src/util/xshl.c</tt> to parse it.
+<p>
+The following tags are supported:
+<p>
+<dl>
+<dt>head
+<dd>make headings (should be at the beginning of the page, at least)
+<dt>emph
+<dd>emphasize
+<dt>tt
+<dd>Use non proportional font
+<dt>br
+<dd>Break line
+<dt>p
+<dd>Next paragraph
+<dt>dl
+<dd>Definition list
+<dt>dt
+<dd>Definition tag (should be used only inside a definition list)
+<dt>dd
+<dd>Definition description (should be used only inside a definition list)
+<dt>center
+<dd>align to center
+<dt>right
+<dd>align to right
+<dt>red
+<dd>change color to red (should not be used in help files)
+<dt>black
+<dd>change color to black (should not be used in help files)
+<dt>white
+<dd>change color to white (should not be used in help files)
+<dt>a name
+<dd>link to other help page
+<dt>tutor name
+<dd>activate tutorial
+<dt>notex
+<dd>Ignore this in texinfo manuals
+</dl>
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%format
+<head>XaoS's file format</head>
+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.
+<p>
+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.
+<p>
+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:
+<p>
+<tt>(command_name </tt><emph>[param1] [param2]</emph><tt>)</tt>
+<p>
+where parameters are optional and separated by whitespace (an arbitrary number
+of spaces, tabs and newlines). The parameters can have the following types:
+<p>
+<dl>
+<dt>integer
+<dd>number w/o decimal point (<tt>123</tt>)
+<dt>float
+<dd>floating point number in decimal notation with optional exponent (<tt>1.23E2</tt>)
+<dt>keyword
+<dd>text started by quote <tt>'</tt>. It is used to pass various string constants
+like formula name (<tt>'mandel</tt>) Quote is required for scheme compatibility
+<dt>string
+<dd>Text inside double quotes. The only parameter that should contain whitespace
+<dt>boolean
+<dd><tt>#t</tt> for true or <tt>#f</tt> for false
+</dl>
+<p>
+There is a complete description of all XaoS functions (with some examples) and an
+index of functions in the <a menus>XaoS registry</a>. You may particularly want
+to read about the <a animf>animation functions</a>. Also, the following functions
+are significant:
+
+<dl>
+<dt>load
+<dd>
+This function loads and interprets a file. It works similarly to <tt>#include</tt>
+in C.
+<dt>initstate
+<dd>
+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.
+<dt>usleep
+<dd>
+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.
+<dt>wait
+<dd>
+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.
+</dl>
+<p>
+Example:
+<p><tt>
+;configure everything for the first frame<br>
+(inistate)<br>
+(palette 1 1163254293 0) ;custom palette<br>
+(cycling #t) ;enable cycling<br>
+(cyclingspeed 7)<br>
+(maxiter 276) ;higher number of iterations<br>
+(range 3) ;default range for solid guessing<br>
+(usleep 1000000) ;second frame starts here<br>
+(moveview -1.8101154154614007889 -8.2687205907162041209E-05)<br>
+ ;just move the image<br>
+(usleep 1000000) ;third frame<br>
+(morphview -1.8101154154614007889 -8.2687205907162041209E-05<br>
+ 6.277210971069452361E-10 6.2772109785334669875E-10)<br>
+ ;10 seconds of zooming into selected<br>
+ rectangle<br>
+(usleep 100000000)<br>
+</tt><p>
+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:
+<p><tt>
+(initstate)<br>
+(defaultpalette 0)<br>
+(formula 'mandel)<br>
+(view -1.64128273713 -5.50393226816E-05 9.69332308848E-08<br>
+9.69332308834E-08)<br>
+</tt><p>
+Just change the <tt>view</tt> command to <tt>morphview</tt>, and add <tt>usleep</tt>:
+
+<p><tt>
+(initstate)<br>
+(defaultpalette 0)<br>
+(formula 'mandel)<br>
+(morphview -1.64128273713 -5.50393226816E-05 9.69332308848E-08<br>
+9.69332308834E-08)<br>
+(usleep 10000000)<br>
+</tt><p>
+The following code produces Julia morphing in the real axis:
+<p><tt>
+(initstate)<br>
+(fastjulia #t)<br>
+(juliaseed -2 0)<br>
+(morphjulia 2 0)<br>
+(usleep 2000000)<br>
+</tt><p>
+
+And following is the ``rotozooming'' animation:
+
+<p><tt>
+(initstate)<br>
+(fastrotate #t)<br>
+(morphview -1.64128273713 -5.50393226816E-05 9.69332308848E-08<br>
+9.69332308834E-08)<br>
+(morphangle 300)<br>
+(usleep 10000000)<br>
+(wait)<br>
+(fastrotate #f)<br>
+</tt><p>
+
+<head>XaoS gallery</head>
+
+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 <a support>mailing list</a> or upload them to our website.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%drivers
+
+<head>Platform-specific documentation</head>
+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.
+<notex>
+<center>
+<p>
+<a X11>X11 driver</a>
+<p>
+<a cocoa>Mac OS X driver</a>
+<p>
+<a win32>Win32 driver</a>
+<p>
+<a dX-window>DirectX windowed driver</a>
+<p>
+<a dX-fullscreen>DirectX fullscreen driver</a>
+<p>
+<a aa>AA-lib driver</a>
+<p>
+<a dos>MS-DOS driver</a>
+<p>
+<a ggi>GGI driver</a>
+<p>
+<a plan9>plan9 driver</a>
+<p>
+<a SVGAlib>SVGAlib driver</a>
+<p>
+<a DGA>DGA driver</a>
+<p>
+<a BeOS>BeOS drivers (BeOS, DirectWindow, WindowScreen) </a>
+</center>
+</notex>
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%cocoa
+
+<head>Mac OS X port</head>
+XaoS has full support for Mac OS X including native menus, dialogs, help,
+Finder integration, drag and drop, and basic AppleScript support.
+<p>
+The Mac OS X port of XaoS strives to provide a Mac-like experience, while
+retaining compatibility with other platforms. Some Mac-specific details
+are outlined below.
+
+<head>Zooming</head>
+Since most Macs have one button mice, the middle and right buttons are emulated
+with modifier keys. This means there are multiple ways to perform basic zooming
+operations:
+
+<dl>
+<dt>Zoom in
+<dd>Hold down the main mouse button.
+<dt>Zoom out
+<dd>1. Hold down the Ctrl key while pressing the main mouse button.<br>
+ 2. Use the right mouse button if you have one.<br>
+ 3. On laptops with gestures enabled, place two fingers on your trackpad and press the main mouse button.
+<dt>Pan
+<dd>1. Hold down the Shift key while dragging with the main mouse button.<br>
+ 2. Drag with the center button if you have one.<br>
+ 3. Use the scroll wheel or ball if you have one to pan up/down and left/right.<br>
+ 4. On laptops with gestures enabled, swipe two fingers across the trackpad to pan horizontally or vertically.
+</dl>
+
+<head>Keyboard Shortcuts</head>
+XaoS menu functions have been mapped to commonly used Mac keyboard shortcuts. For example,
+Open is Cmd-O and Undo is Cmd-Z, just as you would expect.
+
+<p>However, XaoS also has its own
+long-standing tradition of cross-platform keyboard shortcuts. These keyboard shortcuts are
+also displayed in the menus inside parentheses. For example, the menu item "Autopilot (a)"
+means that you can press a (with no modifier keys) to activate Autopilot. All of these
+traditional XaoS shortcuts do not use modifier keys, so they do not conflict with any standard
+Mac OS X shortcuts.
+
+<p>In some cases, the same function may be performed with both a traditional
+XaoS shortcut and a Mac OS X-specific shortcut. You can choose whichever one is more
+comfortable for you.
+
+<head>Full Screen Mode</head>
+The Mac OS X port supports a full screen mode. To enter it, select <emph>Mac OS X Full Screen Driver</emph>
+from the <emph>UI -> Driver</emph> submenu. Once you enter full screen mode, the menu bar will
+automatically hide. To access the menu bar, move your mouse to the top of the screen and the menu
+bar will slide into view. When you move your mouse away, it will automatically disappear again.
+To return to windowed mode, select <emph>Mac OS X Windowed Driver</emph>
+from the <emph>UI -> Driver</emph> submenu.
+
+<head>Videator Support</head>
+XaoS for Mac OS X can send a live video stream to Stone Design's Videator (<tt>http://stone.com/Videator/</tt>),
+which can then do post-processing using Mac OS X's core video technology. This combination creates mind-blowing visuals
+that are great for VJing (live video performance art).
+<p>To turn on output to Videator, select <emph>Videator Output</emph> from the <emph>UI</emph> menu.
+See <tt>http://stone.com/Videator/VJ.html</tt> for more details on how using Videator with XaoS.
+
+<head>Known Issues</head>
+<dl>
+<dt>Catseye fractal does not render properly.
+<dd>Workaround: Set the bailout to just over 4 (e.g., 4.000000001). After changing this setting, the fractal renders as expected.
+</dl>
+<p>
+The Mac OS X driver was written by J.B. Langston, 2006-2008.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%aa
+
+<head>AA-lib driver</head>
+
+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 <tt>http://aa-project.sf.net</tt>)
+<p>
+It is a fully featured XaoS driver for text mode displays. It supports 256 colors
+and the mouse where possible.
+<p>
+It also has some extended features available from the UI menu:
+<p>
+<dl>
+<dt>Attributes
+<dd>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.
+<dt>Font
+<dd>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.
+<dt>Inversion
+<dd>Some devices use inverse video: use this to get correct results on such devices.
+<dt>Dithering mode
+<dd>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.
+<dt>Palette options
+<dd>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</emph>.
+<dt>Save text screen
+<dd>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</emph>.
+</dl>
+<p>
+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 <tt>xaos -help</tt> or the AA-lib documentation for details.
+<p>
+The AA driver was written by Jan Hubicka, 1997.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%dos
+
+<head>DOS driver</head>
+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.
+<p>
+The following problems may occur:
+<p>
+<dl>
+<dt>Some DPMI servers may cause problems
+<dd>Some DPMI servers like the one from Novell/Dr/Open DOS are buggy. Use clean DOS
+ instead and XaoS will automatically start <tt>cwsdpmi</tt>.
+ Under Open Dr DOS use <tt>dpmi off</tt> at command line to disable it.
+<dt>Higher resolutions don't work
+ <dd>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.)
+<dt>XaoS needs a coprocessor
+ <dd>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.
+<dt>XaoS needs mouse driver to be usable
+<dt>XaoS works slowly in higher resolution
+ <dd>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 <tt>http://www.talula.demon.co.uk</tt> for the FreeBE
+ project or Scitech Display Doctor package.
+ (See the note about VESA at the end of this section.)
+</dl>
+<head>VESA</head>
+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.
+<p>
+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
+<tt>ftp.simtel.net</tt>, where there are many VESA emulation packages such as
+<tt>s3vbe</tt> or the new FreeBe project at
+<tt>http://www.talula.demon.co.uk</tt>
+<p>
+DOS driver was written by Jan Hubicka, 1997.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%ggi
+
+<head>GGI driver</head>
+
+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.
+<p>
+Everything else might work well, but there are no guarantees. It is alpha quality
+software.
+<p>
+GGI driver was written by Jan Hubicka, 1998.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%plan9
+
+<head>Plan9 driver</head>
+
+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)
+<p>
+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.
+<p>
+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 <tt>-pixelwidth</tt> and <tt>-pixelheight</tt>
+instead of <tt>-screenwidth</tt> and <tt>-screenheight</tt>.
+<p>
+By default XaoS changes the colormap. This will collide with other colorful
+programs like Mortha. You can disable this behavior using
+<tt>-nopalette</tt> switch, but this will slow down XaoS.
+<p>
+Plan9 driver was written by Jan Hubicka, 1997.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%SVGAlib
+
+<head>SVGAlib driver</head>
+
+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:
+<p>
+<dl>
+<dt>XaoS doesn't initialize graphics mode
+<dd>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 (<tt>chmod +s</tt>) at XaoS executable.
+ note that I take care to disable all security holes caused by this
+ bit so I believe it is safe.
+<dt>Mouse doesn't work
+<dt>Screen is blank at higher resolutions
+<dd>Both this problems are probably caused by misconfiguration of
+SVGAlib. Please configure it in <tt>etc/vga/libvga.cong</tt> or
+<tt>/usr/local/lib/libvga.conf</tt>
+GPM can also cause problems. Try to kill it before starting XaoS.
+<dt>When I switch console I can't switch back
+<dd>This is another typical SVGAlib bug. Try to hold <tt>F</tt> key longer than <tt>alt</tt>.
+ 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.
+</dl>
+<p>
+SVGAlib driver was written by Jan Hubicka, 1997.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%win32
+
+<head>Win32 driver</head>
+
+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.
+<p>
+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.
+<p>
+Use <tt>-size WIDTHxHEIGHT</tt> command line option to change the default
+window size.
+<p>
+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.
+<p>
+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 <tt>doc/cmdopts.txt</tt>.
+<p>
+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.
+<p>
+Note that XaoS also supports the <a dX-window>DirectX</a> API.
+<p>
+Win32 driver was written by Jan Hubicka, Jan Olderdissen and Pavel Tzekov, 1999.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%dX-window
+
+<head>DirectX windowed driver</head>
+
+This is a driver 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.
+<p>
+The DirectX driver is an alternative to the windowed <a win32>win32 driver</a>.
+If you have DirectX installed, this driver is used by default. It has
+almost the same behaviour as the <a win32>win32 driver</a> so please read its
+documentation for more details. The only difference should be the display
+speed.
+<p>
+The driver supports only hicolor and truecolor modes. There is no support
+for 256 and 16 color modes because of palette collision problems. The win32
+driver will be used in these cases by default, so this should cause no
+problems.
+<p>
+If you are experiencing problems with this driver, you might want to
+use the <a win32>win32 driver</a> by default; to do this, use the <tt>-driver win32</tt>
+command line option.
+<p>
+DirectX driver was written by Jan Hubicka, Jan Olderdissen
+and Pavel Tzekov, 1999.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%dX-fullscreen
+
+<head>DirectX fullscreen driver</head>
+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.
+<p>
+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 <tt>=</tt> key
+(or by using the UI/Resize menu). If the selected mode is not supported,
+the driver will restore the previous setting.
+<p>
+Use the <tt>-mode WIDTHxHEIGHTxDEPTH</tt> (like <tt>-mode 640x480x16</tt>)
+command line option to change graphics mode.
+<p>
+If you want to start XaoS in DirectX, use the <tt>-driver dX-fullscreen</tt>
+option.
+<p>
+See the <a win32>Win32 driver</a> documentation for some more Windows
+releated information.
+<p>
+DirectX driver was written by Jan Hubicka, Jan Olderdissen
+and Pavel Tzekov, 1999.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%BeOS DirectWindow WindowScreen
+
+<head>BeOS support</head>
+
+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.
+<p>
+The first version of the BeOS driver was written by Jens Kilian and later
+extended by Jan Hubicka.
+<p>
+<head>Installation</head>
+<p>
+You can start the installation script to do everything for you. If you want
+something special, read this section.
+<p>
+In order for XaoS to work you need to keep the executable together with
+its data files (<tt>help</tt>, <tt>examples</tt>, <tt>catalogs</tt> and the <tt>tutorials</tt> directory)
+<p>
+When first started, XaoS registers two new mime types called
+<tt>image/x-xaos-position</tt> for XaoS Position Files and
+<tt>video/x-xaos-animation</tt> for XaoS Animation Files,
+registers icons for them and sets itself as default application.
+<p>
+<head>Available display drivers</head>
+<p>
+XaoS supports following drivers:
+<p>
+<dl>
+<dt>BeOS
+<dd>Standard windowed driver using application server
+<dt>DirectWindow
+<dd>Driver done using Game Kit's direct window class
+<dt>WindowScreen
+<dd>Fullscreen driver.
+</dl>
+<p>
+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.
+<p>
+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.
+<p>
+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 <tt>-driver WindowScreen</tt> command line option.
+<p>
+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.
+<p>
+<head>XaoS as translator</head>
+<p>
+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.
+<p>
+Note that <emph>translation can take a while</emph>. So be patient and
+wait for the result.
+<p>
+If the translator doesn't work, ensure that you have a link to the XaoS executable
+in <tt>/boot/beos/system/add-ons/Translators/</tt>.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%X11
+
+<head>X11 driver</head>
+This was the first driver done for XaoS. It supports many visuals, shared
+colormaps and MitSHM extension.
+<p>
+Bugs/limitations:
+<p>
+<dl>
+<dt>XaoS makes some X servers too busy
+<dd>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 <tt>-sync</tt>
+to avoid this problem. Note that <tt>-sync</tt> does <tt>not</tt> make all
+communication with X asynchronous; it just adds one additional XSync call.
+So the slowdown is not as large as you might expect.
+<dt>Does not work on all visuals
+<dd>This driver supports only 8bpp pseudocolor/grayscales, 15,16,24 and 32bpp truecolor, 1bpp and 8bpp staticolor visuals.
+<dt>Palette rotating does not work for 8bpp pseudocolor w/o private palette
+</dl>
+<p>
+X11 driver was written by Jan Hubicka and Thomas Marsh, 1997.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%DGA
+
+<head>DGA driver</head>
+This is the driver for DGA (Direct Graphics Architecture) extension used by
+XFree86 X servers. It is pretty new so it could be buggy.
+<p>
+Bugs/limitations:
+<p>
+<dl>
+<dt>In 8bpp mode, XaoS has problems with the palette with certain window managers
+<dd>I don't know why this happens. Just let me know what's wrong, or use another
+window manager.
+<dt>Banked modes are not supported.
+<dd>I don't have any card to test this with, so it doesn't work in the current version.
+</dl>
+<p>
+DGA driver was written by Jan Hubicka, 1999.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%tutorial
+
+<head>XaoS tutorial</head>
+
+This is a brief introduction to the basic XaoS features.
+
+<head>How to zoom</head>
+ 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</emph> 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</emph> (or <emph>left+right</emph> buttons) you may also
+ <emph>move the image</emph> using ``drag & drop'' if you missed an interesting
+ place. <emph>Unzooming</emph> is also possible by using the <emph>right button</emph>,
+ but it is much slower because optimizations are not so effective as for zooming.
+<p>
+ In case you think that the default <emph>speed</emph> is boring (it is quite slow, to
+ make XaoS smooth on a slow computer) you may change it by pressing <emph>arrow
+ up/down</emph>. But faster zooming is more expensive, so if the speed is too high
+ you will see little but funny colorful blinking rectangles.
+
+<head>Autopilot</head>
+
+ To make XaoS yet more impressive we made a special autopilot that
+ automatically drives into interesting boundaries of the set. So you can
+ press <tt>A</tt>, 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.
+<p>
+ 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.
+<p>
+<head>Various fractal formulae</head>
+
+ XaoS also supports formulae other than the Mandelbrot set. You may change
+ <emph>formula</emph> using the <emph>number keys</emph>
+ or <emph>SHIFT+letters</emph>.
+
+
+<p>
+ On keys <tt>1</tt> to <tt>5</tt> are <emph>Mandelbrot sets of various power</emph>. The ``normal''
+ Mandelbrot set is on key <tt>1</tt>.
+<p>
+ On key <tt>6</tt> is a fractal called <emph>Newton</emph>. It is Newton's famous formula for finding roots.
+<p>
+ On key <tt>7</tt> is the <emph>fourth ordered Newton</emph> fractal.
+<p>
+ On key <tt>8</tt> is a fractal called <emph>Barnsley</emph>.
+<p>
+ On key <tt>9</tt> is <emph>Barnsley's second</emph> fractal.
+<p>
+ On key <tt>0</tt> is <emph>Barnsley's third</emph> fractal.
+<p>
+ With keys <tt>SHIFT-A</tt> you can display a fractal called <emph>octo</emph>. It is a fractal that Thomas
+ discovered in fractint.
+<p>
+ With keys <tt>SHIFT-B</tt> you can display a fractal called <emph>Phoenix</emph>. It is a very nice and quite famous fractal.
+<p>
+ With keys <tt>SHIFT-C</tt> you can display a fractal called <emph>Magnet</emph>. This fractal has quite a complex formula so it is
+ a bit slow.
+<p>
+ With keys <tt>SHIFT-D</tt> you can display the <emph>Magnet2</emph> fractal.
+<p>
+ The rest of the built-in fractals are accessible through an other menu, but
+ you can still use the hotkeys.
+<p>
+ On <tt>SHIFT-E</tt> is a fractal called <emph>Triceratops</emph> found by Arpad.
+<p>
+ On <tt>SHIFT-F</tt> is a fractal called <emph>Catseye</emph> found by Arpad.
+ This is more interesting if you change the bailout value.
+<p>
+ On <tt>SHIFT-G</tt> is a fractal called <emph>Mandelbar</emph>. It was in
+ Gnofract4d, and they found it at:
+ http://mathworld.wolfram.com/MandelbarSet.html
+<p>
+ On <tt>SHIFT-H</tt> is the <emph>Lambda</emph> fractal.
+<p>
+ On <tt>SHIFT-I</tt> and <tt>SHIFT-J</tt> are the <emph>Manowar</emph>
+ and <emph>Spider</emph> 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
+<p>
+ The next 3 fractals are famous classic fractals.
+<p>
+ On <tt>SHIFT-K</tt> is the <emph>Sierpinski</emph> Gasket.
+ You can change its shape by selecting another Julia seed.
+ (This is for technical reasons.)
+<p>
+ On <tt>SHIFT-L</tt> is the <emph>Sierpinski Carpet.</emph>
+ It's shape can also be changed by selecting another Julia seed.
+<p>
+ On <tt>SHIFT-M</tt> is the <emph>Koch Snowflake.</emph>
+<p>
+
+
+<head>Out-coloring modes</head>
+
+ 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</emph> or by pressing key <tt>C</tt>
+ To see more about coloring modes, try the tutorial on <tutor incolor.xaf>Incoloring modes</tutor> from the XaoS features overview.
+<p>
+ Those cryptic names for coloring modes are mathematical formulae, where <emph>iter</emph> means number
+ of iterations, <emph>real</emph> means real coordinate of last orbit, and <emph>imag</emph> means imaginary
+ coordinate of last orbit.
+<p>
+<head>In-coloring mode</head>
+
+ 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</emph> or by pressing <tt>F</tt>.
+ <p>
+ You might also want to see the tutorial on
+ <tutor outcolor.xaf>Out-coloring modes</tutor> from the XaoS features overview.
+
+<head>Planes</head>
+
+ 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</emph>, or by pressing <tt>I</tt>.
+<p>
+ Like the coloring modes, planes have cryptic names. You guessed it, they're
+ mathematical formulae. Here <tt>mu</tt> means coordinates in the normal
+ complex plane. If you have coordinates in <tt>1/mu</tt> 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.
+ <p>
+<dl>
+ <dt>mu
+ <dd>normal mode.
+
+ <dt>1/mu
+ <dd>Inversion: infinity goes to 0 and 0 goes to infinity.
+
+ <dt>1/(mu+0.25)
+ <dd>Similar to inversion, but moves the center outside of the
+ Mandelbrot set so that it looks parabolic.
+
+ <dt>lambda
+ <dd>Lambda plane.
+
+ <dt>1/lambda
+ <dd>Inversion of lambda plane.
+
+ <dt>1/lambda-1
+ <dd>Inversion with moved center.
+
+ <dt>1/(mu-1.40115)
+ <dd>A very interesting mode for the Mandelbrot set. It makes small things
+ big, so you can browse the set's details easily.
+</dl>
+<p>
+
+<head>Mandelbrot/Julia switching</head>
+
+ 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
+ <tutor julia.xaf>Julia set</tutor> from the Introduction to fractals.
+<p>
+ In the Mandelbrot mode, you can get a corresponding Julia by moving the mouse
+ to an interesting point and pressing <tt>M</tt>. To get back press <tt>M</tt>
+ again. Some fractals (Barnsley and phoenix) are already in their Julia
+ versions, because the Mandelbrot ones are boring. But by pressing <tt>M</tt>
+ in such fractal you should get the Mandelbrot version, and by choosing another
+ point as the base point and pressing <tt>M</tt> 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.
+<p>
+
+<head>Fast Julia preview mode</head>
+
+ Fast Julia mode is a quick way to find a point to use as a base for the Julia
+ set.. Just press <tt>J</tt> 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.
+
+<head>Palette</head>
+
+ If you think that the default XaoS colors are ugly or you are just
+ bored by them you can change it by pressing <tt>P</tt>. XaoS will
+ automatically generate random palettes. Many of them look ugly, so
+ press <tt>P</tt> again to get another one until you find one you like.
+<p>
+<head>Filters</head>
+
+ Many interesting effects are done by post-calculation <a filter>filters</a>.
+ 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 <tt>filter menu</tt> or press <tt>E</tt>.
+<p>
+<head>Palette cycling</head>
+
+ This is a very old trick that makes the Mandelbrot set a little flashier. You
+ may enable or disable it using <tt>Y</tt>. In the truecolor modes you need
+ to enable the <a palettef>palette emulator filter</a> first. This is done
+ via the <tt>E</tt> key, or from the filter menu.
+<p>
+<head>Changing number of iterations</head>
+
+ 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:
+ <p>
+ Press and hold <tt>arrow right</tt> and wait until iterations are high enough.
+ This may slow down calculation much. To reduce number of iterations
+ press <tt>arrow left</tt>.
+
+<head>Changing resolution</head>
+
+ 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 <tt>.gif</tt> images, you may change the resolution. This
+ can be done by pressing <tt>=</tt> in the full screen drivers, or simply
+ by resizing the XaoS window.
+
+<head>Changing driver</head>
+
+ 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.
+ <p>
+ 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..
+
+<head>Other features</head>
+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</emph> from the <emph>help menu</emph>,
+to have an idea what XaoS can do.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%menus
+<main><head>Menus, functions and command line parameters</head></main>
+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.
+<menuitems><center>
+<p><submenu><a root>Root menu</a>
+<p><submenu><a animroot>Animation root menu</a>
+<p><submenu><a plc>Replay only commands</a>
+%end
+<p><submenu><a linemenu>Line drawing functions</a>
+<p><submenu><a animf>Animation functions</a>
+<p><submenu><a time>Timing functions</a>
+<p><submenu><a file>File</a>
+<p><submenu><a edit>Edit</a>
+<p><submenu><a fractal>Fractal</a>
+<p><submenu><a calc>Calculation</a>
+<p><submenu><a mfilter>Filters</a>
+<p><submenu><a ui>UI</a>
+<p><submenu><a misc>Misc</a>
+<p><submenu><a helpmenu>Help</a>
+<p><submenu><a xtextpos>Horizontal text position</a>
+<p><submenu><a ytextpos>Vertical text position</a>
+<p><submenu><a mformula>Formulae</a>
+<p><submenu><a palettemenu>Palette</a>
+</center></menuitems>
+<node root, , animroot, menus>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%root
+
+<notex>
+<menuhead><head>Root menu</head></menuhead>
+This menu is usually displayed at the top of the screen or window. It contains all
+currently available submenus. During animation another menu is displayed--the
+<a animroot>Animation root menu</a>.
+<menuitems><center>
+<p><submenu><a file>File</a>
+<p><submenu><a fractal>Fractal</a>
+<p><submenu><a calc>Calculation</a>
+<p><submenu><a mfilter>Filters</a>
+<p><submenu><a ui>UI</a>
+<p><submenu><a misc>Misc</a>
+<p><submenu><a helpmenu>Help</a>
+</center></menuitems>
+</notex>
+<node animroot, root, plc, menus>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%animroot
+
+<menuhead><head>Animation root menu</head></menuhead>
+This menu is displayed at the top of the screen when animation replay is active.
+<menuitems><center>
+<p><submenu><a file>File</a>
+<p><a stopreplay>Stop replay</a>
+<p><submenu><a helpmenu>Help</a>
+<p><submenu><a ui>UI</a>
+</center></menuitems>
+<node stopreplay, , , animroot>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%stopreplay
+<head>Stop replay</head>
+Terminate animation replay.
+<p>
+<emph>Available as</emph>: menu item
+
+
+
+<node plc, animroot, linemenu, menus>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%plc
+<menuhead><head>Replay only commands</head></menuhead>
+Some commands, such as timing primitives or animation functions, are available
+only in animation files.
+<menuitems><center>
+<p><submenu><a linemenu>Line drawing functions</a>
+<p><submenu><a animf>Animation functions</a>
+<p><submenu><a time>Timing functions</a>
+<p><a load>Include file</a>
+</center></menuitems>
+<node load, , , plc>
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%load
+<head>Include file</head>
+<p><emph>Syntax</emph>:(load file)
+<p>
+This function lets you include another file in your script. It works similarly
+to <tt>#include</tt> in C or <tt>load</tt> in Scheme.
+The file is searched for in the same directory as the current source file.
+<p>
+<emph>Available as</emph>: command
+
+<node linemenu, plc, animf, menus>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%linemenu
+
+<menuhead><head>Line drawing functions</head></menuhead>
+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 ``<tutor intro.xaf>Introduction to fractals</tutor>''
+for examples of this feature.
+<p>
+Lines can be drawn in <emph>screen</emph> coordinates, where 0,0
+is the top left corner and 1,1 is bottom right, <emph>scaled</emph>
+coordinates, which are similar, but scaled to keep 0,0--1,1 rectangular,
+or <emph>Fractal</emph> coordinates, to draw a line at an exact position
+on the screen.
+<p>
+The color of the line should be specified by the <a color><tt>color</tt></a> 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 <tt>linekey</tt>.
+Commands for changing lines operate on the line with the current key.
+(Lines drawn in sequence have consecutive numbers.)
+<p>
+For example:
+<p><tt>
+(color 'red)<br>
+(line 'scaled 0.3 0.5 0.7 0.5)<br>
+(line 'scaled 0.3 0.5 0.7 0.5)<br>
+(line 'scaled 0.3 0.5 0.3 0.5)<br>
+(line 'scaled 0.7 0.5 0.7 0.5)<br>
+(linekey 0)<br>
+(morphline 'scaled 0.3 0.3 0.7 0.3)<br>
+(morphline 'scaled 0.3 0.7 0.7 0.7)<br>
+(morphline 'scaled 0.3 0.3 0.3 0.7)<br>
+(morphline 'scaled 0.7 0.3 0.7 0.7)<br>
+(usleep 1000000)<br>
+</tt><p>
+Creates line morphing to rectangle.
+<notex>
+<menuitems><center>
+<p><a line>Draw line</a>
+<p><a morphline>Morph line</a>
+<p><a morphlastline>Morph last line</a>
+<p><a linekey>Set line key</a>
+<p><a clearline>Clear line</a>
+<p><a clearlines>Clear all lines</a>
+</center></menuitems>
+</notex>
+<notex>
+<node line, , morphline, linemenu>
+</notex>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%line
+
+
+<notex>
+<head>Draw line</head>
+</notex>
+<p><emph>Syntax</emph>:(line keyword complex complex)
+<p>
+Draw line between two points.
+<tt>keyword</tt> specifies type of coordinates and should be one of the
+following: <tt>`fractal</tt>, <tt>`screen</tt> or <tt>`scaled</tt>.
+This function also increases the line key.
+<p>
+<emph>Available as</emph>: command
+
+<notex>
+<node morphline, line, morphlastline, linemenu>
+</notex>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%morphline
+
+
+<notex>
+<head>Morph line</head>
+</notex>
+<p><emph>Syntax</emph>:(morphline keyword complex complex)
+<p>
+Morph current line to given coordinates.
+<tt>keyword</tt> specifies type of coordinates and should be one of the
+following: <tt>`fractal</tt>, <tt>`screen</tt> or <tt>`scaled</tt>.
+The line will start moving at the next <a time>timing command</a>, and reach the
+final position before the end of it.
+This function also increases the line key.
+<p>
+<emph>Available as</emph>: command
+
+<notex>
+<node morphlastline, morphline, linekey, linemenu>
+</notex>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%morphlastline
+
+
+<notex>
+<head>Morph last line</head>
+</notex>
+<p><emph>Syntax</emph>:(morphlastline keyword complex complex)
+<p>
+This function has the same functionality as <a morphline>morphline</a>, 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 <a linekey>linekey</a> back.
+<p>
+<emph>Available as</emph>: command
+
+<notex>
+<node linekey, morphlastline, clearline, linemenu>
+</notex>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%linekey
+<notex>
+<head>Set line key</head>
+</notex>
+<p><emph>Syntax</emph>:(linekey integer)
+<p>
+Set current line key.
+<p>
+<emph>Available as</emph>: command
+
+<notex>
+<node clearline, linekey, clearlines, linemenu>
+</notex>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%clearline
+<notex>
+<head>Clear line</head>
+</notex>
+<p><emph>Syntax</emph>:(clearline)
+<p>
+Clear current line. This function also increases the line key.
+<p>
+<emph>Available as</emph>: command
+
+<notex>
+<node clearlines, clearline, , linemenu>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%clearlines
+<head>Clear all lines</head>
+</notex>
+<p><emph>Syntax</emph>:(clearlines)
+<p>
+Clear all displayed lines. Lines can also be cleared using the
+<tt>clearscreen</tt> or <tt>display</tt> commands available from the <a misc>Misc menu</a>.
+<p>
+<emph>Available as</emph>: command
+
+<node animf, linemenu, time, menus>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%animf
+
+<menuhead><head>Animation functions</head></menuhead>
+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
+<a time>timing function</a>.
+For example:
+<p><tt>
+(view 0 0 1 1)<br>
+(morphview 0 0 2 2)<br>
+(usleep 5000000)
+</tt><p>
+Will do a 5 second long unzooming animation.
+<menuitems><center>
+<p><a animateview>Animate view</a>
+<p><a smoothmorph>Smooth morphing</a>
+<p><a morphview>Morph view</a>
+<p><a morphjulia>Morph julia</a>
+<p><a moveview>Move view</a>
+<p><a morphangle>Morph angle</a>
+<p><a zoom>Zooming functions</a>
+</center></menuitems>
+<node animateview, , smoothmorph, animf>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%animateview
+<head>Animate view</head>
+<p><emph>Syntax</emph>:(animateview float float float float)
+<p>
+This function is almost identical to function <a uiview><tt>view</tt></a>.
+It expects that the view will be changed only slightly, so recalculation is done
+with <tt>ANIMATE</tt> priority. This means that dynamic resolution is used by
+default.
+<p>
+Viewport is selected by the center and two radiuses (real and imaginary). See
+<a uiview><tt>view</tt></a> for more information.
+<p>
+<emph>Available as</emph>: command
+
+<node smoothmorph, animateview, morphview, animf>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%smoothmorph
+<head>Smooth Morphing</head>
+<p><emph>Syntax</emph>:(morphview keystring starttime endtime)
+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.
+<p>
+The keystring is used to select what morphing you want to control. It is one of
+the following:
+<dl>
+<dt>'view
+<dd>control <a morphview>morphview</a>
+<dt>'angle
+<dd>control <a morphangle>morphangle</a>
+<dt>'julia
+<dd>control <a morphjulia>morphjulia</a>
+<dt>'line
+<dd>control <a morphline>morphline</a>
+</dl>
+<node morphview, smoothmorph, morphjulia, animf>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%morphview
+<head>Morph view</head>
+<p><emph>Syntax</emph>:(morphview float float float float)
+For the time selected by the next <a usleep><tt>usleep</tt></a> or other timing function, the viewpoint is smoothly morphed from
+the current one to that selected by <tt>morphview</tt>.
+<p>
+Viewport is selected by the center and two radiuses (real and imaginary). See
+<a uiview><tt>view</tt></a> for more information.
+<p>
+This function can easily be used for creating zooming/unzooming animations using position files.
+This is an example position file generated by XaoS:
+<p><tt>
+(initstate)<br>
+(defaultpalette 0)<br>
+(formula 'mandel)<br>
+(view -1.64128273713 -5.50393226816E-05 9.69332308848E-08
+ 9.69332308834E-08)<br>
+</tt><p>
+By replacing the <tt>view</tt> command with <tt>morphview</tt> and
+adding <tt>usleep</tt> you can create a zooming animation:
+<p><tt>
+(initstate)<br>
+(defaultpalette 0)<br>
+(formula 'mandel)<br>
+(morphview -1.64128273713 -5.50393226816E-05 9.69332308848E-08
+ 9.69332308834E-08)<br>
+(usleep 10000000)
+</tt><p>
+
+
+<emph>Available as</emph>: command
+
+<node morphjulia, morphview, moveview, animf>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%morphjulia
+<head>Morph Julia</head>
+<p><emph>Syntax</emph>:(morphjulia complex)
+For the time selected by the next <a usleep><tt>usleep</tt></a> or other timing function, the Julia seed
+is smoothly interpolated from the current one to that selected by <tt>morphjulia</tt>. By default this will
+cause recalculation of the whole screen.
+To avoid this, use <a fastjulia>fast Julia mode</a>.
+<p>
+A simple animation morphing Julia seed in the X axis:
+<p><tt>
+(initstate)<br>
+(fastjulia #t)<br>
+(juliaseed -2 0)<br>
+(morphjulia 2 0)<br>
+(usleep 2000000)<br>
+</tt><p>
+<p>
+<emph>Available as</emph>: command
+
+<node moveview, morphjulia, morphangle, animf>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%moveview
+<head>Move view</head>
+<p><emph>Syntax</emph>:(moveview complex)
+Smoothly move the image center to another position.
+<p>
+<emph>Available as</emph>: command
+
+<node morphangle, moveview, zoom, animf>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%morphangle
+<head>Morph angle</head>
+<p><emph>Syntax</emph>:(morphangle float)
+Smoothly rotate the image to another angle. By default rotation causes
+recalculation of the whole screen. To avoid this you need to enable
+<a rotate>fast rotate mode</a>. Don't forget to disable it later, since
+it slows down other animations.
+<p>A simple ``rotozooming'' animation:
+<p><tt>
+(initstate)<br>
+(fastrotate #t)<br>
+(morphview -1.64128273713 -5.50393226816E-05 9.69332308848E-08<br>
+9.69332308834E-08)<br>
+(morphangle 300)<br>
+(usleep 10000000)<br>
+(wait)<br>
+(fastrotate #f)<br>
+</tt><p>
+<emph>Available as</emph>: command
+
+<node zoom, morphangle, , animf>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%zoom zoom unzoom stop
+<head>Zooming functions</head>
+<p>
+The functions for zooming/unzooming were created mainly for recording
+animations. In manually created animation files, it is easier to use
+<a morphview><tt>morphview</tt></a>.
+<p>
+<p><emph>Syntax</emph>:(zoomcenter complex)
+This function sets the center to zoom in on. The center is given as a position
+in fractal coordinates.
+<p>
+<emph>Available as</emph>: command
+<p><emph>Syntax</emph>:(zoom)
+Start zooming to the area specified by <tt>zoomcenter</tt>.
+<p>
+The speed of zooming should be controlled by the function <a speed><tt>speed</tt></a>
+or in a more exact way by <tt>maxstep</tt> and <tt>speedup</tt>.
+<p>
+<p><emph>Syntax</emph>:(unzoom)
+<p>
+Start unzooming from the area specified by <tt>zoomcenter</tt>.
+<p>
+<emph>Available as</emph>: command
+<p><emph>Syntax</emph>:(stop)
+Stop zooming or unzooming.
+<p>
+<emph>Available as</emph>: command
+
+<node time, animf, file, menus>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%time
+
+<menuhead><head>Timing functions</head></menuhead>
+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.
+<menuitems><center>
+<p><a usleep>Usleep</a>
+<p><a textsleep>Wait for text</a>
+<p><a wait>Wait for complete image</a>
+</center></menuitems>
+<node usleep, , textsleep, time>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%usleep
+<head>Usleep</head>
+<p><emph>Syntax</emph>:(usleep integer)
+<p>
+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.
+<p>
+<emph>Available as</emph>: command
+
+<node textsleep, usleep, wait, time>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%textsleep
+<head>Wait for text</head>
+<p><emph>Syntax</emph>:(textsleep)
+<p>This function's behavior is very similar to <a usleep><tt>usleep</tt></a>,
+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
+<a letterspersec><tt>letterspersec</tt></a>. This value can be changed during
+replay with the arrow keys.
+<p>
+<emph>Available as</emph>: command
+
+<node wait, textsleep, , time>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%wait
+<head>Wait for complete image</head>
+<p><emph>Syntax</emph>:(wait)
+<p>
+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
+<a blur>motion blur</a>.
+<p>
+This function deadlocks if used with <a animf>animation functions</a>; don't
+do that.
+<p>
+<emph>Available as</emph>: command
+
+<node file, time, edit, menus>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%file
+
+<menuhead><head>File</head></menuhead>
+<menuitems><center>
+<p><a loadpos>Load</a>
+<p><a savepos>Save</a>
+<p><a record>Record</a>
+<p><a play>Replay</a>
+<p><a saveimg>Save image</a>
+<p><a loadexample>Load random example</a>
+<p><a savecfg>Save configuration</a>
+<p><submenu><a quit>Quit</a>
+</center></menuitems>
+<node loadpos, , savepos, file>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%loadpos
+<head>Load XaoS position file</head>
+<p>
+Load a XaoS position file (<tt>*.xpf</tt>).
+See the <a format>format description</a> for more information.
+<p>
+<emph>Available as</emph>: menu item, command line option
+
+<node savepos, loadpos, record, file>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%savepos
+<head>Save XaoS position file</head>
+<p><emph>Syntax</emph>:(savepos file)
+<p>
+Save current state to a XaoS position file (<tt>*.xpf</tt>). This file is
+human-readable, and can easily be improved by hand after saving, or used as
+a base for animations.
+See the <a format>format description</a> for more information.
+<p>
+<emph>Available as</emph>: menu item, command line option, command
+
+<node record, savepos, play, file>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%record
+<head>Record animation</head>
+<p><emph>Syntax</emph>:(record bool [ file ])
+<p>e
+Toggle recording to a XaoS animation file (<tt>*.xaf</tt>). This file is
+human-readable, and can easily be improved by hand after recording.
+See the <a format>format description</a> for more information.
+<p>
+From the scripting language, <tt>(record #t)</tt> enables recording, and
+<tt>(record #f)</tt> disables it.
+<p>
+<emph>Available as</emph>: menu item, command line option, command
+
+<node play, record, saveimg, file>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%play
+<head>Replay animation</head>
+<p>
+Replay a XaoS animation file (<tt>.xaf</tt>).
+<p>
+<emph>Available as</emph>: menu item, command line option
+
+<node saveimg, play, loadexample, file>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%saveimg
+<head>Save image</head>
+<p><emph>Syntax</emph>:(saveimg file)
+<p>
+Save current state to an image file. This file is in <tt>.png</tt> (portable
+network graphics) format, which can be read by many applications varying from
+graphics programs all the way to Web browsers.
+<p>
+This function needs an external library called <tt>libpng</tt>. If the library
+wasn't available during compilation, this function is unavailable too.
+Please see <tt>INSTALL</tt> for more information about obtaining libpng
+and recompiling XaoS.
+<p>
+<emph>Available as</emph>: menu item, command line option, command
+
+<node loadexample, saveimg, savecfg, file>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%loadexample
+<head>Load random example</head>
+<p><emph>Syntax</emph>:(loadexample)
+<p>
+Choose random <tt>.xpf</tt> file from the <tt>examples</tt> directory and
+load it.
+You might use it as the starting point for next exploration.
+<p>
+<emph>Available as</emph>: menu item, command line option, command
+
+<node savecfg, loadexample, quit, file>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%savecfg
+<head>Save configuration</head>
+<p><emph>Syntax</emph>:(savecfg)
+<p>
+Save current configuration to <tt>~/.xaosrc</tt> (under Unix) or <tt>xaos.cfg</tt>
+(under DOS and Windows). XaoS automatically reloads the configuration from this
+file when it starts.
+<p>
+<emph>Available as</emph>: menu item, command line option, command
+
+<node quit, savecfg, ,file>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%quit quitmenu noquit
+<head>Quit</head>
+<p><emph>Syntax</emph>:(quit)
+<p>
+Quit XaoS.
+<p>
+<emph>Available as</emph>: menu item, command line option, command
+
+<node edit, file, fractal, menus>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%edit
+<menuhead><head>Edit</head></menuhead>
+A fairly ordinary Edit menu.
+<menuitems><center>
+<p><a undo>Undo</a>
+<p><a redo>Redo</a>
+<p><a copy>Copy</a>
+<p><a paste>Paste</a>
+</center></menuitems>
+<node undo, , redo, edit>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%undo
+<head>Undo</head>
+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.
+<p>
+<emph>Available as</emph>: menu item
+<node redo, undo, copy, edit>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%redo
+<head>Redo</head>
+Redo last undone operation. See <a undo>undo</a>.
+<p>
+<emph>Available as</emph>: menu item
+<node copy, redo, paste, edit>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%copy
+<head>Copy</head>
+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).
+<p>
+<emph>Available as</emph>: menu item
+<node paste, copy, , edit>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%paste
+<head>Paste</head>
+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).
+<p>
+<emph>Available as</emph>: menu item
+
+<node fractal, edit, calc, menus>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%fractal
+<menuhead><head>Fractal</head></menuhead>
+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.
+
+<menuitems><center>
+<p><a formula>Formula</a>
+<p><submenu><a mformula>formulae</a>
+<p><a incoloring>Incoloring mode</a>
+<p><a outcoloring>Outcoloring mode</a>
+<p><a plane>Plane</a>
+<p><submenu><a palettemenu>Palette</a>
+<p><a uimandelbrot>Mandelbrot mode</a>
+<p><a uiperturbation>Perturbation</a>
+<p><a uiview>View</a>
+<p><a initstate>Reset to defaults</a>
+<p><a tcolor>True-color coloring modes</a>
+</center></menuitems>
+<node formula, , uimandelbrot, fractal>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%formula
+<head>Formula</head>
+<p><emph>Syntax</emph>:(formula keyword)
+<p>
+Set the current fractal formula. <tt>keyword</tt> should be one of the
+following:
+<dl>
+<dt>'mandel
+<dd>Standard <a mandel>Mandelbrot set</a>.
+<dt>'mandel3
+<dd><a mandel3>Mandelbrot set, power 3</a>.
+<dt>'mandel4
+<dd>Mandelbrot set, power 4.
+<dt>'mandel5
+<dd>Mandelbrot set, power 5.
+<dt>'mandel6
+<dd>Mandelbrot set, power 6.
+<dt>'newton
+<dd><a newton>Newton's approximation method</a>.
+<dt>'barnsley
+<dd><a barnsley>First Barnsley's formula</a>.
+<dt>'octo
+<dd><a octal>Fractint's octo</a>.
+<dt>'phoenix
+<dd><a phoenix>Phoenix</a>.
+<dt>'magnet
+<dd><a magnet>Magnet</a>.
+</dl>
+<p>
+<emph>Available as</emph>: command
+
+<node uimandelbrot, formula, uiperturbation, fractal>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%uimandelbrot julia juliaseed
+<head>Mandelbrot/Julia mode</head>
+<p>
+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 <tutor julia.xaf>Julia set</tutor>.
+<p>
+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.
+<p>
+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 <tt>M</tt> key instead of
+using the menu, the current mouse position is used.
+<p>
+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 <a fastjulia>Fast Julia mode</a>.
+<p>
+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.
+<p>
+<emph>Available as</emph>: menu item
+<p><emph>Syntax</emph>:(julia bool)
+<p>
+This function is used to enable/disable julia mode in animation files.
+<p>
+<emph>Available as</emph>: command line option, command
+<p><emph>Syntax</emph>:(juliaseed complex)
+<p>
+Select the current julia seed.
+<p>
+<emph>Available as</emph>: command line option, command
+
+<node uiperturbation, uimandelbrot, uiview, fractal>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%uiperturbation perturbation
+<head>Perturbation</head>
+<p>
+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.
+<p>
+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.
+<p>
+It can be used to specify a complex number representing a point on the screen.
+If you hit the <tt>B</tt> key instead of using the menu, the current mouse
+position is used. This too is a toggle, so <tt>B</tt> again will disable
+perturbation by setting it to zero.
+<p>
+This function only has an effect for certain formulae (like the
+<a mandel>Mandelbrot set</a>) and only then in <a uimandelbrot>Mandelbrot mode</a>.
+<p>
+<emph>Available as</emph>: menu item
+<p><emph>Syntax</emph>:(perturbation complex)
+<p>
+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.
+<p>
+<emph>Available as</emph>: command line option, command
+
+<node bailout, maxiter, fastjulia, calc>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%bailout bailout
+<head>Bailout</head>
+<p>
+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.
+<p>
+For the <a mandel>Mandelbrot set</a>
+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.
+<p>
+Other fractal types may use other bailout values. The default
+is 4 for each types.
+<p>
+<emph>Available as</emph>: menu item, command line option, command
+<p><emph>Syntax</emph>:(bailout float)
+<p>
+
+<node uiview, uiperturbation, initstate, fractal>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%uiview view angle
+<head>View</head>
+<p>
+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.
+<p>
+In the dialog you will be asked for the <emph>center</emph>, <emph>radius</emph>
+and <emph>angle</emph> of the image.
+<p>
+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.
+<p>
+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>, <math>y1</math>, <math>x2</math>, <math>y2</math>.
+To set the same viewpoint in XaoS, set the real portion of the center to
+<math>(x1+x2)/2</math>, the imaginary part of center to <math>(y1+y2)/2</math>, and
+the radius to the greater of <math>x2-x1</math> and <math>y2-y1</math>.
+<p>
+Other programs use a zoom factor instead of a radius. For these, you can set the
+radius to <math>2/zoom</math>.
+<p>
+<emph>Available as</emph>: menu item
+<p><emph>Syntax</emph>:(view float float float float)
+<p>
+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
+<tt>angle</tt>), 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.
+<p>
+<emph>Available as</emph>: command line option, command
+<p><emph>Syntax</emph>:(angle float)
+<p>
+Set the rotation angle in degrees. By default this causes recalculation of the
+screen. You can enable the <a rotate>fast rotation mode</a>, which lets you
+rotate the screen without recalculation; but it slows down other things, so
+don't forget to disable it later.
+<p>
+<emph>Available as</emph>: command line option, command
+
+<node initstate, uiview, plane, fractal>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%initstate
+<head>Reset to defaults</head>
+<p><emph>Syntax</emph>:(initstate)
+<p>
+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.
+<p>
+<emph>Available as</emph>: menu item, command line option, command
+
+<node plane, initstate, incoloring, fractal>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%plane mplane plane0 plane1 plane2 plane3 plane4 plane5 plane6 plane7 plane8 plane9 plane10
+<head>Plane</head>
+<p><emph>Syntax</emph>:(plane integer)
+<p>
+All fractals displayed by XaoS are functions with a complex parameter.
+They can be be displayed in the normal complex plane where the <tt>x</tt>
+coordinate is the real part of the number and the <tt>y</tt> is imaginary;
+but they can also be displayed differently:
+<dl>
+<dt><math>mu</math>
+<dd>Normal complex plane (default)
+<dt><math>1/mu</math>
+ <dd>Inversion--infinity is at 0 and
+ 0 is at infinity.
+<dt><math>1/(mu+0.25)</math>
+ <dd>Similar to inversion, but moves
+ the center outside the Mandelbrot set,
+ so it looks parabolic.
+<dt><math>lambda plane</math>, <math>1/lambda</math>, <math>1/lambda-1</math>
+<dd>Lambda plane and its inversion, and with a different center.
+<dt><math>1/(mu-1.40115)</math>
+ <dd>A very interesting mode for the
+ Mandelbrot set, this makes small
+ things large, for easier browsing
+ of the set's details.
+</dl>
+The <tutor plane.xaf>tutorial about planes</tutor> has some examples.
+<p>
+
+<p>
+In the scripting language, the planes are numbered as follows:
+<p>
+<dl>
+<dt>0
+<dd><math>mu</math>
+<dt>1
+<dd><math>1/mu</math>
+<dt>2
+<dd><math>1/(mu+0.25)</math>
+<dt>3
+<dd><math>lambda</math>
+<dt>4
+<dd><math>1/lambda</math>
+<dt>5
+<dd><math>1/(lambda-1)</math>
+<dt>6
+<dd><math>1/(mu-1.40115)</math>
+</dl>
+<p>
+<emph>Available as</emph>: command line option, command
+
+<node incoloring, plane, outcoloring, fractal>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%incoloring mincoloring in1 in2 in3 in4 in5 in6 in7 in8 in9 in10 in0
+<head>Inside coloring mode</head>
+<p><emph>Syntax</emph>:(incoloring integer)
+<p>
+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.
+<p>
+The <tutor incolor.xaf>tutorial on incoloring</tutor> has more information and
+examples.
+<p>
+XaoS has many different ways to show that value. The cryptic names of the modes
+are mathematical formulae, where <emph>real</emph> means the real part of the
+latest orbit, and <emph>imag</emph> means the imaginary part. <emph>zmag</emph>
+uses the magnitude of the value. The <emph>Decomposition-like</emph> method uses
+the angle of the orbit. Also, <a tcolor>truecolor</a> 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:
+<p>
+<dl>
+<dt>0
+<dd><math>0</math> (default)
+<dt>1
+<dd><math>zmag</math>
+<dt>2
+<dd>Decomposition-like
+<dt>3
+<dd><math>real/imag</math>
+<dt>4
+<dd><math>abs(abs(c)-abs(r))</math>
+<dt>5
+<dd><math>cos(mag)</math>
+<dt>6
+<dd><math>mag*cos(real^2)</math>
+<dt>7
+<dd><math>sin(real^2-imag^2)</math>
+<dt>8
+<dd><math>atan(real*imag*creal*cimag)</math>
+<dt>9
+<dd>squares
+<dt>10
+<dd>Truecolor. To set exact parameters for truecolor coloring use the
+<a tcolor><tt>tcolor</tt></a> command.
+</dl>
+<p>
+<emph>Available as</emph>: command line option, command
+
+<node outcoloring, incoloring, tcolor, fractal>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%outcoloring moutcoloring out1 out2 out3 out4 out5 out6 out7 out8 out9 out10 out0
+<head>Outside coloring mode</head>
+<p><emph>Syntax</emph>:(outcoloring integer)
+<p>
+Outcoloring modes are similar to <a incoloring>incoloring modes</a>, 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.
+<p>
+The <tutor outcolor.xaf>tutorial on outcoloring</tutor> has more information and
+examples.
+<p>
+The cryptic names of the modes are mathematical formulae, where <emph>iter</emph>
+means the number of iterations required for the value to become recognisably divergent,
+<emph>real</emph> means the real part of the latest orbit, and <emph>imag</emph>
+means the imaginary part. <emph>binary decomposition</emph> uses a different color
+when the imaginary part of the orbit is lower than zero, and <emph>smooth</emph>
+attempts to remove stripes and discontinuities. Also, <a tcolor>truecolor</a> 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).
+<p>
+In the scripting language, the outcoloring mode is specified by one of the following
+integers:
+<p>
+<dl>
+<dt>0
+<dd><math>iter</math> (default)
+<dt>1
+<dd><math>iter+real</math>
+<dt>2
+<dd><math>iter+imag</math>
+<dt>3
+<dd><math>iter+real/imag</math>
+<dt>4
+<dd><math>iter+real+imag+real/imag</math>
+<dt>5
+<dd>binary decomposition
+<dt>6
+<dd>biomorphs
+<dt>7
+<dd>potential
+<dt>8
+<dd>color decomposition
+<dt>9
+<dd>smooth
+<dt>10
+<dd>True-color outcoloring mode. To set exact parameters for truecolor coloring use <a tcolor><tt>outtcoloring</tt></a>.
+</dl>
+<p>
+<emph>Available as</emph>: command line option, command
+
+<node tcolor, outcoloring, , fractal>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%tcolor intcoloring outtcoloring tincoloring toucoloring int0 int1 int2 int3 int4 int5 int6 int7 int8 int9 int10 int11 outt0 outt1 outt2 outt3 outt4 outt5 outt6 outt7 outt8 outt9 outt10 outt11
+<head>Truecolor coloring mode</head>
+<p><emph>Syntax</emph>:(intcoloring integer)
+<p><emph>Syntax</emph>:(outtcoloring integer)
+<p>
+Truecolor coloring modes are similar to <a incoloring>incolor</a> and
+<a outcoloring>outcolor</a> 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
+<a palettef>palette emulator filter</a> first to see anything, amd the quality
+won't be so good, as far fewer colors are available per parameter.
+<p>
+The <tutor truecol.xaf>tutorial on truecolor coloring modes</tutor> has more
+information and examples.
+<p>
+The cryptic names of the modes are always three mathematical formulae (one for
+each color component), where <emph>real</emph> means the real part of the latest
+orbit, and <emph>imag</emph> means the imaginary part.
+<p>
+To enable inside/outside truecolor coloring mode in the scripting language,
+set <tt>incoloring</tt>/<tt>outcoloring</tt> value to 10 (truecolor coloring
+mode) before (or after) calling <tt>intcoloring</tt> or <tt>outtcoloring</tt>.
+<p>
+In the scripting language, the coloring mode is specified by one of the following
+integers:
+<p>
+<dl>
+<dt>0
+<dd>black
+<dt>1
+<dd><math>re*im</math> <math>sin(re^2)</math> angle
+<dt>2
+<dd><math>sin(re)</math> <math>sin(im)</math> <math>sin(square)</math>
+<dt>3
+<dd>hsv
+<dt>4
+<dd>hsv2
+<dt>5
+<dd><math>cos(re^c)</math> <math>cos(im^2)</math> <math>cos(square)</math>
+<dt>6
+<dd><math>abs(re^2)</math> <math>abs(im^2)</math> <math>abs(square)</math>
+<dt>7
+<dd><math>re*im</math> <math>re*re</math> <math>im*im</math>
+<dt>8
+<dd><math>abs(im*cim)</math> <math>abs(re*cre)</math> <math>abs(re*cim)</math>
+<dt>9
+<dd><math>abs(re*im-csqr)</math> <math>abs(re^2-csqr)</math> <math>abs(im^2-csqr)</math>
+</dl>
+<p>
+<emph>Available as</emph>: command line option, command
+
+<node calc, fractal, mfilter, menus>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%calc
+
+<menuhead><head>Calculation</head></menuhead>
+This menu contains functions that control calculation parameters such as
+the maximum iteration count and periodicity checking.
+<menuitems><center>
+<p><a range>Solid guessing</a>
+<p><submenu><a dynamic>Dynamic resolution</a>
+<p><a periodicity>Periodicity checking</a>
+<p><a maxiter>Iterations</a>
+<p><a bailout>Bailout</a>
+<p><a fastjulia>Fast Julia mode</a>
+<p><a dynamic>Dynamic resolution</a>
+<p><a rotate>Rotation</a>
+</center></menuitems>
+<node range, , periodicity, calc>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%range mguess guess0 guess1 guess2 guess3 guess4 guess5 guess6 guess7 guess8 guess9 guessall
+<head>Solid guessing range</head>
+<p><emph>Syntax</emph>:(range integer)
+<p>
+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.
+<p>
+<emph>Available as</emph>: command line option, command
+
+<node periodicity, range, maxiter, calc>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%periodicity
+<head>Periodicity checking</head>
+<p><emph>Syntax</emph>:(periodicity bool)
+<p>
+Periodicity checking is one way to speed up the calculation. Areas inside the
+set always need <a maxiter><tt>maxiter</tt></a> 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).
+<p>
+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.
+<p>
+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 <a incoloring>incoloring</a> 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.)
+<p>
+The tutorial chapter ``<tutor escape.xaf>Escape time fractals</tutor>'' has
+more information on fractal calculation in XaoS, and there is a lengthy
+section in the hacker's manual (<tt>xaosdev.texinfo</tt>) devoted to the
+subject.
+<p>
+<emph>Available as</emph>: menu item, command line option, command
+
+<node maxiter, periodicity, bailout, calc>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%maxiter
+<head>Iterations</head>
+<p><emph>Syntax</emph>:(maxiter integer)
+<p>
+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.
+<p>
+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.
+<p>
+The tutorial chapter ``<tutor escape.xaf>Escape time fractals</tutor>'' has
+more information on fractal calculation in XaoS, and there is a lengthy
+section in the hacker's manual (<tt>xaosdev.texinfo</tt>) devoted to the
+subject.
+<p>
+<emph>Available as</emph>: menu item, command line option, command
+
+<node fastjulia, bailout, dynamic, calc>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%fastjulia
+<head>Fast Julia mode</head>
+<p><emph>Syntax</emph>:(fastjulia bool)
+<p>
+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.
+<p>
+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 <a uimandelbrot>Julia mode</a> to see the exact image.
+<p>
+<emph>Available as</emph>: menu item, command line option, command
+
+<node dynamic, fastjulia, rotate, calc>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%dynamic nodynamic dynamicanimation dynamicnew fastmode
+
+<menuhead><head>Dynamic resolution</head></menuhead>
+<p><emph>Syntax</emph>:(fastmode keyword)
+<p>
+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.
+<p>
+In the scripting languge, the keyword should be one of the following:
+<dl>
+<dt><tt>'never</tt>
+<dd>Disable dynamic resolution
+<dt><tt>'animate</tt>
+<dd>Use only for animations (default)
+<dt><tt>'new</tt>
+<dd>Use also for new images
+</dl>
+<node rotate, dynamic, , calc>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%rotate norotate controtate mouserotate rotationspeed autorotate fastrotate
+
+<menuhead><head>Image rotation</head></menuhead>
+
+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</emph> 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.
+<p>
+The user interface provides two rotation modes--<emph>rotate by
+mouse</emph> which allows the angle to be changed by dragging with the first
+mouse button depressed, and <emph>continuous rotation mode</emph>, where the image
+is rotated clockwise continuously, and the arrow keys can be used to change
+the rotiation speed.
+<p><emph>Syntax</emph>:(fastrotate bool)
+<p>
+This function is used to enable and disable fast rotation mode.
+<emph>Available as</emph>: command line option, command
+<head>Automatic rotation</head>
+<p><emph>Syntax</emph>:(autorotate bool)
+<p>
+Use this function to enable continuous rotation. In the scripting language you
+can also use <a morphangle><tt>morphangle</tt></a> to get an outwardly similar
+but more controllable effect.
+<p><emph>Syntax</emph>:(rotationspeed float)
+<p>
+Specify the speed of continuous rotation, in degrees per second.
+Negative values are allowed and rotate anticlockwise.
+<p>
+<emph>Available as</emph>: menu item, command line option, command
+
+
+
+<node mfilter, calc, ui, menus>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%mfilter
+
+<menuhead><head>Filters</head></menuhead>
+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 <tutor filter.xaf>tutorial chapter</tutor> about them.
+<p>
+<menuitems><center>
+<p><a filter>Filter command</a>
+<p><a edge>Edge detection</a>
+<p><a edge2>Edge detection2</a>
+<p><a starfield>Starfield</a>
+<p><a stereogram>Random dot stereogram</a>
+<p><a interlace>Interlace filter</a>
+<p><a blur>Motion blur</a>
+<p><a emboss>Emboss</a>
+<p><a palettef>Palette emulator</a>
+<p><a anti>Antialiasing</a>
+<p><a truecolor>Truecolor emulator</a>
+</center></menuitems>
+<node filter, , edge, mfilter>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%filter
+<head>Filter command</head>
+<p><emph>Syntax</emph>:(filter keyword bool)
+<p>
+This command is used to enable or disable <a mfilter>filters</a>.
+The <emph>keyword</emph> specifies the filter to change, and should be one of
+the following:
+<p>
+<dl>
+<dt><tt>'edge</tt>
+<dd><a edge>Edge detection</a>
+<dt><tt>'edge2</tt>
+<dd><a edge2>Edge detection2</a>
+<dt><tt>'starfield</tt>
+<dd><a starfield>Starfield</a>
+<dt><tt>'stereogram</tt>
+<dd><a stereogram>Random dot stereogram</a>
+<dt><tt>'interlace</tt>
+<dd><a interlace>Interlace filter</a>
+<dt><tt>'blur</tt>
+<dd><a blur>Motion blur</a>
+<dt><tt>'emboss</tt>
+<dd><a emboss>Emboss</a>
+<dt><tt>'palette</tt>
+<dd><a palette>Palette emulator</a>
+<dt><tt>'anti</tt>
+<dd><a anti>Antialiasing</a>
+<dt><tt>'truecolor</tt>
+<dd><a truecolor>Truecolor</a>
+</dl>
+<p>
+<emph>Available as</emph>: command
+<node edge, filter, edge2, mfilter>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%edge
+<head>Edge detection</head>
+<p>
+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
+<a edge2>edge detection2</a> makes thinner lines, for the low resolution modes.
+<notex>
+<p>
+<a filter>More information about filters</a>
+</notex>
+<p>
+<emph>Available as</emph>: menu item, command line option
+
+<node edge2, edge, starfield, mfilter>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%edge2
+<head>Edge detection2</head>
+<p>
+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
+<a edge>edge detection</a> makes thinner lines, for the high resolution modes.
+<notex>
+<p>
+<a filter>More information about filters</a>
+</notex>
+<p>
+<emph>Available as</emph>: menu item, command line option
+
+<node starfield, edge2, stereogram, mfilter>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%starfield
+<head>Starfield</head>
+<p>
+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 :)
+<notex>
+<p>
+<a filter>More information about filters</a>
+</notex>
+<p>
+<emph>Available as</emph>: menu item, command line option
+
+<node stereogram, starfield, interlace, mfilter>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%stereogram
+<head>Random dot stereogram</head>
+<p>
+ 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).
+<p>
+ 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.
+<p>
+ To make this work right, XaoS needs to know the <emph>exact size of your
+ monitor</emph>. Because most platforms have no way to determine this, you need to
+ use <emph>command line options</emph> 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).
+<p>
+ 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.
+<p>
+ 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.
+<p>
+ The following command line options are provided to specify sizes:
+<p>
+<dl>
+<dt><tt>-screenwidth</tt>, <tt>-screenheight</tt>
+ <dd>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.
+
+ <dt><tt>-pixelwidth</tt>, <tt>-pixelheight</tt>
+ <dd>Lets you specify the exact size of a single pixel, if XaoS cannot
+ determine this for itself from your screen size.
+</dl>
+<p>
+ 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.
+<p>
+ If the window is <emph>smaller than 8cm in any direction</emph>, you will probably be
+ unable to see anything; make the window bigger.
+
+ The correct way to see XaoS stereograms is:
+<dl>
+ <dt>1
+ <dd>Start XaoS with options specifying the exact size of your screen or one pixel on it
+ <dt>2
+ <dd>Sit 60cm away from monitor
+ <dt>3
+ <dd>If you use a windowed environment, resize XaoS's window to make it wider than, say, 15 cm.
+ <dt>4
+ <dd>Enable the filter (by pressing <tt>E</tt>)
+ <dt>5
+ <dd>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.
+ <dt>6
+ <dd>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...)
+ <dt>7
+ <dd>Enjoy animation :)
+</dl>
+<p>
+ 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.
+<notex>
+<p>
+<a filter>More information about filters</a>
+</notex>
+
+<p>
+<emph>Available as</emph>: menu item, command line option
+
+<node interlace, stereogram, blur, mfilter>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%interlace
+<head>Interlace filter</head>
+<p>
+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.
+<notex>
+<p>
+<a filter>More information about filters</a>
+</notex>
+<p>
+<emph>Available as</emph>: menu item, command line option
+
+<node blur, interlace, emboss, mfilter>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%blur
+<head>Motion blur</head>
+<p>
+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
+<a palettef>palette filter</a> first.
+<notex>
+<p>
+<a filter>More information about filters</a>
+</notex>
+<p>
+<emph>Available as</emph>: menu item, command line option
+
+<node emboss, blur, palettef, mfilter>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%emboss
+<head>Emboss</head>
+<p>
+This is a standard emboss filter, as seen in programs such as the GIMP or
+Photoshop. It produces especially nice results with the smooth
+<a outcoloring>outcoloring mode</a>.
+<notex>
+<p>
+<a filter>More information about filters</a>
+</notex>
+<p>
+<emph>Available as</emph>: menu item, command line option
+
+<node palettef, emboss, anti, mfilter>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%palettef
+<head>Palette emulator</head>
+<p>
+XaoS can work in either palette or <a truecolor>truecolor</a> mode. Both modes
+have advantages and disadvantages. Palette mode allows effects such as palette
+rotation, while truecolor mode allows smoother <a incoloring>incoloring</a>
+and <a outcoloring>outcoloring</a> modes and the
+<a tcolor>truecolor coloring</a> 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).
+<notex>
+<p>
+<a filter>More information about filters</a>
+</notex>
+<p>
+<emph>Available as</emph>: menu item, command line option
+
+<node anti, palettef, truecolor, mfilter>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%anti
+<head>Antialiasing</head>
+<p>
+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.
+<p>
+This filter slows XaoS down a <emph>lot</emph> 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).
+<notex>
+<p>
+<a filter>More information about filters</a>
+</notex>
+<p>
+<emph>Available as</emph>: menu item, command line option
+
+<node truecolor, anti, , mfilter>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%truecolor
+<head>Truecolor emulator</head>
+<p>
+XaoS can work in either <a palettef>palette</a> or truecolor mode. Both modes
+have advantages and disadvantages. Palette mode allows effects such as palette
+rotation, while truecolor mode allows smoother <a incoloring>incoloring</a>
+and <a outcoloring>outcoloring</a> modes and the
+<a tcolor>truecolor coloring</a> 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).
+<p>
+<a filter>More information about filters</a>
+<p>
+<emph>Available as</emph>: menu item, command line option
+
+<node ui, mfilter, misc, menus>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%ui uia
+
+<menuhead><head>UI</head></menuhead>
+
+This menu contains functions to control the user interface layer of XaoS:
+zooming speed, the autopilot, realtime status information, and so on.
+
+<menuitems><center>
+<p><a speed>Zooming speed</a>
+<p><a letterspersec>Letters per second</a>
+<p><a autopilot>Autopilot</a>
+<p><a recalculate>Recalculate</a>
+<p><a interrupt>Interrupt</a>
+<p><a nogui>Disable XaoS's builtin GUI</a>
+<p><a status>Status</a>
+<p><a ministatus>Ministatus</a>
+</center></menuitems>
+<node speed, , letterspersec, ui>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%speed speedup maxstep
+<head>Zooming speed</head>
+<p><emph>Syntax</emph>:(speed float)
+<p>
+Change zooming speed, where 1 is the default, 2 means twice as fast, and so on.
+<p>
+<emph>Available as</emph>: menu item, command line option, command
+<p>
+In the scripting language you can use the following functions for better
+control:
+<p><emph>Syntax</emph>:(maxstep float)
+<p>
+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.
+<p>
+<emph>Available as</emph>: command
+<p><emph>Syntax</emph>:(speedup float)
+When zooming/unzooming, every twentieth of a second the <tt>speedup</tt>
+value is added to the current step until <tt>maxstep</tt> 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.
+<p>
+<emph>Available as</emph>: command
+
+<node letterspersec, speed, autopilot, ui>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%letterspersec animletterspersec
+<head>Letters per second</head>
+<p><emph>Syntax</emph>:(letterspersec integer)
+<p>
+Speed of subtitles for the <a textsleep><tt>textsleep</tt></a> function.
+The user can set this value to suit; it can also be changed with the left and
+right arrow keys during animation replay.
+<p>
+<emph>Available as</emph>: command line option, command
+
+<node autopilot, letterspersec, recalculate, ui>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%autopilot
+<head>Autopilot</head>
+<p><emph>Syntax</emph>:(autopilot bool)
+<p>
+ To make XaoS yet more impressive, we made a special autopilot mode that
+ automatically drives into interesting boundaries of the set; you should
+ press <tt>A</tt>, 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.
+<p>
+ 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.
+<p>
+<emph>Available as</emph>: menu item, command line option, command
+
+<node recalculate, autopilot, interrupt, ui>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%recalculate
+<head>Recalculate</head>
+<p><emph>Syntax</emph>:(recalculate)
+<p>
+Recalculate current fractal. This should be used when the fractal on the
+screen is strange because of error propagation caused by
+<a range>solid guessing</a>.
+<p>
+<emph>Available as</emph>: menu item, command line option, command
+
+<node interrupt, recalculate, nogui, ui>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%interrupt animinterrupt
+<head>Interrupt</head>
+<p><emph>Syntax</emph>:(interrupt)
+<p>
+Interrupt current calculation.
+<p>
+<emph>Available as</emph>: menu item, command line option, command
+
+
+<node nogui, interrupt, status, ui>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%nogui
+<head>Disable XaoS's builtin GUI</head>
+<p><emph>Syntax</emph>:(nogui bool)
+<p>
+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 (<tt>xaosdev.texinfo</tt>)
+for more details.
+<p>
+<emph>Available as</emph>: menu item, command line option, command
+
+<node status, nogui, ministatus, ui>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%status animstatus
+<head>Status</head>
+<p><emph>Syntax</emph>:(status bool)
+<p>
+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...)
+<p>
+<emph>Available as</emph>: menu item, command line option, command
+
+<node ministatus, status, , ui>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%ministatus animministatus
+<head>Ministatus</head>
+<p><emph>Syntax</emph>:(ministatus bool)
+<p>
+Enable/disable status line. This contains basic information such as how
+much you are zoomed and the framerate.
+<p>
+<emph>Available as</emph>: menu item, command line option, command
+
+<node misc, ui, helpmenu, menus>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%misc
+
+<menuhead><head>Misc</head></menuhead>
+Miscellaneous functions.
+<menuitems><center>
+<p><a command>Command</a>
+<p><a renderanim>Render animation</a>
+<p><a clearscreen>Clear screen</a>
+<p><a display>Display fractal</a>
+<p><a text>Display text</a>
+<p><a color>Color</a>
+<p><submenu><a xtextpos>Horizontal text position</a>
+<p><submenu><a ytextpos>Vertical text position</a>
+<p><a textposition>Text position</a>
+<p><a message>Message</a>
+</center></menuitems>
+<node command, , renderanim, misc>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%command
+<head>Command</head>
+<p>
+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 <a format>XaoS animation file</a> instead;
+they are written in the same language.
+<p>
+<emph>Available as</emph>: menu item
+
+<node renderanim, command, clearscreen, misc>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%renderanim
+<head>Render animation</head>
+<p>
+Render an animation to image files. See <a video>How to encode video files</a>
+for more information.
+<p>
+<emph>Available as</emph>: menu item,
+<node clearscreen, renderanim, display, misc>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%clearscreen
+<head>Clear screen</head>
+<p><emph>Syntax</emph>:(clearscreen)
+<p>
+Clear the screen. To display the fractal again, use <a display><tt>display</tt></a>.
+This function is mainly useful in tutorials and similar animations.
+<p>
+<emph>Available as</emph>: menu item, command
+
+<node display, clearscreen, text, misc>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%display
+<head>Display fractal</head>
+<p><emph>Syntax</emph>:(display)
+<p>
+Display fractal. This functions reverses the effect of the <tt>clearscreen</tt>,
+line drawing and text output functions.
+<p>
+<emph>Available as</emph>: menu item, command
+
+<node text, display, color, misc>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%text
+<head>Display text</head>
+<p><emph>Syntax</emph>:(text string)
+<p>
+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
+<a clearscreen><tt>clearscreen</tt></a> or <a display><tt>display</tt></a>
+functions. You might also want to use the <a textposition><tt>textposition</tt></a>
+function to select the part of the screen to display the text on.
+<p>
+To wait for the user to read the text, you can use the <a textsleep><tt>textsleep</tt></a>
+function.
+<p>
+Example:
+<p><tt>
+(clearscreen)<br>
+(textposition 'center 'middle)<br>
+(text "Welcome into my animation")<br>
+(textsleep)<br>
+(display)<br>
+</tt><p>
+<emph>Available as</emph>: menu item, command line option, command
+
+<node color, text, textposition, misc>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%color
+<head>Color</head>
+<p><emph>Syntax</emph>:(color keyword)
+<p>
+Change text and line color. <emph>keyword</emph> should be one of <tt>'white</tt>,
+<tt>'black</tt> and <tt>'red</tt>.
+<p>
+<emph>Available as</emph>: menu item, command line option, command
+
+<node textposition, color, message, misc>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%textposition
+<head>Text position</head>
+<p><emph>Syntax</emph>:(textposition keyword keyword)
+<p>
+Select <a text>text</a> position. The first keyword specifies the horizontal
+position, the second the vertical position. The horizontal position should be
+one of <tt>'left</tt>, <tt>'center</tt>, and <tt>'right</tt>.
+The vertical should be one of <tt>'top</tt>, <tt>'middle</tt>, and <tt>'bottom</tt>.
+<p>
+<emph>Available as</emph>: command line option, command
+
+<node message, textposition, , misc>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%message
+<head>Message</head>
+<p><emph>Syntax</emph>:(message string)
+<p>
+This function is almost identical to the <a text><tt>text</tt></a> function,
+except that it uses message catalogs in the <tt>catalog</tt> directory to
+translate messages into other languages. It should be used only in the multi-lingual
+XaoS tutorials.
+<p>
+<emph>Available as</emph>: command line option, command
+
+<node helpmenu, misc, xtextpos, menus>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%helpmenu
+
+<menuhead><head>Help</head></menuhead>
+This menu contains help and tutorials.
+<notex>
+<menuitems><center>
+<p><a help>Help</a>
+</center></menuitems>
+<node help, , , helpmenu>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%help
+<head>Help</head>
+<p><emph>Syntax</emph>:(help)
+<p>
+Display the main help page.
+<p>
+<emph>Available as</emph>: menu item, command line option, command
+</notex>
+
+<node xtextpos, helpmenu, ytextpos, menus>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%xtextpos
+
+<menuhead><head>Horizontal text position</head></menuhead>
+Select the horizontal position used to display <a text>text</a>.
+It can be placed at the left, in the center or at the right.
+<notex>
+<menuitems><center>
+<p><a xtextleft>Left</a>
+<p><a xtextcenter>Center</a>
+<p><a xtexteight>Right</a>
+</center></menuitems>
+<node xtextleft, , xtextcenter, xtextpos>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%xtextleft
+<head>Left</head>
+<p>
+Draw <a text>text</a> at the left side of the screen.
+<p>
+<emph>Available as</emph>: menu item
+
+<node xtextcenter, xtextleft, xtexteight, xtextpos>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%xtextcenter
+<head>Center</head>
+<p>
+Draw <a text>text</a> in the center of the screen.
+<p>
+<emph>Available as</emph>: menu item
+
+<node xtexteight, xtextcenter, , xtextpos>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%xtexteight
+<head>Right</head>
+<p>
+Draw <a text>text</a> at the right side of the screen.
+<p>
+<emph>Available as</emph>: menu item
+</notex>
+
+<node ytextpos, xtextpos, mformula, menus>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%ytextpos
+
+<menuhead><head>Vertical text position</head></menuhead>
+Select the vertical position used to display <a text>text</a>. It can be
+placed at the top, in the middle or at the bottom of the screen.
+<notex>
+<menuitems><center>
+<p><a ytextup>Up</a>
+<p><a ytextmiddle>Middle</a>
+<p><a ytextbottom>Bottom</a>
+</center></menuitems>
+<node ytextup, , ytextmiddle, ytextpos>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%ytextup
+<head>Up</head>
+<p>
+Draw <a text>text</a> at the top of the screen.
+<p>
+<emph>Available as</emph>: menu item
+
+<node ytextmiddle, ytextup, ytextbottom, ytextpos>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%ytextmiddle
+<head>Middle</head>
+<p>
+Draw <a text>text</a> in the middle of the screen.
+<p>
+<emph>Available as</emph>: menu item
+
+<node ytextbottom, ytextmiddle, , ytextpos>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%ytextbottom
+<head>Bottom</head>
+<p>
+Draw <a text>text</a> at the bottom of the screen.
+<p>
+<emph>Available as</emph>: menu item
+</notex>
+
+<node mformula, ytextpos, palettemenu, menus>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%mformula
+
+<menuhead><head>formulae</head></menuhead>
+<p>
+Each escape time fractal has its own formula. XaoS supports the following
+formulae:
+<p>
+<menuitems><center>
+<p><a mandel>Mandelbrot</a>
+<p><a mandel3>Mandelbrot^3</a>
+<notex>
+<p><a mandel4>Mandelbrot^4</a>
+<p><a mandel5>Mandelbrot^5</a>
+<p><a mandel6>Mandelbrot^6</a>
+</notex>
+<p><a octal>Octal</a>
+<p><a newton>Newton</a>
+<p><a barnsley>Barnsley1</a>
+<p><a phoenix>Phoenix</a>
+<p><a magnet>Magnet</a>
+</center></menuitems>
+<node mandel, , mandel3, mformula>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%mandel
+<head>Mandelbrot</head>
+<p>
+The Mandelbrot set is the most famous escape time fractal ever. It has the
+simple formula <math>z=z^2+c</math>. See the <tutor mset.xaf>tutorial chapter</tutor>.
+<p>
+<emph>Available as</emph>: menu item, command line option
+
+<node mandel3, mandel, octal, mformula>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%mandel3 mandel4 mandel5 mandel6
+<head>Mandelbrot^3--Mandelbrot^6</head>
+<p>
+This fractal is a simple modification of the standard
+<a mandel>Mandelbrot set</a> formula, using <math>z=z^3+c</math> instead of
+<math>z=z^2+c</math>.
+<p>
+Other derivations of the Mandelbrot set (Mandelbrot^4 and so on) use even
+higher powers. See the <tutor power.xaf>tutorial chapter</tutor>.
+<p>
+<emph>Available as</emph>: menu item, command line option
+<node octal, mandel3, newton, mformula>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%octal
+<head>Octal</head>
+<p>
+This is a less well-known fractal that Thomas discovered in Fractint.
+It has an interesting shape when displayed in the alternative
+<a mplane>planes</a>. See the <tutor octo.xaf>tutorial chapter</tutor>.
+<p>
+<emph>Available as</emph>: menu item, command line option
+
+<node newton, octal, barnsley, mformula>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%newton
+<head>Newton</head>
+<p>
+This is Newton's approximation method for finding the roots of a polynomial. It
+uses the polynomial <math>x^3=1</math> and counts the number of iterations needed
+to reach the approximate value of the root. See the <tutor newton.xaf>tutorial chapter</tutor>.
+<p>
+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'').
+<p>
+<emph>Available as</emph>: menu item, command line option
+
+<node barnsley, newton, phoenix, mformula>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%barnsley
+<head>Barnsley1</head>
+<p>
+This is a formula by Michael Barnsley. It produces very nice crystalline Julia
+sets. See the <tutor barnsley.xaf>tutorial chapter</tutor>.
+<p>
+<emph>Available as</emph>: menu item, command line option
+
+<node phoenix, barnsley, magnet, mformula>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%phoenix
+<head>Phoenix</head>
+<p>
+This formula produces very nice Julia sets.
+See the <tutor phoenix.xaf>tutorial chapter</tutor>.
+<p>
+<emph>Available as</emph>: menu item, command line option
+
+<node magnet, phoenix, , mformula>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%magnet
+<head>Magnet</head>
+<p>
+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 <tutor phoenix.xaf>tutorial chapter</tutor>.
+<p>
+<emph>Available as</emph>: menu item, command line option
+
+<node palettemenu, mformula, , menus>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%palettemenu
+
+<menuhead><head>Palette</head></menuhead>
+This menu contains functions to change the palette the fractal is displayed with.
+<menuitems><center>
+<p><a defpalette>Default palette</a>
+<p><a randompalette>Random palette</a>
+<p><a palette>Custom palette</a>
+<p><a cycling>Color cycling</a>
+<p><a shiftpalette>Shift palette</a>
+</center></menuitems>
+<node defpalette, , randompalette, palettemenu>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%defpalette
+<head>Default palette</head>
+<p><emph>Syntax</emph>:(defaultpalette number)
+<p>
+Create a default palette. In the scripting language, <tt>number</tt> specifies
+how much the palette is shifted by.
+<p>
+Note that changing the palette in truecolor modes forces recalculation of
+the whole screen. To avoid this, you can enable the
+<a palettef>palette emulation filter</a> first.
+<p>
+<emph>Available as</emph>: menu item, command line option, command
+
+<node randompalette, defpalette, palette, palettemenu>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%randompalette
+<head>Random palette</head>
+<p><emph>Syntax</emph>:(randompalette)
+<p>
+Create a random palette. XaoS will automatically pick one of its
+palette-generation algorithms and create one.
+<p>
+Note that changing the palette in truecolor modes forces recalculation of
+the whole screen. To avoid this, you can enable the
+<a palettef>palette emulation filter</a> first.
+<p>
+<emph>Available as</emph>: menu item, command line option, command
+
+<node palette, randompalette, cycling, palettemenu>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%palette
+<head>Custom palette</head>
+<p><emph>Syntax</emph>:(palette integer integer integer)
+<p>
+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:
+<dl>
+<dt>0
+<dd>Default palette
+<dt>1
+<dd>Black to color gradient
+<dt>2
+<dd>Black to color to white gradient
+<dt>3
+<dd>Cubistic-like algorithm.
+</dl>
+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.
+<p>
+Note that changing the palette in the truecolor modes forces recalculation of
+the whole screen. To avoid this, you can enable the
+<a palettef>palette emulation filter</a> first.
+<p>
+<emph>Available as</emph>: menu item, command line option, command
+
+<node cycling, palette, shiftpalette, palettemenu>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%cycling rcycling cyclingspeed
+<head>Color cycling</head>
+<p><emph>Syntax</emph>:(cycling bool)
+<p>
+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 <a palettef>palette emulation filter</a> to make it possible.
+<p>
+<emph>Available as</emph>: menu item, command line option, command
+<p>
+In the user interface, colors can also be cycled in the opposite direction
+with the ``<emph>Reversed color cycling</emph>'' function.
+<p>
+To control the cycling speed, you coan use arrow keys or the
+``<emph>Color cycling speed</emph>'' function.
+<p>
+<emph>Available as</emph>: menu item
+<p><emph>Syntax</emph>:(cyclingspeed integer)
+<p>
+The parameter specifies the number of skips per second. It can be negative to
+cycle in the opposite direction.
+<p>
+<emph>Available as</emph>: menu item, command line option, command
+
+<node shiftpalette, cycling, , palettemenu>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%shiftpalette fshift bshift
+<head>Shift palette</head>
+<p><emph>Syntax</emph>:(shiftpalette integer)
+<p>
+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</emph> and <emph>Shift one backward</emph> functions
+for fine-tuning. Note that shifted and rotated palettes could look different on
+different displays (because they may have different palette sizes).
+<p>
+Shifting the palette on truecolor displays causes a recalculation of the screen.
+To avoid this, you could use <a palettef>palette emulation filter</a>.
+<p>
+<emph>Available as</emph>: menu item, command line option, command
+
+
+%endmenus
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%gpl
+
+<head>GNU GENERAL PUBLIC LICENSE</head>
+<center>Version 2, June 1991<p>
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.<br>
+ 675 Mass Ave, Cambridge, MA 02139, USA<br>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+</center>
+<head>Preamble</head>
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+<p>
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+<p>
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+<p>
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+<p>
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+<p>
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+<p>
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+<p>
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+<head>GNU GENERAL PUBLIC LICENSE<p>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</head>
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+<p>
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+<p>
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+<p>
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+<p>
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+<dl>
+<dt>
+<dd>
+<p>
+a)
+ You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+<p>
+b)
+ You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+<p>
+c)
+ If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+</dl>
+<p>
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+<p>
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+<p>
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+<p>
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+<dl>
+<dt>
+<dd>
+<p>
+a)
+ Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+<p>
+b)
+ Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+<p>
+b)
+ Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+<p>
+</dl>
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+<p>
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+<p>
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+<p>
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+<p>
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+<p>
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+<p>
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+<p>
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+<p>
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+<p>
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+<p>
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+<p>
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+<p>
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+<head>NO WARRANTY</head>
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+<p>
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+<p>
+<center>END OF TERMS AND CONDITIONS</center>
+<head>How to Apply These Terms to Your New Programs</head>
+<p>
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+<p>
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+<p>
+<emph>
+<tt>
+ (one line to give the program's name and a brief idea of what it
+ does.)<br>
+ Copyright (C) 19yy (name of author)
+<p>
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+<p>
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+<p>
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+</tt>
+</emph>
+<p>
+Also add information on how to contact you by electronic and paper mail.
+<p>
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+<p>
+<emph>
+<tt>
+ Gnomovision version 69, Copyright (C) 19yy name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+</tt>
+</emph>
+<p>
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+<p>
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+<p>
+<emph>
+<tt>
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+<p>
+ (signature of Ty Coon), 1 April 1989
+ Ty Coon, President of Vice
+</tt>
+</emph>
+<p>
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%end