
			 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 - music files (modules),
 - mp3 - 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).

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>
   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.

<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 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.
   "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.

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		      |
| p#	  | play slot # (#=0..9, 0 is custom user song and 9 is hidden song)
| 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://chrisdragan.org/" starts
a web browser on a website and "mailto:chris@chrisdragan.org" 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.

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.

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.

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@chrisdragan.org
WWW:	chrisdragan.org
