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: 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: - < - replaces "<", useful when a letter follows the less sign, - > - replaces ">", useful in values not delimited by doublequotas, - " - 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. 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. Starts an image list. The name is required. The song to play during the image list is displayed is optional. A subsequent image in the image list. This control token may be used only between and . "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. Closes an image list. 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. 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. Ends a theme. The modifiers that are valid between and are described below in a separate section. Starts a new scheme. The scheme name is required. "inherit" plays the same role as in . Closes a scheme. The modifiers that are valid between and are described below in a separate section. 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 and control tokens. 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. 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). Specifies page rectangle. There is no "width" modifier in this control token, since width is specified in scheme. This rectangle is required. 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