
			   Panorama 2 User Guide

Minimum Requirements
--------------------

- Pentium 120,
- 32MB of RAM,
- Graphics card with 2MB of onboard memory,
- DirectX 5.

   The graphics card should have a hardware blitter for better performance. To
enjoy  true color modes, the graphics card should have at least 4MB of onboard
memory.

Multiple OS versions
--------------------

   The rules stated in this text apply to  the Windows version of the browser.
Versions for other operating systems  may include minor differences, mainly in
key combinations. These differences  are listed in textfiles included with the
OS-specific releases.

Troubleshooting
---------------

   Some  popular  graphics  card drivers have a bug that causes the program to
lock  up  on  startup (known to happen with S3Trio and Intel740). In such case
you  can  try  to  run	the  program  in high color mode (disabling true color
option)  or  to disable vertical retrace sync. option. A better solution is to
get newer drivers from the manufacturer.

Speed Tradeoffs
---------------

   On old systems the program may run slowly. To make it run smoother, you can
disable  some  options	in  the  startup dialogbox, for example decrease music
quality  (or turn the music off for good), disable special effects or decrease
JPEG quality (speed up JPEG decompression), though  the latter does not affect
the speed on Pentium-compatibles and higher.

Navigating
----------

   It  is  easy  to navigate through articles both with mouse and keyboard. As
there  are two types of articles, ones with contiguous contents, and ones with
multiple columns, the techniques of scrolling them differ a bit.

To scroll a typical contiguous article, you can:
- use  up/down	arrows,  which	select	links  and  scroll articles vertically
  by a fixed small amount (typically a line) (NOTE: if the article has aligned
  position, up/down arrows scroll by a page),
- use Page Up/Page Down keys to scroll articles by a page,
- press Space key to precisely scroll articles down,
- roll	the  mouse  wheel  which  scrolls  articles  in  a  way  depending  on
  the wheel settings,
- move	mouse  cursor  to  the	upper  or  lower  edge of the screen and press
  left mouse button to scroll articles by a line,
- move	mouse  cursor  to  the	left  or  right  edge  of the screen and press
  left mouse button to scroll articles by a page,
- drag the scrollbar thumb to quickly position articles,
- click on the scrollbar beyond the thumb to cause scrolling by a page,
- press Home or End key to scroll an article to the beginning or to the end.

To scroll an article with columns you can:
- use up/down arrows to select links and scroll articles by a column,
- use left/right arrows to scroll articles by a column,
- use Page Up/Page Down keys to scroll articles by a page,
- roll the mouse wheel to scroll articles by a column per threshold,
- move	mouse  cursor  to  the	upper  or  lower  edge of the screen and press
  left mouse button to scroll articles by a page,
- move	mouse  cursor  to  the	left  or  right  edge  of the screen and press
  left mouse button to scroll articles left or right by a column,
- drag the scrollbar thumb to quickly position articles,
- click on the scrollbar beyond the thumb to cause scrolling by a page,
- press Home or End key to scroll an article to the beginning or to the end.

Some other legacy key combinations also exist:
- Shift+arrow down/up work like Page Down/Up,
- Ctrl+Home and Ctrl+End work like Home and End,
- Ctrl+Page Up and Ctrl+Page Down also work like Home and End.

   You can move  through visible links either  using up and down arrow keys or
by  pointing  the  links  with mouse. To enter (activate) a link you can press
Enter,	Ctrl+right  arrow or simply click left mouse button on that link. This
way  you  can enter an article or cause some external action (e.g. start a web
browser).

   To  exit an article and return to a previous one you can right-click, press
Backspace, Esc or Ctrl+left arrow.

   To  quit  being in the main article (e.g. menu), you can press Backspace or
Esc. In any other article you can press F10, Alt+Q or Alt+X.

   Pressing  keys  1  through  8  you  can select a tune. Of course the actual
number of available tunes depends on an issue. To select a tune entered in the
startup  dialogbox,  you  can press the F3 key. To turn off the music, you can
press  0  key.	You  may  also	want to adjust the overall sound volume with +
(plus)	and  -	(minus)  keys  up and down respectively. The music is normally
playing  in  cyclic  mode,  i.e.  song	by song. To select other modes you can
press  the  R  key  for  random playback or the L key for looping playback. To
return to the cyclic mode press the C key.

   If  an issue (or an article) contains more than one background image/theme,
the  other  themes can be activated with Ctrl+number keys (numbers 1 through 9
are available).

Other available keys:
- F1 - display help,
- F2 - save current article to disk in HTML, if only possible,
- F4 - enable/disable effects (e.g. smooth scrolling) at run-time,
- F7 - search through articles by words,
- Ctrl+P - print current article,
- Ctrl+Enter - copy selected link to clipboard.

List of keys
------------
up		select next link or perform article type-dependent action
		  (line up, page up or column left)
down		select previous link or perform article type-dependent action
		  (line down, page down or column right)
left		page up or column left
right		page down or column right
Page Up 	page up
Page Down	page down
Home		beginning of an article
End		end of an article
Space		pixel down (only contiguous articles)

Shift+Up	same as page up
Shift+Down	same as page down
Ctrl+Home	same as home
Ctrl+End	same as end
Ctrl+Page Up	same as home
Ctrl+Page Down	same as end

