char *help[] = {
"You can use Kali to draw Escher-like tilings, infinite knots, frieze",
"patterns, and other cool stuff.  It lets you draw patterns in any of",
"the 17 planar (wallpaper) or 7 frieze symmetry groups.  ",
" ",
"The newest version of Kali is always available for free via anonymous",
"ftp from the Geometry Center: (geom.umn.edu or 128.101.25.35).  The",
"current version is 3.1, and runs under X Windows and SGIs.  It is",
"copyrighted.",
" ",
" ",
"        HISTORY",
" ",
"KALI was first written by Nina Amenta at UC Berkeley and ran under SGI",
"machines. Then it was later extended at the Geometry Center at the",
"University of Minnesota.  Nina added the capability to move and delete",
"line. Tamara Munzner added user interface panels using the public",
"domain Forms Library by Mark Overmars of the University of Utrecht",
"(available via anonymous ftp at archive.cs.ruu.nl). This older version",
"was known as Kali 2.1.",
" ",
"The newest version is Kali version 3.1.  Ed H. Chi did the port to X",
"Windows, using an alpha version of the Xforms library (a port of SGI",
"forms library to X), and the vogl graphics library.  The header files",
"were recreated, and the code was reorganized some what.  Nina added",
"the frieze group, and Tamara changed the user interface to allow the",
"switch between the two groups.  Stuart Levy of the Geometry Center",
"adapted it to a later XForms release, implemented editing (selection",
"and deletion) under X, and made it independent of vogl.",
" ",
" ",
"        HOW IT WORKS",
" ",
"Every symmetry group is defined by a lattice and a set of two",
"generators, which are either a rotation, reflections, or glide",
"reflections. A pattern is just a list of lines.  Each line is first",
"reflected (if there are any reflection or glide reflection generators)",
"and then all reflections are rotated (if there is a rotation",
"generator). Finally the resulting figure is redrawn around every",
"lattice point.  The list of lines, the lattice, and the symmetry group",
"are written into the file when you save your picture.  Kaliprint turns",
"this information into a Postscript file.  Postscript is a format which",
"you can print on a laser printer or mail to your friends.",
" ",
" ",
"        STARTUP",
" ",
"You can start up kali in frieze mode with \"-f\" or wallpaper mode with",
"\"-w\". The \"-m\" option disables switching between the two modes. The",
"default is \"-w\".",
" ",
" ",
"        CHOOSING A WALLPAPER OR FRIEZE GROUP",
" ",
"To switch between the wallpaper group and the frieze group, click on",
"the choice panel at the top of the symmetry buttons. The choice panel",
"will change to either \"Wallpaper Groups\" or \"Frieze Groups\".",
" ",
" ",
"        CHOOSING A SYMMETRY",
" ",
"Select the symmetry you wish to work in by clicking on one of the",
"symmetry button. Each icon shows some of the symmetries which your",
"pattern will contain. Each group is also labeled in Conway notation",
"and the traditional crystallographic notation.",
" ",
"Re-selecting the current symmetry group clears the window and throws",
"away your current drawing.",
" ",
" ",
"        SUMMARY OF MOUSE AND KEYBOARD COMMANDS",
" ",
"Left Mouse (draw mode) -- Start/Continue drawing connected lines",
"Left Mouse (move mode) -- Move second endpoint of selected line",
"Middle Mouse (draw mode) -- Break connected lines, allow starting fresh",
"Middle Mouse (other modes) -- Delete selected line",
"Right Mouse (any mode) -- Select line",
" ",
"backspace/delete -- Delete selected line",
"Keys to choose modes: (d)raw (m)ove (x)delete (r)otate (a)ngle (R)atio",
" ",
"        DRAWING",
" ",
"Clicking the left mouse puts down points in your pattern.  Once a",
"point is down, a new line \"rubber-bands\" from the point to the current",
"cursor position.  Click the left mouse again to fix the second",
"endpoint of the current line and start the next one. Click the middle",
"mouse button to let go of the current rubber-banding line. Clicking",
"infrequently often gives nicer patterns.",
" ",
" ",
"        TRANSFORMATIONS",
" ",
"ZOOM: You can scale your window by clicking on \"Zoom\".  Now holding",
"down the left mouse button and moving the mouse left and right makes",
"your pattern bigger or smaller. When editing (see the next section) it",
"is often useful make the pattern very big, edit, and then shrink it",
"again.",
" ",
"ROTATE: Clicking \"Rotate\" lets you rotate the pattern within the",
"window.  Again, hold down the left mouse and move it left and right.",
" ",
"ANGLE and RATIO: Some symmetry groups have some additional degrees of",
"freedom in the symmetry lattice.  If the \"Angle\" or \"Ratio\" button is",
"activated, you can change the angle between the two vectors",
"forming the lattice, or the ratio between the lengths of the two",
"vectors, respectively.",
" ",
"You can always resize the window to fit your pattern into a",
"differently shaped rectangle by picking up its lower righthand corner.",
" ",
"To get back to Draw mode after a transformation, click on the \"Draw\"",
"button.",
" ",
" ",
"        EDITING",
" ",
"Click the RIGHT mouse button to SELECT the line under the cursor.",
"It is highlighted in red.",
" ",
"Click the MIDDLE mouse button to DELETE the selected line, or",
"press the Backspace or Delete keys.  After deleting, another line",
"(often the adjacent one) becomes highlighted, and can be deleted in turn.",
" ",
"Press the \"Move\" button to choose Move mode.",
"Then, click and drag the LEFT mouse button to move the nearest endpoint of",
"the selected line.  You'll need to press the \"Draw\" button to resume drawing.",
" ",
" ",
"        SAVING AND LOADING A PATTERN",
" ",
"SAVE: Click \"Save\" on the control panel to save your pattern. It will prompt",
"you for a name under which to save it, and puts it in a file with that",
"name.",
" ",
"LOAD: To load an old pattern, click \"Load\". It will ask you for the",
"name it was saved under. Some demonstration patterns to look at are",
"\"weaving.kali\", \"turtles.kali\", and \"people.kali\".",
" ",
"\"Esc\" clears the input panel in the popup window.",
" ",
" ",
"        PRINTING A PATTERN",
" ",
"The \"Print\" button on the main kali panel will route a PostScript",
"version of the pattern to the printer defined by the \"PRINTER\"",
"environment variable.  There is also a separate program for printing a",
"kali output file. From the Unix shell, type \"kaliprint yourfile.kali | lpr\"",
"replacing \"yourfile.kali\" with the name of the file containing your pattern.",
" ",
"The \"Print To\" button saves the current view in a Postscript file.",
"If instead of a file name you enter a UNIX command preceded by",
"a \"|\" vertical bar, (as in \"| lpr -Potherprinter\"), the Postscript",
"text is piped to that command.",
"."};
