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