Last updated: December 23, 2003
HighWire documentation
This software is provided ‘as-is’, without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the
use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it freely,
subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software in a
product, an acknowledgment in the product documentation would be appreciated
but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source
distribution.
Anyone uses bits of the code for other reasons is welcome to, as long as
they specifically state that their work is based, in part, on the Project
HighWire source release by Robert Goldsmith.
This is taken from the HighWire site written by the original author, Robert
Goldsmith.
For those of you who have not heard, HighWire is a new web browser. It has been
in ‘development’ for over a year. I started HighWire in what I considered a
feeble attempt to discourage me from moaning about CAB. I figured that when I
proved my code was vastly slower than CAB at parsing and rendering a page I
would give up and accept that browsing on my Falcon would always be slow.
Things did not turn out how I expected...
I think the big problem with my plan was that, unbeknownst to me at the
time, I had had a couple of rather good ideas. The result is HighWire.
Ok, so can I download it? You cannot write a web-browser in a month. I know,
I tried. :) HighWire is still very much in development.
Originally HighWire could do the following:
- Load in an HTML 3.2 page hardcoded into the source
- Display this page multiple times in hard coded frames
- Redraw and scroll the frames and resize the window
- Quit
Where we have gone with the project ...
New items since it went open source:
- Frameset Support (90%)
- Tables (98%)
- HTML 4 compliant (90%)
- HTML forms (20%)
- Online OVLs for mintnet, sting and support for iconnect
- Colour support (mapped to current system palette)
- Graphics (95%) - Now loads HTML files with Gifs, Jpgs and Pngs (50%) -
colors are perfect in mono/256/32k/64k modes - other modes (24/32bit)
need adjusting.
- Files (Graphics, HTMLs, Docs etc.) can be dragged to a Highwire window
where they will be displayed.
- Implementation of memory caching of images avoids multiple loading of same image. The pseudo URI "about:cache" now shows detailed information about cached images.
- GEM Version with drop-down menues
- GemScript support
- Iconify/uniconify window
- HighWire now loads sample HTML files from a folder named ‘HTML’
- Sound support
- International Character Set support
- Unicode characters up to U+FFFD with NVDI 4 and TrueType fonts
- Scroll Window using arrow keys
- A working implementation of hyperlinks (text and image)
- File Selector support
- Display text files using PRE style font selection
- CSS in HTML tabs (e.g. converted by HTMLtidy)
- Number of windows only restricted by operating system
- Frame Scroll controls are implemented now, also support of right mouse button.
- Real time scrolling
- Background Scrolling is now working
- Highwire now works with scroll mice when the program MWheel is being used.
- The program My PDF has been added to the Highwire package and is currently under development (PDF support 10%)
- Several Hotkeys added
- Extended menu bar, the current charset encoding can be seen and changed at menu title "View". Also de/increasing of the display font is available there.
- Menu entry "info.." will show now some basic information about the active frame.
- Improved algorithm for the line breaking to avoid splitting of text at wrong positions
- Now buttons of forms are reacting to mouse clicks.
- HTTP protcol layer reworked, is faster now and works for much more servers.
- The problem of files with long names no loaded at some Magic versions (eg. *html) is solved now.
- Added a workaround to have it working under Geneva again.
- Reworked code to avoid a flickering mouse pointer when using Highwire.
- Navigation Bar added with the traditional browser buttons: Forward, Back, Home, Reload, Stop and URL Edit Field.
- When holding down the Forward and Back buttons a bit longer, a popup appears that allows selection of any URL stored in History as well as the Last and Next URLs.
- Using the commands, ^C/^V, copying between the Navigation Bar's edit field and the Clipboard can be done.
- The Navigation Bar can be hidden or shown by holding down the ALT key while clicking the window's Close button.
- Initial implementation of the Ovl's for different TCP/IP stack support has been added.
- Form support has been improved with the support of Selection List.
- Calulation of table width and cells has been improved.
- New keyword FONT_MINSIZE to define a minimum font height in points, eg. for (font size = 1) (see example.cfg\highwire.cfg for explanation).
- Nw menu entry under "Option" to have frames always resizable and scrollbars if necessary, even if the HTML defines anything else there. The default
is off, but can be set with the keyword FORCE_FRAMECTRL = 1.
- The cfg file now supports three new keywords concerning the cache: 1) CACHEDIR which lets the user choose where Highwire will define a directory for the storage of visited pages/images,
2) CACHEMEM=(kbytes) to limit the amount of memory cached images (default is now 100k) which should help to prevent Highwire from running out of
memory due to always storing every image ever loaded and 3) CACHEDSK which sets limits for filling up the cache in order to prevent blowing up hard drives. (eg. CACHEDSK =
8192 1000 means to use only 8192 of disk space, but not more than 1000 files).
- More functionality for the redo button: Holding down the ALT key clears now the whole cache. Additional holding down the SHIFT key will avoid forcing
a page reload then.
It is currently missing:
- User interface
- Java/Javascript support
- Use of internet clients
- External viewer support
- Lots more...
So why all the fuss?
Well, HighWire can load in, parse and render an HTML page in full 16-bit
fonts (for all the ‘strange’ characters such as þ) in about half the time of
CAB. Furthermore, once a page is pre-rendered (before the first time it is
displayed) it does not need further processing, making redraws and window
resizes much much faster. On a Hades machine the code was tested on, the page
render including font sizes, centering and lists redrew correctly in real time
(with a slight flicker...) as the window was resized.
- HighWire code
- HighWire documentation
- Fontlist project
System requirements:
- Multitasking (preemptive multitasking) Atari OS – MagiC or MiNT
- NVDI 3 or SpeedoGDOS
- Speedo fonts with Bitstream International Character Set (BICS)
Hotkeys:
- Control + I - About HighWire alert
- Control + O - Open file selector
- Control + R - Reload
- Control + Q - Quit HighWire
- Control + V - Cycle window
- Control + W - Cycle window
- Control + TAB - Close frames
- 1: Reload with default character set ISO/IEC 8859-1, Latin-1, Windows
codepage 1252 (This is the default character set for a HTML browser.)
- 2: Reload with default character set ISO/IEC 8859-2, Latin-2
- A: Reload with default character set Atari ST system font
- U: Reload with default encoding UTF-8, Unicode
- Tab: Cycle Frames
- +: Reload with increased font size
- –: Reload with decreased font size
- Help, F1 - Help: Help
- F5 - Reload
- F7 - Toggle logging to console
- F8 - Toggle pictures or alternative text
- Undo - Go back in file history (+Shift: go forward)
- Arrow keys: Scroll frame
The scroll elements support the right mouse button
File types supported:
- HTML files (8-bit coded)
- GIF images
- JPG images
- PNG images (not yet complete: no interlaced pics at the moment)
- Plain text (8-bit and 16-bit coded)
Configuration
- At present highwire.cfg consists mainly of font information. Change manually, or better with the setup tool FontList.
FontList
Coded by Lp and GokMasE for the HighWire Project
FontList is a small utility to change the font settings in the HighWire
configuration file.
Installation
Keep this binary in the HighWire directory. (Same directory as the
highwire.cfg file.)
Usage
As of FontList 1.11 a default config file is created at launch time,
unless an existing file is located in FontList's work directory.
Also note that if the font setting you are seeking to change is not
present (or not activated) in the old config file, FontList will add
the new setting to the end of the config.
Select 1 (there can be only one) of the fonts, then use
menubar to decide what setting in HighWire should be affected.
You can also right click on any of the fonts to open up a popup menu
and select a text style to link the current font ID to.
Note that changes are written to HighWire configuration file
instantly when you select an entry in either menu!
Another thing you can do, is select a number of fonts (hold down
CTRL) and later press CTRL + C. Then the prg will save a list of all
currently selected fonts to the clipboard.
CTRL + A selects / deselects all.
NOTE: When NVDI is installed, all non-speedo fonts are greyed out and
thus not selectable. The reason for this is that HighWire at this time
does not support other format than Speedo. However, if you wish to
play around with other fonts you can enable all listed fonts by
selecting ‘Allow non-speedo’ from menubar.
General Advice
It might be a good idea to keep a backup of latest working configuration
file.
Here are some of the HTML tags that HighWire supports:
Hopefully will be updated to list all supported tags.
- A
- CHARSET
- HREF
- ID
- NAME
- TARGET
- B (bold)
- BASE
- BASEFONT
- BGSOUND (IE proprietary)
- BIG
- BLOCKQUOTE
- BODY
- ALINK
- BGCOLOR
- LEFTMARGIN (IE Propietary)
- MARGINHEIGHT (NS proprietary)
- MARGINWIDTH (NS proprietary)
- TEXT
- TOPMARGIN (IE proprietary)
- BR
- C
- CENTER
- CITE
- CODE
- DD (DL definition)
- DEL
- DFN (instance definition)
- DIR
- DIV
- DL (definition lists)
- DT (DL term)
- EM
- EMBED
- FONT
- FORM
- FRAME
- MARGINHEIGHT
- MARGINWIDTH
- NAME
- SCROLLING
- SRC
- FRAMESET
- H (H1 - H6)
- ALIGN
- BGCOLOR (HW proprietary, CSS wrapper)
- COLOR (HW proprietary, CSS wrapper)
- HR
- ALIGN
- BCOLOR (HW proprietary, CSS wrapper)
- COLOR
- HEIGHT
- NOSHADE
- SIZE
- WIDTH
- HTML
- I (italics)
- IMG
- ALIGN
- ALT
- HEIGHT
- HSPACE
- SRC
- VSPACE
- WIDTH
- INPUT
- CHECKED
- MAXLENGTH
- SIZE
- TYPE ('BUTTON','CHECKBOX','FILE',HIDDEN','PASSWORD','RADIO',RESET','SUBMIT',TEXT')
- VALUE
- INS
- IOD (IOD4 proprietary)
- KBD
- LI (list item)
- LISTING
- MENU
- META
- CONTENT
- HTTP_EQUIV ('"CHARSET','REFRESH"')
- NOSCRIPT
- OL (numbered lists)
- P
- PLAINTEXT
- PRE
- Q
- S (strike through)
- SAMP
- SCRIPT (unused atm)
- SMALL
- STRIKE
- STRONG
- STYLE (unused atm)
- SUB
- SUP
- TABLE
- ALIGN
- BGCOLOR
- BORDER
- CELLPADDING
- CELLSPACING
- HEIGHT
- WIDTH
- TD (table data cell)
- ALIGN
- BGCOLOR
- COLSPAN
- HEIGHT
- ROWSPAN
- VALIGN
- WIDTH
- (TEXTAREA)
- TH (table header cell)
- ALIGN
- BGCOLOR
- COLSPAN
- HEIGHT
- ROWSPAN
- VALIGN
- WIDTH
- TITLE
- TR (table row)
- ALIGN
- BGCOLOR
- HEIGHT
- VALIGN
- TT (teletype font)
- U (underlined)
- UL (bulleted lists)
- VAR
- XMP
While HighWire won't directly use these at this point. Here are some useful
links for the HighWire project:
http://highwire.atari-users.net
- Place for most current downloads and information about the Highwire project.
HighWire Users mailing list
- A list for users to ask questions and report bugs.
HighWire Developer Mailing list
- A list for people interested in actively working on the project