RISC OS Software RISC OS
http://www.svrsig.org/ software/RingBind.htm

RingBind

This is a utility for RISC OS which displays documentation as if it were a ring-bound file open on the desk.

It presents a view of the open document, allowing pages to be turned. Ind index tabs allow quick movement to the start of a new Section. The document type it recognises is 'Bound' (&1EB). A utility to convert PDF files to 'Bound' files is included with full instructions.

Opening the 'Bound' file '530Guide' results in this view. Clicking over a page corner with ADJUST shows an animated view of the page turning. Clicking with SELECT causes the page to move instantly without the animation.

The whole 'Bound' file is only loaded into memory if there is sufficient memory available. Otherwise only four of the available pages are loaded into memory as required. The slider bar gives access to any point in the file with a single clcik. The Chapter/Section/Sub-section arrows, shown below the display, move forward or backward to the start of end of the section, sub-section or chapter. Large 'Bound' files can be used on VRPC (or with Aemulor running) provided there is space to fit four pages in memory. An appropriate error message is given if not.

During animation two screen banks are used if memory is available to be allocated - if insufficient, the icon bar icon will show yellow or red and screen updating will be visible as flickering. Where dual screen banks are in use the invisible bank is updated and then the banks are swopped, which reduces flickering. A mode change with dual banks in use (e.g. f12, Enter) will terminate the animation. Pages which contain JPEGs would cause an error if plot with a skew - this error is trapped and plotting proceeds with no skew. The icon bar icon turns green or red to indicate this. During animation, the invisible screen bank is completely redrawn each time in case any windows are moved - if this were not done, one bank would show them in their original position.

Development History

Version 0.01 started as a bright idea on 14th December 2021. It used the application !DrawDis as a basis from which to start and by 30th December was at version 0.09 - still requiring a very large WimpSlot and choking if the screen mode was changed during animation. Pressing f12 and then ENTER didn't look too good. By 31st December version 0.10 would run in a 10MB WimpSlot and so would work on VRPC. Version 0.11 (03-Jan-2022) would suppress a second screen bank if there was insufficient memory, which would avoid the 'memory cannot be moved' error when reinstating a single bank. Version 0.15 (05-Jan-2022) would trap the error produced by DrawFile_Render if asked to skew a JPEG and would then animate it with no skew. Pressing SHIFT would also display with no skew. The utility to create a 'Bound' file from a PDF was also now included. Version 0.16 (12-Jan-2022) added debugging statements to screensave during an animation. The icon bar icon would also now change colour to indicate suppression of skew or second screen bank and also indicate whether the whole Bound file had been loaded or only the displayed pages. It was demonstrated at a Bristol User Group meeting later that day and a request was made for the background colour to be different. Version 0.20 (02-Dec-2024) added the focility to specify (in the !Run file) a different background colour. Version 0.22 added page to page links. Version 0.24 added icons to just below the title bar. Version 0.32 uses bit maps for the animation rendering the vector graphic source only once. Version 0.34 uses WimSlot memory more efficiently and now checks there is sufficient before trying to load a manual. Version 0.36 fixes a bug in message handling and clicking over the icon bar icon with a manual open on screen moves forward (ADJUST) or backward (SELECT) one page.

DrawFile_Render still behaves badly when asked to display text in an unknown font (i.e. one that was present when the Draw file was created but which is not on the machine now being used) - its error block is corrupted and it reports the error '(Number)' but it should render the text in a substitute font and produce no error. The substitute font it should use is, rather unhelpfully, the System font which renders at least twice the desired width, At present therefore I am careful to produce 'Bound' files using only the standard fonts.