Enter		enter link (open article, go to the Internet, etc.)
Ctrl+right	  ditto
Esc		exit current article or quit if in main article
Backspace	  ditto
Ctrl+left	exit current article
F10		quit
Alt+Q		  ditto
Alt+X		  ditto

1,2,..,8	select song slot
F3		select song entered at commandline
0		stop current song
C		cyclic playback
R		random playback
L		looping playback
+		volume up
-		volume down

Ctrl+1..9	select background slot (choose background theme)
Ctrl+Enter	copy external link to clipboard
F1		help
F2		save current article in HTML
F4		toggle (enable/disable) visual effects
F7		search through articles by words

List of mouse actions
---------------------
move cursor upon link
		select link
press left button on link
		enter link
press right button
		exit current article
roll mouse wheel
		scroll (depends on what is defined in Control Panel)
move mouse to upper edge of the screen/window
		scroll up
move mouse to lower edge of the screen/window
		scroll down
move mouse to left edge of the screen/window
		scroll left (only in multi-column articles)
move mouse to right edge of the screen/window
		scroll right (only in multi-column articles)
drag (left-click and move) the progressbar thumb
		scroll
left-click on the progressbar beyond the thumb
		scroll by a page

Technical Stuff
---------------

The program uses registry key HKEY_CURRENT_USER\Software\Chris Dragan\Panorama
to store configuration information.

The program uses system temporary directory (TEMP or TMP environment variable)
to store temporary files (usually font libraries).

Articles  are  saved in  a subdirectory  SAVE (sub- to current directory). The
list of visited articles is saved in file visited.txt in current directory.

The program uses Intependent JPEG Group's JPEG decompression routines.
(http://www.ijg.org/).

The program uses unrar decompression routines (http://www.rarsoft.com/).

The Windows version of the program is capable of playing modules (XM, IT, S3M,
MOD and MO3) as well as MP3s, OGGs and WAVs using BASS music system
(http://www.icl.ndirect.co.uk/music/).

			   Panorama 2 Design Guide

The overall magazine design strongly relies upon the background graphics.

Each image can be either a JPEG, or a Windows BMP. Valid depths for BMPs
are 1-bit, 4-bit, 8-bit and 24-bit.

If an image contains transparent areas, these areas must be black on
the image. What's more, there must be a mask for this image. A mask
is typically a 1-bit BMP image with extension .msk. Areas that indicate
transparency must be white (opposite to the image) and opaque areas
must be black.

The background image should have dimensions equal to the screen resolution,
for example 640x480 or 800x600.

On the background there are some significant places:
 - page, i.e. article window, in which article contents are displayed,
 - scrollbar,
 - titlebar,
 - statusbar.
Optionally there can also exist the following "objects":
 - clock,
 - buttons,
 - static animated images.

Page (article window) should be wide enough to display articles.

Scrollbar can be either horizontal or vertical, but the readers usually
prefer a vertical scrollbar. One should prepare three images for the
scrollbar. Two of them would be displayed in the beginning and in the
end, and would always retain their original dimensions. The third, middle
image, would be stretched to fit the needs, i.e. to show how long an
article really is. The middle image is stretched horizontally or vertically,
depending on the scrollbar orientation. All three images are in fact
optional, and the scrollbar thumb will behave according to which of them
are supplied; begin and end image always have fixed dimensions, middle
image is always stretched.

Titlebar can either be a single vertical bar for displaying text, or it
can consist of two visually separated parts. In the other case the two
parts must be vertically aligned (must have the same Y-position).

Statusbar is a periodically used window for displaying text. It shouldn't
be too narrow.

Clock is a small rectangular area, and serves for displaying digital clock.

Buttons are very specific objects. Each button has three states: normal
(when mouse cursor is off it), selected (when cursor is on it) and
pressed (when the cursor is on and the left mouse button is pressed).
Each of the states can have an image assigned. If the normal state has
no image, nothing is displayed - in this case the normal state of the
button can be drawn on the background image. Each image used for each
state can be animated (see below). The button images shouldn't be
transparent for speed reasons.

Note: some states can be not animated, for example: if only the normal
state is animated, the animation stops when the user selects the button.
This behavior can be reversed: the image animation may start if the
user selects the button.

Buttons serve multiple purposes. The most common actions performed by
buttons are: exit, help, music selection, back (goto previous article),
stop the music. The pictography of the images should clearly show
the purposes of the buttons.

Buttons can be used in creation of complex menus. In this case the buttons
can cover a wide area of a special background image. The page should be
then a small rectangle for displaying links - it would allow navigating
with keyboard, as buttons can only be accessed with mouse. The actions
of the buttons should also be indicated by their appearance (for example
coding corner button would look different than music corner button).

Animated images can be used for buttons and cursors. An animated image is
a sequence of images. The sequence is recorded in a special text file with
extension ANI. Each line in this file describes a frame. First goes the
number of periods for which the frame is displayed (each period has 50ms)
and then goes the filename (can include spaces). An example ANI file
would consist of:

1 frame1.bmp
2 frame 2.jpg
1 frame3.bmp

A background "theme" should also have a set of mouse cursors related to
it. Cursor images are typically small - each dimension should be max.
64 pixels, i.e. the dimensions range from 1x1 to 64x64 and do no have
to be rectangular. Each cursor should have a corresponding transparency
mask. The following cursors can exist:
 - normal, typically an arrow,
 - scrollup, typically an open hand, used upon the scrollbar,
 - scrolldown (optional), typically a closed hand, used when dragging
   the scrollbar thumb,
 - linkup, typically a hand with a pointing finger, used upon links,
 - linkdown (optional), used when left mouse button is pressed over a link,
 - buttonup (optional), used upon a button (selected state),
 - buttondown (optional), used when left clicking a button (pressed state),
 - back (optional), used when holding right mouse button,
 - busy, used when loading an article,
 - four arrows: up, down, left and right, used when the mouse cursor
   reaches a corresponding edge of the screen - indicate auto-scrolling.
The optional cursors have been marked. All other cursor should exist
(though this is not obligatory). The cursors may change when the background
changes. The "back" cursor is not animated.

An issue of a magazine can have multiple background images. Single
articles can be viewed with several different backgrounds. The backgrounds
can change with the sections of the magazine. The section backgrounds
can differ between by only a logo (not necessarily animated), for example.
If only a part of a background image changes, there can be used an overlay
image (optionally semi-transparent) which will cover part of the background
image.

OK. Now the rest relies upon your invention.

If you have any doubts, mail me: chris@dragan.name

Chris Dragan

			 Panorama 2 Redactor's Guide

   Panorama 2 bases on the architecture worked out in Panorama Pro, but unlike
the Pro version, it doesn't conform to the original Panorama formatting
syntax. For the end-user this doesn't mean any change in the controlling
capabilities, but the editors are provided with yet more powerful, clean and
flexible formatting engine.

   Like before, the basis is a *.dat file. This file, called container,
is a RAR archive and contains all files needed in an issue of a magazine.
The container can be optionally encrypted. Thanks to incompatibility with
the older versions, the encryption algorithm has slightly changed, and it
is now yet safer, of course provided that the encryption utility is not
spread.

   Not all files need to reside in the container. Especially external music
files are handled by the engine. There is also a /loadtext switch which
allows overriding the main article with an external one.

   File types are distinguished by their extensions. Typically, the following
extensions are recognized:
 - txt - articles,
 - jpg - JPEG images,
 - bmp - Windows BMP images, 1, 4, 8 or 24-bit,
 - msk - image masks in form of Windows BMP 1-bit images,
 - ani - animated image lists,
 - ttf - TrueType font libraries,
 - wav - sounds, also can be treated as music files,
 - xm, it, s3m, mod, mo3 - music files (modules),
 - mp3, ogg - MP3 music files,
 - htm - headers and footers for article saving.

   As container is a RAR archive, it can contain files packed with directory
structure. All references to files that reside within subdirectories of this
tree must include the subdirectory paths.

   Articles consist of typical text and control tokens. Text is split by the
formatting engine into separate words. Whitespace characters (spaces,
tabs, end-of-lines) are ignored, except in preformatted sections where
these characters are treated like regular text.

   Control tokens are similar to HTML tags. The control token syntax is:
	<tag modifier="value" modifier="value">
The following rules apply to control tokens:
 - Tag word consists of letters, digits and other non-space characters.
   However the first character of this word is always a letter, a slash "/",
   "!" sign or "?" sign.
 - There cannot be any whitespace characters between the opening "<" sign and
   the tag word.
 - Unrecognized tag words (control tokens) are ignored and may be used for
   HTML compatibility (articles are saved to disk in HTML).
 - There can be multiple white spaces between modifiers, values, ">" sign
   and the tag word.
 - The equal signs "=" are optional and they are treated as whitespaces.
 - Except values of modifiers which specify text to be shown to the user,
   tag words, modifiers and values are case insensitive.
 - Values do not require to be delimited by doublequota " signs. If these
   signs are used, all spaces between them are valid and tab characters
   are expanded to 8-character boundary (textline-relative). Strings which
   contain spaces within must be between doublequotas.
 - Boolean modifiers do not have values.
 - The order of modifiers is not important, however if there are two
   the same modifiers, only the first one is interpreted. Therefore you
   should be careful when using values that are the same as modifiers names
   (this concerns only values not within doublequotas "").

   To avoid problems with special characters, the following special tokens
may be used in text and in string values:
 - &lt; - replaces "<", useful when a letter follows the less sign,
 - &gt; - replaces ">", useful in values not delimited by doublequotas,
 - &quot; - replaces doublequota " sign, useful in string values,
 - &emp; - replaces "&", useful when simulating special tokens itselves.

   There are the following five types of values:
 - strings, usually case insensitive (there are exceptions),
 - numbers, positive or negative,
 - percents, positive numbers or percent values (e.g. "99%"),
 - colors,
 - no value - simply, a modifier with no value is a boolean modifier
   that indicates true if it exists and false if it does not exist.

   The control tokens reference below refers to value types as AAA for
strings, NNN for numbers, PPP for percents and CCC for colors.

   Color values can be in one of three forms:
 - actual colors - six hexadecimal digits indicating color components
   red, green and blue - RRGGBB,
 - special value "none" indicating no color (or transparent color),
 - decimal palette reference/index, ranging from 0 through 255.

   config.txt, also called the configuration article, is a special type
of article. All text in this file is ignored and may serve as comment.
The control tokens in this file describe overall issue layout. The file
must reside in the root directory in the compressed directory tree.

   There are three main topics that describe an issue, and that have been
introduced in Panorama 2: themes, schemes and styles. What arranges the
look of issues, are backgrounds. A background consists of a background
image, a set of small overlay images (optional, currently only one supported),
and objects visible on the background. One of such objects is the page -
the rectangle within which articles are displayed. Each article can have
a set of backgrounds, called background slots. The end-user is allowed to
choose between those slots, and he can view articles using different, chosen
by him backgrounds. Articles can have unique single backgrounds or entire
background sets.

   Backgrounds are defined in config.txt as themes. A theme consists not
only of a background, but also of sounds, cursors and a palette attached
to it. A set of backgrounds is called scheme. Schemes consist of slots to
which backgrounds/themes are assigned. In the beginning of each article
a scheme is applied, so the article has a set of views in which the
user can view it.

   Each theme has a unique color palette. In different places colors can
refer to this palette. So if background slot changes, the text can
be displayed using different colors. This is a very useful feature.

   Styles allow the editor to group font parameters and to use them in
an easy and fast manner.

config.txt-specific control tokens
----------------------------------

   The following control tokens are valid only in config.txt. They
describe overall issue parameters.

<parameters main=AAA help=AAA width=NNN height=NNN open=AAA close=AAA
	    fading=NNN immsong compatible=AAA>
   Specifies general issue parameters.
   "main" specifies name of the article that will be displayed as the
      first. If this modifier is not found, a default name "main.txt" is used.
   "help" specifies name of the article that will appear when the user
      requests help (typically presses F1 key). Default is "help.txt".
   "width" and "height" specify video mode resolution. Default resolution
      is 640x480. You should be careful with this setting, because when your
      resolution won't match any physical resolution, the user will be able
      to run the program only in windowed mode.
   "open" and "close" specify opening and closing image lists. These
      lists are displayed at the startup and shutdown, respectively.
      See image lists below.
   "fading" specifies the duration of cross-fading effect, in milliseconds.
      Default value is 1024.
   "immsong" specifies that if there is no opening image list music, the
      default song will be played during the opening image list is displayed.
   "compatible" string informs the engine that the container is compatible
      with extended themes that have the same keyword used.

<imagelist name=AAA song=AAA>
   Starts an image list. The name is required. The song to play during
      the image list is displayed is optional.

<image file=AAA time=NNN>
   A subsequent image in the image list. This control token may be used
      only between <imagelist> and </imagelist>. "file" specifies image
      filename (must exist) and "time" specifies how long the image is to
      be displayed, in milliseconds. Default value for "time" is 7000.
      When calculating the duration of displaying an entire image list,
      you should take into account the duration of cross-fading effect,
      which is optional and can be disabled by the user.

</imagelist>
   Closes an image list.

<fontstyle name=AAA inherit=AAA face=AAA height=NNN charset=AAA color=CCC
	   b i u spacing=NNN>
   Defines a font style.
   "name" specifies the style name used later. Required.
   "inherit" specifies a font style already defined, from which the
      parameters are inherited before being set to the specified
      ones. Note that "b", "i" and "u" parameters are not inherited.
   "face" specifies font face. Case insensitive. Default is "arial".
   "height" specifies requested font height in pixels. Default is 14.
   "charset" specifies charaster set. Existing character sets are:
      d - default, o - OEM, e - Eastern Europe, r - Russian, t - Turkish,
      g - Greek. Default is... default. The value is case insensitive
      and can have multiple characters, but only the first is interpreted.
      It is not guaranteed that all browser versions for all operating
      systems will support this parameter. Some operating systems may also
      support other character maps, so be careful with this modifier.
   "b", "i", "u" are bold, italic and underline, respectively. Optional.
      Be careful when inheriting from fonts with these parameters, since
      these are the only ones that are not inherited.
   "spacing" specifies additional spacing above the text, in pixels. Default
      is 0.

<theme name=AAA image=AAA inherit=AAA findcolor=CCC>
   Starts a new theme. "name" is required and specifies theme name.
      "image" specifies image filename that will be used as a background
      image. Default value is "background.jpg".
   "inherit" is an optional modifier which specifies another theme
      from which the default values are inherited. The referenced theme
      must be already defined.
   "findcolor" specifies background color for text that is selected
      indicating a found word in an article.

</theme>
   Ends a theme. The modifiers that are valid between <theme> and </theme>
      are described below in a separate section.

<scheme name=AAA inherit=AAA>
   Starts a new scheme. The scheme name is required. "inherit" plays the
      same role as in <theme>.

</scheme>
   Closes a scheme. The modifiers that are valid between <scheme> and
      </scheme> are described below in a separate section.

<hotspot cursor=AAA x=NNN y=NNN>
   Specifies hotspot for an image that can be used as a cursor. By default
      the hotspot is at (0,0).

Theme definition
----------------

   The control tokens described below are valid only between <theme>
and </theme> control tokens.

<overlay image=AAA x=NNN y=NNN>
   Specifies an overlay image for the background. This feature
      reduces container size (parts of background images can be
      exchanged for different articles), but can slow down the
      drawing process.

<pal index=NNN color=CCC>
   Palette color. Each theme has a unique palette. The "color" value cannot
      be an index into a palette. If the "index" is not specified, the
      next index is used by default (if this is the first "pal" control
      token, 0 is used).

<page x=NNN y=NNN height=NNN>
   Specifies page rectangle. There is no "width" modifier in this control
      token, since width is specified in scheme. This rectangle is required.

<title x=NNN y=NNN width=NNN height=NNN font=AAA>
   Specifies titlebar rectangle. In this rectangle title and optionally
      author is displayed. "font" specifies font style name to use. The style
      does not have to be defined above.
   This rectangle and those below are optional.

<scroll x=NNN y=NNN width=NNN height=NNN horizontal vertical
	thumb=CCC begin=AAA middle=AAA end=AAA>
   Specifies scrollbar rectangle.
   "horizontal" or "vertical" specifies scrollbar orientation (don't specify
      both at once). By default the scrollbar is vertical. The duality of
      these modifiers allows overriding the previous setting when inheriting
      from another theme.
   "thumb" specifies color of a colored scrollbar's thumb.
   "begin", "middle" and "end" specify images of a bitmapped scrollbar's
      thumb.

<status x=NNN y=NNN width=NNN height=NNN font=AAA>
   Specifies statusbar rectangle. See <title>.

<clock x=NNN y=NNN width=NNN height=NNN font=AAA>
   Specifies clock rectangle.

<button x=NNN y=NNN width=NNN height=NNN normal=AAA selected=AAA pressed=AAA
	command=AAA param=AAA desc=AAA effect=NNN song=NNN>
   Specifies a button rectangle. There can be multiple buttons.
   "normal", "selected" and "pressed" specify images for corresponding
      button states. Some of these images can be optionally animated.
   "command" specifies a command to perform and "param" specifies
      the command's parameter. See <link> for more info.
   "desc" is a text to be displayed on the statusbar while the
      button is selected.
   "effect" is valid only for "a" and "r" commands and specifies the
      effect to perform (see the list of effects).
   "song" specifies song slot to play upon release of the button.
   "sounddown" and "soundup" specify sounds to play on button pressure and
      release.
   All modifiers are optional. The button may be a static image, for instance.
   The dimensions of the images should be equal to the specified dimensions,
      i.e. "width" and "height", which are used for mouse pointing only.
      No checks are performed, so the images can theoretically cover a
      different area than the one specified.

<cursors normal=AAA scrollup=AAA scrolldown=AAA linkup=AAA linkdown=AAA
	 buttonup=AAA buttondown=AAA back=AAA busy=AAA
	 up=AAA down=AAA left=AAA right=AAA>
   Specifies cursors images used with the theme.
   "normal" - normal cursor, e.g. an arrow.
   "scrollup", "scrolldown" - over a scrollbar. "scrolldown" when left
      mouse button is pressed.
   "linkup", "linkdown" - over a link.
   "buttonup", "buttondown" - over a button.
   "back" - while right mouse button is pressed.
   "busy" - while loading an article or theme.
   "up", "down", "left" and "right" - when the cursor reaches a corresponding
      edge of the screen.
   The default cursors may be in the root directory in the container.
      They are bitmaps and their names are the same as the corresponding
      modifiers (for example scrollup.bmp).

<sounds enter=AAA back=AAA quit=AAA link=AAA save=AAA line=AAA page=AAA
	buttondown=AAA buttonup=AAA>
   Specifies sounds used in certain actions: entering and leaving an
      aritcle, quitting, selecting a link, saving, scrolling by a line and
      page and pressing and releasing a button. The naming convention of
      default sounds is the same as for cursors (except that extension
      wav applies).

<movie file=AAA x=NNN y=NNN width=NNN height=NNN>
   Specifies a name (relative to the program's directory) of a file containing
      a movie. This movie will be played in a rectangle "x,y,width,height".
      There can be only one movie per theme. The frames of the movie are
      fit into the entered rectangle. The music playback is paused while
      playing the movie (i.e. while the article with the theme containing
      the movie is being displayed).

Scheme definition
-----------------

   The control tokens described below are valid only between <scheme>
and </scheme> control tokens.

<background id=NNN theme=AAA>
   Specifies a theme for a background slot. "id" specifies slot number
      (1..9). If "id" does not exist, the next value is used (first is 1).

<song id=NNN file=AAA loop noloop>
   Specifies a song filename for a song slot. "id" works like in
      <background>. Valid "id" values range from 0 (custom song) through 9.
      The 9th song slot is not available to the end-user
      and can be used for a hidden song.
   "loop" modifier specifies that the song will be looped instead of
      conforming to the current play mode behavior.
   "noloop" has the opposite meaning: it prevents a song from being looped,
      even if the current playback mode is looping.

<page width=NNN columns=NNN colspacing=NNN>
   Specifes page width for all background slots. Also specifies the number
      of columns and the spacing between them. 0 columns (the default)
      gives a normal contiguous article; 1 column gives a contiguous
      article with position always aligned to page height; 2 to 10 gives
      an article with columns.

<window title=AAA>
   Specifies default window title. Can be overriden in the article.

<scroll line=NNN page=NNN speed=NNN tolerance=NNN edgedelay=NNN autoscroll>
   Specifies scrolling parameters.
   "line" specifies the number of pixels by which the article will be
      scrolled when using line-scrolling. Default value is 20.
   "page" specifies the number of pixels less which the article will be
      scrolled when using page-scrolling. Default value is 20.
   Both "line" and "page" are ignored if the number of "columns" is
      greater than 0.
   "speed" specifies the duration of smooth-scrolling effect, in milliseconds.
      Default value is 200.
   "tolerance" specifies width of the border in which scrolling with
      mouse can take place.
   "edgedelay" is the number of milliseconds to wait before autoscrolling,
      when the mouse is at an edge of the screen and the left mouse button
      is pressed. Default value is 500.
   "autoscroll" enables automatical scrolling - when the cursor reaches an
      edge the article is automatically scrolled, i.e. there is no need
      to press left mouse button.

<hr color=CCC>
   Specifies default color for horizontal rulers.

<font style=AAA>
   Specifies default font style. Default is arial,14,d.

<p fl=NNN spacing=NNN align=AAA>
   Specifies default paragraph parameters.

<link color=CCC selcolor=CCC viscolor=CCC tolerance=NNN>
   Specifies default link colors.
   "tolerance" specifies size of the border of link invisibility.
      (When a link is only partially visible it is treated as
      invisible. This is important especially when very large font
      is used for links.)

<html header=AAA footer=AAA>
   HTML saving header and footer. Default values are "header.htm" and
      "footer.htm", respectively.

Article control tokens
----------------------

   The following control tokens are valid in articles. They are ignored
in config.txt.

<article scheme=AAA title=AAA author=AAA window=AAA movie=AAA nosave noscan>
   Specifies article attributes. This control token must be used at
      the beginning of each article. All control tokens and text before
      this control token are ignored and treated as comment. If this
      control token appears once again in the article, it is ignored.
   "scheme" specifies article scheme (required).
   "title" specifies article title.
   "author" specifies article author.
   "window" specifies override window title.
   "movie" specifies movie file (used if any theme contains a movie area).
   "nosave" specifies that the article cannot be saved.
   "noscan" specifies that the article cannot be scanned.
   All modifiers except "scheme" are optional.

<font style=AAA face=AAA height=NNN charset=AAA color=CCC spacing=NNN>
   Starts a new font. Parameters like in style definition.

</font>
   Closes current font, i.e. pops a font from the font stack.

<i> </i> <b> </b> <u> </u>
   Open and close properties: italic, bold and underline, respectively.

<center> </center>
   Begin and end centered text.

<pre> </pre>
   Begin and end preformatted text.

<br> <brs>
   Line break and soft line break. Soft line break's behavior differs
   from "br"'s only in justified paragraphs. Line broken with "br" in
   justified paragraph looks like broken in left-aligned paragraph,
   while broken with "brs" is fit in the width.

<p fl=NNN spacing=NNN align=AAA>
   Starts a new paragraph.
   "fl" - first line shift (all lines but the first are shifted if negative).
   "spacing" - additional spacing before paragraph, in pixels.
      Instead of "spacing", "sp" can be used as an abbreviation.
   "align" - l, r, c or j (left, right, centered or justified, respectively).

<space width=NNN>
   Inserts a space. Width is in pixels.

<hr color=CCC>
   Horizontal ruler. Color is optional.

<image file=AAA width=NNN height=NNN align=AAA
       left=NNN top=NNN right=NNN bottom=NNN>
   Inserts an image.
   "width" and "height" specify the dimensions to which the image
      will be scaled. If these modifiers are not used, original
      image dimensions take effect. The use of these modifiers
      causes stretching the image, instead of blitting. Stretching
      is usually slower, thus these modifiers should be used with
      special care.
   "align" - l, t, r or b (left, top, right or bottom, respectively).
      Left and right alignment puts the image into the margins.
      Default is bottom alignment.
   "left", "top", "right" and "bottom" specify additional spacing around
      the image.

<imagemap file=AAA width=NNN height=NNN align=AAA
	  left=NNN top=NNN right=NNN bottom=NNN>
   Starts an image map. The token values are exactly the same as
      for "image".

<link command|article|external=AAA param=AAA desc=AAA effect=NNN song=NNN
      sound=AAA selcolor=CCC ns nopush nosound
      x=NNN y=NNN width=NNN height=NNN>
   Specifies a link within image map. Can be used only between <imagemap>
      and </imagemap>. See <link> below.

</imagemap>
   Closes an image map. All text and control tokens (except <link>) are
      ignored between <imagemap> and </imagemap>.

<table width=PPP border=CCC shadow=CCC hspacing=NNN vspacing=NNN
       outspacing=NNN>
   Starts a table. Tables can be nested.
   "width" is either a value in pixels or percents.
   "border" specifies table border color. No border if not specified.
   "shadow" specifies the other border color. "border" used if not specifed.
   "hspacing", "vspacing" and "outspacing" specify additional spacing,
      in pixels, between cells (horizontal), between rows (vertical) and
      around the table, respectively. Default values are: 5,5,0, respectively.

<row height=NNN>
   Starts a new row. "height" is the minimal height.

<cell width=PPP br>
   Starts a new cell. "br" specifies that the cell will be automatically
      broken if it is exceeded.

</table>
   Ends (closes) a table.

<link command|article|external=AAA param=AAA desc=AAA effect=NNN song=NNN
      sound=AAA color=CCC selcolor=CCC viscolor=CCC u nu ns nopush nosound>
   Starts a new link. If an open link already exists, it is closed.
   "command" specifies a command to perform and "param" specifies the
      command parameter. If the command selects a song slot the "song"
      modifier is ignored, otherwise the song selected by "song" is
      played simultaneously to executing the command. For a brief
      review of commands check the end of this document.
   "article" can be used instead of an "a" command and "external" can be
      used instead of "e" command ("param" is ignored in this case).
      If both "article" and "external" or "command" are encountered, "article"
      is used. If both "external" and "command" are encountered, "external"
      is used.
   "effect" is valid for article and commands "a" and "r" and specifies
      the effect to perform (see the list of effects).
   "song" specifies song slot to play. Valid values 0..9 (0 is custom song).
   "sound" a sound to be played upon link activation. Use carefully - do not
      exaggerate with the amount of sounds, as they are all currently residing
      in memory, i.e. they are freed when exiting the program.
   "desc" is a text for statusbar.
   "color" is default link color.
   "selcolor" is used when the link was selected. none indicates the default
      color.
   "viscolor" is used only if this is a link to an article, and if the
      aritcle was visited. none specifies default color.
   "u" - the link will always be underlined.
   "nu" - the link will never be underlined.
   "ns" - the cursor will never change shape over the link.
   "nopush" - the previous article will be removed upon entry. Valid only
      with "article". Useful for creating menus (and then nice with
      "effect=0").
   "nosound" - no sound will ever be played when the link is selected.

</link>
   Closes a link.

Images and masks
----------------

   There are two types of images supported: JPEG and Windows BMP. The
types are distinguished by file extensions: JPEG images have extension
.jpg while Windows BMP images have extension .bmp. There are four types
of Windows BMP images allowed: 1-bit (2-color), 4-bit (16-color),
8-bit (256-color) and 24-bit (true color). The BMP images cannot be
RLE-compressed.

   An image can be semi-transparent, i.e. it may have transparent areas.
A transparent area on an image is indicated by a black color. But some
non-transparent areas can also be black. To distinguish transparent and
opaque black areas, an additional file/image is used, which is called
image mask. An image mask has extension .msk and it is a 1-bit Windows
BMP. No other formats for masks are supported. The filename of a mask
must be the same as the filename of an image it corresponds to (except
for the extension). The transparent areas in an image mask must be white,
while the opaque areas must be black. The following table shows the
relations:

+------------------+---------------------------+--------------------+
|		   | image		       | corresponding mask |
+------------------+---------------------------+--------------------+
| extension	   | .jpg or .bmp	       | .msk		    |
| valid format	   | JPEG BMP1 BMP4 BMP8 BMP24 | BMP1		    |
| example	   | dummy.bmp		       | dummy.msk	    |
| opaque area	   | ANY color		       | black color	    |
| transparent area | black color	       | white color	    |
+------------------+---------------------------+--------------------+

Animated images
---------------

   Animated images are stored in files with extension ANI. This is not
any special format - an ANI file is simply a text file containing a list
of images used as frames. Each frame is stored in a separate line.
Each line in an ANI file has the following format:
   <length> <image>
<length> is the number of periods for which the frame is displayed (one period
is 50ms) and <image> is the image filename. There should be at least one
space between the number and the image name. The image filename can include
spaces. Example:

<start-of-example-file>
1 frame1.bmp
2 frame 2.jpg
1   frame3.bmp
<end-of-example>

In the example, the first frame (frame1.bmp) is displayed for 50ms, the second
frame ("frame 2.jpg") for 100ms (2*50ms) and the third frame for 50ms.

   Animated images can be used for buttons and mouse cursors.

   It is also possible to enter the <length> as a range, for example:
4-8 frame1.bmp
The actual <length> will be then randomly chosen from the selected range.
Note: there must be no space before and after the '-' sign.

   All valid <length> values must be in range 1 through 999.

Commands
--------

   Commands are used in links and buttons and they perform some internal
actions, like quitting or volume adjusting, for example. Here is a list
of available commands:

+----------+-----------------------------------+
| command  | meaning                           |
+----------+-----------------------------------+
| a	*      | enter article                     |
| b        | go back (does not quit)           |
| e	*      | execute an external action        |
| f        | activate article search           |
| h        | display help                      |
| i	*      | display image list                |
| linedown | scroll line down                  |
| lineup   | scroll line up                    |
| n        | print article                     |
| p#       | play slot # (#=0..9, 0 is custom user song and 9 is hidden song)
| pagedown | scroll page down                  |
| pageup   | scroll page up                    |
| pn	   | play next song                    |
| pp	   | play previous song                |
| ps	   | stop playback                     |
| q        | quit                              |
| r	*      | replace article (nopush)	       |
| s        | save article (if possible)	       |
| s#	   | select background slot # (#=1..9) |
| vd	   | adjust volume down                |
| vu	   | adjust volume up                  |
+----------+-----------------------------------+

The star sign "*" indicates that the command requires a "param" modifier
which specifies the command parameter. For "a" and "r" it is an article to enter,
for "e" it is a system action (e.g. "http://chris.dragan.name/" starts
a web browser on a website and "mailto:chris@dragan.name" opens a
mail composer) and for "i" it is a name of the imagelist (defined in
config.txt).

Effects
-------

   Effects are performed when entering/leaving articles or changing
backgrounds, and only if the overall effects are turned on. One can
select a particular effect to be performed upon entry to an article,
with the "effect" modifier of "button" and "link" control tokens.
Currently there are only two effects available: 0 (means no effect
at all) and 1 (crossfading). The actual effects support may depend
on the version of the browser.

Key notes
---------

Use at least one valid theme for each used scheme. Always set a valid
scheme for an article.

If you use multiple backgrounds in articles with aligned position or
with columns, set the backgrounds' heights to the same value. Of course
unless you have a purpose in different heights.

Avoid partial coverage of theme contents (e.g. covering a scrollbar by
the article rectangle/page).

In multi-column articles don't use tokens that are larger than the page height
and try to keep tables with visible borders entirely inside text pages.
Generally use tables in multi-column articles carefully. Some browser
versions, perhaps in other operating systems, may render multi-column
articles in a very different fashion, and tables may cause undesirable
results.

Try not to use too long strings and images, so that they do not exceed
page boundaries.

Use the /loadtext switch (e.g. "panorama /loadtext myarticle.txt") to load
articles during formatting. This switch allows you to check how the articles
look without actually compressing them into a container. Note that you still
must have a valid container with a valid scheme in current directory while
doing this.

The F12 key reloads articles. This feature is very useful in conjunction with
the /loadtext commandline switch. Thanks to the F12 key feature you don't have
to restart Panorama when you edit and save the article you have currently
loaded.

Creating issues of your own magazine
------------------------------------

The first thing you have to do to create containers for your magazine, is to
learn formatting articles and creating config.txt. When you will be ready,
contact me - you will get an encryption utility for your magazine, and your
magazine will be added to the database, so by default the main window of the
program will be named by your mag.

Before releasing any issue, you will have to check whether there is a newer
version of the browser, typically by visiting my website. You will also have
to replace the icon in the file (unless you want to use the default icon).
You can also ask me to do this for you. Remember, that the icons must be in
a special format. The most important is that they use the Windows palette,
or some Windows version may not display the icon(s) at all. (This is yet
different under other supported operating systems.)

If this is not a problem for you, I would like to be notified of any newer
issues of your mag, which base on Panorama. Perhaps you have a magazine
distribution mailinglist, which serves for sending new issues - in such case
just tell me how to subscribe.

If your magazine isn't free, i.e. the readers must pay for the issues, you
will have to negotiate with me the conditions of using the browser. In any
case I want to be notified of using Panorama.

Movies
------

Although primarily not designed for multiple media playback, Panorama is
capable of playing movies (this currently concerns only Windows version).
In a special theme you must create a movie area using the "movie" control
token. In this token you can enter default movie to be played in this
area. Avoid covering the movie area with other areas (page, titlebar, etc.)
The actual movie to be played can be entered in the "article" control
token.

Currently the movie is always scaled to the given rectangle, and is
always looping.

If the movie path you entered begins with a slash "/" or backslash "\",
it is appended to the movie path read from the configuration. The Windows
version uses value "Movie Path" under registry key
   HKEY_CURRENT_USER\Software\Chris Dragan\Panorama
If you set this value to e.g. "C:\Movies" and you enter a movie "\koko.avi"
in the "article" control token, the entire movie pathname will be
"C:\Movies\koko.avi" and this movie will be played.

If the registry value is empty, the root directory of the current drive
is used. (Which one is the current depends on where you started Panorama
from).

Extended themes (advanced)
--------------------------

!PRELIMINARY!

With the inclusion of multiple background themes per container a need has
arisen for downloadable external themes.

Extended themes reside in theme containers. A theme container is like
a typical container, with the only exception that it has the "*.the"
extension.

The config.txt file in a theme container has the following three types
of token blocks:
 - <parameters compatible=AAA> to tell with what type of containers the
   theme pack is compatible. The containers must also have this keyword
   in their <parameters> control token in config.txt. Another obvious
   assumption is that the theme container encryption is the same as
   the encryption of the compatible container. The theme container does
   not have to be necessarily encrypted, though.
 - <hotspot cursor=AAA x=NNN y=NNN> for cursors included in the theme pack.
 - <theme name=AAA image=AAA inherit=AAA findcolor=CCC> ... </theme> blocks.
   You can place as many theme blocks as you want, but remeber that you
   can inherit only from themes existing in the original container. You can
   reuse the images and other goodies present in the original container, or
   use the resources supplied with the theme pack. Beware of taking filenames
   already used in the original container or other theme packs - for this
   reason it may be a good idea to compress a theme pack with its own
   unique directory. The only exception to this rule is the config.txt file
   which must be present in the root directory of every theme pack.

Within a <theme> block you can use all control tokens described for the
container's config.txt. You can also supply images and sounds in a theme
pack at your will. To make the actual theme pack working, however, you
have to use a special <scheme> control token for each theme, perhaps even
for several times.

<scheme name=AAA background=NNN>
   Sets a background slot of a particular scheme in a container to the
      currenly defined theme. You can use the <scheme> token for several
      times, to set up the theme for several background slots and for
      several schemes. Note, however, that such background slot will not
      be inherited by subsequent schemes (and themes too, since themes can
      inherit only from the original container's themes).\
   You don't have to necessarily use unoccupied background slots - you can
      override existing ones; on purpose, of course. You can also override
      the same background slot of a scheme from several different theme
      packs, and have fun watching what happens if all are placed at once
      in the directory with the container.

Contact Information
-------------------

e-mail: chris@dragan.name
WWW:	chris.dragan.name
