home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / hensa / graphics / swiftjpeg / swiftjpeg_2 / !SwiftJPEG / !Help < prev    next >
Text File  |  1996-04-29  |  53KB  |  1,148 lines

  1.  
  2.  
  3.                             SwiftJPEG User Manual
  4.  
  5.  
  6.                  A fast JPEG viewer for RISC OS 3.5 or higher
  7.          Version 1.00 (25th April 1996) Copyright Hipposoft 1995,1996
  8.  
  9.  
  10. SwiftJPEG uses Acorn's SpriteExtend module in RISC OS 3.6 or higher, to allow
  11. access to the extremely fast JPEG display facilities of the operating system.
  12. Because the SpriteExtend module creates a 'Dynamic Area', a concept that did
  13. not exist before RISC OS 3.5, this application will only work on Risc PCs.
  14.  
  15. It is useful because although !Paint and !Draw will both load JPEGs, they have
  16. drawbacks for general picture viewing.
  17.  
  18. RISC OS 3.5 users will also need the updated SpriteExtend module, which can be
  19. downloaded from the Acorn FTP site. See the SpriteExtend section for more
  20. details.
  21.  
  22. This manual contains the following sections (but please carefully read the
  23. Disclaimer and Credits section at the end before any others):
  24.  
  25.  
  26. ** Overview:
  27.  
  28. •   Quick Start guide
  29. •   Drawbacks of !Paint and !Draw
  30. •   What's new in this version?
  31.  
  32. ** In Detail:
  33.  
  34. •   Main Menu items
  35. •   The Display window
  36. •   Full Screen display
  37. •   Global Choices
  38. •   Loading groups of pictures
  39. •   Running several copies
  40. •   Handling errors
  41. •   Problems
  42.  
  43. ** General information:
  44.  
  45. •   What is a JPEG?
  46. •   About SpriteExtend
  47. •   About Dynamic Areas
  48.  
  49. ** Finishing Off:
  50.  
  51. •   Contact Addresses
  52. •   Thanks
  53.  
  54. ** Disclaimer and Credits.
  55.  
  56.  
  57. The quick way to find a section is to search for its name, preceeded by two
  58. spaces (since section titles are centered to the text by placing several spaces
  59. in front, and using two spaces will ensure you don't accidentally find a general
  60. reference to the section within some other part of the text).
  61.  
  62. If you've any suggestions for additions to SwiftJPEG, any bugs to report, or
  63. any other comments relating to the software, feel free to EMail me. Please see
  64. the Contact Addresses page for details.
  65.  
  66.  
  67.  
  68.                               Quick Start guide
  69.  
  70.                    Simple instructions for using SwiftJPEG
  71.  
  72.  
  73.  
  74. This section of the manual is intended to get you 'up-and-running' with
  75. SwiftJPEG, with more advanced information being held elsewhere. A knowledge of
  76. basic RISC OS conventions (such as 'double-clicking' and the 'icon bar') is
  77. assumed. If these terms are unfamiliar to you, please look at the RISC OS user
  78. guide supplied with your machine before proceeding. Note that Acorn's
  79. interactive !Help application is not supported, to keep the memory required by
  80. SwiftJPEG to a minimum.
  81.  
  82. Start SwiftJPEG by double-clicking on the !SwiftJPEG icon in a Filer window.
  83. SwiftJPEG will appear on the icon bar. To load a JPEG file, drag it to the icon
  84. bar icon. The picture will be displayed in a window on the Desktop. The
  85. picture's full name and dimensions are shown in the window's title bar.
  86. Increasing the number of colours available on-screen will improve the quality
  87. of the image. The speed with which the image is drawn depends on the number of
  88. colours. It is slowest when using a 256-colour display mode, and fastest when
  89. using a true colour (16 million colours) display mode.
  90.  
  91. You can change the size of the image by pressing the middle mouse button over
  92. either the icon bar icon, or the picture. The Main Menu will open. The second
  93. menu item is called Zoom; move the pointer right to display a Zoom Box.
  94. Increasing the first number will scale the picture up (make it look bigger);
  95. increasing the second number will scale it down (make it look smaller).
  96.  
  97. If you want to look at the picture without the rest of the Desktop visible,
  98. choose the fourth menu item, Full Screen... The screen will clear, and the
  99. picture will then be displayed against a black background. The display
  100. resolution is chosen to fit the picture as best as possible, and any zooming
  101. you did (see above) will be ignored (though this behaviour can all be changed
  102. with the General Choices window).
  103.  
  104. To discard the image, close the window. To then reload the same image again,
  105. you could drag it back to the icon bar icon, or select the fifth menu item,
  106. Reload image.
  107.  
  108. To get information on the picture or to save it, move the pointer right from
  109. the third menu item, Picture. A submenu appears; move right again from either
  110. 'Info' or 'Save'. The picture can be saved in the normal RISC OS way, and saves
  111. directly to or from other applications are supported.
  112.  
  113. To quit SwiftJPEG altogether, choose the last menu item, Quit.
  114.  
  115.  
  116.  
  117.                           Why use SwiftJPEG at all?
  118.  
  119.                         Problems with !Draw and !Paint
  120.  
  121.  
  122.  
  123. Under RISC OS 3.6 or later, JPEG files are supported natively. This means that
  124. applications like !Draw and !Paint can load and display JPEGs, using the JPEG
  125. plotting support built into RISC OS through SpriteExtend.
  126.  
  127. However, although other applications can display JPEGs, they don't offer the
  128. customised viewing facilities of SwiftJPEG. For example, if you drop a JPEG
  129. into !Draw, it will be placed on a page of a certain size - the usual default
  130. is A4. If the picture is a big one, it won't all fit on the page and you'll
  131. have to change the page size from !Draw's Main Menu. The effect isn't
  132. aesthetically pleasing in any event. With !Paint, the whole picture is
  133. displayed, but to allow editing of the picture !Paint converts the JPEG into a
  134. RISC OS Sprite - basically, this means the amount of memory required by !Paint
  135. to store the picture is much larger than the size of the original JPEG file.
  136.  
  137. SwiftJPEG is designed to keep the JPEG as a JPEG, reducing memory requirements,
  138. and offer various options for display of the picture not available in !Draw and
  139. !Paint. You can easily zoom in and out of pictures, display them full screen,
  140. save them to other applications and so forth. So SwiftJPEG is a small, fast
  141. utility ideal for just viewing JPEGs.
  142.  
  143. RISC OS 3.5 users can also take advantage of the fast JPEG routines, but
  144. !Draw and !Paint won't load JPEGs at all - SwiftJPEG is currently the only
  145. way to utilise the fast routines for that version of the operating system.
  146.  
  147.  
  148.  
  149.                                  What's New?
  150.  
  151.              A history of SwiftJPEG from newest to oldest version
  152.              This manual covers up to version 1.00 (25 Apr 1996).
  153.  
  154.  
  155.  
  156. ** Version 1.00 (25/04/96)
  157.  
  158.  
  159. As version 1.00ß (below), with additions of the new Dynamic Area for filenames
  160. of groups. This allows a 'Next image' menu item, where a group of pictures
  161. dragged on can be viewed one by one in the Desktop rather than ending up with
  162. the last picture. You can drop in and out of Full Screen views of a group or
  163. cycle round all the files repeatedly Full Screen. So revision of Full Screen
  164. procedure, error handling and loading mechanisms, plus addition and completion
  165. of HTML documentation and rebuilding of the text and Junior manuals was
  166. conducted.
  167.  
  168. As such this version shows some of the most radical internal changes in the
  169. version history so far. Unfortunately the WimpSlot had to increase as a result
  170. of the added functionality (mostly the new loading procedures - gamma fades
  171. have little memory overhead which is why they're still present). It's only gone
  172. up to 56K (from 52K), which is the size it was at in earlier versions anyway...
  173. There's also a reasonable amount of room left in the extra 4K for small future
  174. additions or fixes should they be required. Documentation (and perhaps sources)
  175. may well be released 'officially' in separate archives with filenames making
  176. the format of their contents obvious...
  177.  
  178.  
  179. ** Version 1.00ß (Unreleased)
  180.  
  181.  
  182. Radical revision to Choices arrangements, including support for hardware
  183. fade/flash in, and checking for presence of the Compo_ReadGamma SWI to maintain
  184. any previous Desktop gamma settings. Dithering and Full Screen options moved to
  185. menus, the latter with a specific mode selection added. Problems with reopening
  186. Display window solved as far as possible.
  187.  
  188. A few minor bugs cured and documentation is now in HTML form.
  189.  
  190. Minor improvements to polling system and way the return to the Desktop screen
  191. mode is both handled and prompted - PollIdle now restored (an unstable
  192. intermediate between version 0.09 and 1.00 which was not completed and given no
  193. version number had to have PollIdle replaced by Poll - less efficient).
  194.  
  195.  
  196. ** Version 0.09 (21/01/96)
  197.  
  198.  
  199. Major changes are slideshow time delay and an 'always plot at 1:1' option. A
  200. 'Reload image' menu item has been added and there's been 'debouncing' on a few
  201. buttons. The Choices I/O mechanism had to be adapted to cope with the new stuff
  202. in the Choices window. Memory handling changed (see below). Save/App-app load
  203. (see below).
  204.  
  205. With multiple file loads and auto Full Screen, can now click Adjust to 'pause'
  206. the image when slideshow wait isn't zero - that is, the image will stay on
  207. screen until a key/button is pressed. A pause symbol is flashed 3 times in the
  208. bottom left of the screen to indicate this.
  209.  
  210. App-to-SwiftJPEG transfer supported through !Scrap; JPEG can be saved out.
  211. Allows e.g. UUDecodes from !TTFN to be dropped straight into SwiftJPEG and
  212. saved out if liked.
  213.  
  214. WimpSlot taken down from 56 to 52K, and JPEGs now placed in a Dynamic Area.
  215.  
  216. Changes to many accompanying texts/manuals, and any files where 'Hipposoft
  217. 1995' appears have been altered for '1995,1996'...! Noticed Info window had
  218. '1993-1995' in it, this now reads '1995-1996'. Remembered to spellcheck the
  219. manual and found quite a few errors... Now corrected.
  220.  
  221.  
  222. ** Version 0.09i
  223.  
  224.  
  225. Unreleased intermediary. A couple of additions made over version 0.08 which
  226. gave me new ideas for the 'proper' version 0.09. (The 'i' stands for
  227. 'internal').
  228.  
  229.  
  230. ** Version 0.08 (12/12/95)
  231.  
  232.  
  233. Changed loader routine to be filetype-independent. JPEG (C85) filetype now only
  234. needed for double-click loading. Also added proper error handler; various
  235. circumstances will force a quit but most of the time, there is a choice of OK
  236. or Cancel buttons. Or just OK, if it's only a message. These changes were
  237. suggested by Stephen Borrill.
  238.  
  239. Added 'Auto Filetype' option, to set the filetype of a non-JPEG filetype JPEG
  240. file if it was loaded. Noticed a minor bug in the Choices save routine
  241. connected with diagnostics, which was fixed (this would never have lead to
  242. incorrect preferences saves though).
  243.  
  244. Fixed minor bug in window centering routine (!) which manifested itself when I
  245. set CMOS RAM to allow windows off-screen in all directions. Single pixel errors
  246. when accounting for scroll and title bars also fixed.
  247.  
  248. Updated manuals and the odd minor change to above History text.
  249.  
  250.  
  251. ** Version 0.07
  252.  
  253.  
  254. The original text History file itself was created on the same day as Version 0.
  255. 07 was first saved to disc.
  256.  
  257. On request of Stuart Halliday, the title bar of the display window now holds
  258. all or part of the pathname of the JPEG file loaded.
  259.  
  260. A 'true' ellipsis was tried instead of '...' for display of pathnames to long
  261. to fit in either the Picture window or the title bar of the Display window.
  262. However, this doesn't look good for system font users, and only lets you see
  263. another 2 characters of the pathname. I decided to stick with three full stops.
  264.  
  265. The REMs at the start of the application's crunched !RunImage (which are
  266. inserted manually after the crunching process) have been made a little more
  267. informative.
  268.  
  269. Fixed a rather stunningly silly bug where Adjust-clicking on the close icon
  270. would open progressive parent directories, and Shift-Adjust-Clicking would
  271. result in a crash as soon as the JPEG tried to subsequently redraw...
  272.  
  273.  
  274. ** Version 0.06
  275.  
  276.  
  277. First 'Release' version, distributed to a few people over EMail by specific
  278. requests following a mention of the software in an Acorn-related newsgroup.
  279.  
  280. This was the first version that conformed to the original design specification
  281. drawn up prior to starting to build the application.
  282.  
  283.  
  284. ** Versions 0.05 to 0.01
  285.  
  286.  
  287. Development versions. A new version number was assigned after a complete,
  288. working copy of the software had been established (v0.01 was the version name
  289. used for all initial development). None of these versions were released. Fairly
  290. major additions were generally made between version numbers.
  291.  
  292. None of these versions fully implemented the original design specification for
  293. the software.
  294.  
  295.  
  296.  
  297.                                Main Menu items
  298.  
  299.                Detailed descriptions of what the menu items do
  300.  
  301.  
  302.  
  303. SwiftJPEG has only got one major menu, accessed either from a displayed picture
  304. or from the icon bar icon by pressing the middle mouse button. Other menus are
  305. connected with the General Choices window, and are dealt with there.
  306.  
  307. When no picture is loaded, any button can in fact be used on the icon bar icon
  308. to open the menu. However, once a picture is being displayed, clicks on the
  309. icon bar will work differently. The middle button will still open the menu, but
  310. the left button will ensure that the Display window is fully visible and the
  311. right button will show the picture Full Screen (see below).
  312.  
  313.  
  314. ** Info
  315.  
  316.  
  317. Move the pointer to the right to see the application's Info window, which gives
  318. brief information about the application's purpose, author, and version. The
  319. version number should always be quoted if you want to contact the author about
  320. SwiftJPEG for any reason.
  321.  
  322.  
  323. ** Zoom
  324.  
  325.  
  326. Move the pointer to the right to show a standard 'Zoom box', through which you
  327. can change the magnification applied to the displayed picture. If you use the
  328. arrow icons, then the picture (if one is displayed) will be scaled immediately;
  329. else you can enter values via the keyboard and the scaling is only done when
  330. you move from one writable icon to the other, or press Return. Any scale factor
  331. set in this window when a picture is not being displayed will apply when you
  332. next load one. Scale factors will not, by default, be applied to images when
  333. shown Full Screen, but this can be changed from the General Choices window if
  334. you wish.
  335.  
  336.  
  337. ** Picture
  338.  
  339.  
  340. Move the pointer to the right to show a submenu, with two items; Info and Save.
  341. Moving the pointer right off the Info item will show a window giving
  342. information on the picture being displayed. You can also click on the Picture
  343. or Info items themselves to show this. Moving the pointer right off the Save
  344. item, or clicking on the Save item itself, gives a standard save box; type in a
  345. pathname or drag the icon somewhere to save the current picture. If there is no
  346. picture loaded, the Picture menu item will be greyed out.
  347.  
  348.  
  349. ** Full Screen...
  350.  
  351.  
  352. Again this is greyed out if there is no picture loaded. With a picture loaded,
  353. select this item to plot the picture in the middle of a black screen. Press a
  354. key or click any mouse button to get back to the Desktop. There is a separate
  355. page on Full Screen viewing as it is one of the more important features of
  356. SwiftJPEG, and there's quite a lot to say about it. This menu item will only
  357. place the picture being shown in the Display window into a Full Screen view, it
  358. will not load any others.
  359.  
  360.  
  361. ** Reload image
  362.  
  363.  
  364. This is greyed out until an image is loaded, and stays available whilst one is
  365. being shown and after it has been removed. Selecting it will reload the picture
  366. being displayed, or the one just removed. This is most useful if you have set
  367. the General Choices up so that an image is automatically removed after being
  368. shown in Full Screen mode, but you decide you want it back again.
  369.  
  370.  
  371. ** Next image
  372.  
  373.  
  374. This is greyed out unless a group of pictures has been dragged to SwiftJPEG. If
  375. SwiftJPEG has been instructed to show an image in Full Screen view as soon as
  376. it is loaded with the General Choices window, then the images might all be
  377. shown and this menu item would remain greyed out. However, should an image give
  378. an error, you can continue viewing the rest of the images by then selecting
  379. this menu item - Reload image, if not greyed out, would load the picture prior
  380. to the one that gave the error. Alternatively, you can drag on a group of
  381. pictures and view them in the Desktop, one after another, using the menu item
  382. to prompt loading of the next picture. At any time you could set SwiftJPEG to
  383. display all further pictures Full Screen, which is handy if you've forgotten to
  384. set the option and then dragged on a group of pictures. More information is in
  385. the Loading groups of pictures section.
  386.  
  387.  
  388. ** Choices...
  389.  
  390.  
  391. Select this menu item to open the General Choices window (see the General
  392. Choices section for more information).
  393.  
  394.  
  395. ** Quit
  396.  
  397.  
  398. Selecting this item quits the application, closing the Display window and
  399. releasing any memory claimed by SwiftJPEG itself. Note however that the
  400. SpriteExtend module is obviously not removed when you Quit and any memory in
  401. Dynamic Areas or the RMA that the module may have claimed will, consequently,
  402. still be in use.
  403.  
  404.  
  405.  
  406.                               The Display Window
  407.  
  408.                   How pictures are displayed in the Desktop
  409.  
  410.  
  411.  
  412. When a picture is loaded into SwiftJPEG, it will be placed in a window on the
  413. desktop, known as the Display window, unless you have told it to do otherwise
  414. through the General Choices window. This section describes how the Display
  415. window behaves.
  416.  
  417. A JPEG can be loaded either by dragging it to the SwiftJPEG icon on the icon
  418. bar or onto one of SwiftJPEG's windows, or, if the file has the appropriate
  419. filetype ('JPEG', C85) by double-clicking on it, assuming nothing else loaded
  420. before SwiftJPEG will try to load a JPEG file. SwiftJPEG may also be started by
  421. double-clicking on a JPEG, though again, this assumes nothing else (for example
  422. !ChangeFSI) tries to load the file first.
  423.  
  424. When a picture is loaded the Display window will be opened in the middle of the
  425. screen, fitting the size of the picture as best it can. For unusually small
  426. pictures or at small magnifications, there may be a black border along the
  427. right hand side or bottom edge of the picture.
  428.  
  429. If you load another picture without closing the Display window first, then the
  430. position of the window will not change and it will not get any bigger, though
  431. if you load a smaller picture it may shrink.
  432.  
  433. When the Display window is closed the picture is removed from memory, but may
  434. be reloaded easily with the Reload image item on the Main Menu. If you drag a
  435. group of pictures to SwiftJPEG, the first of the group will be displayed, and
  436. the rest may be stepped through with the Next image menu item.
  437.  
  438. If you were in the middle of looking through a group of pictures in this way
  439. and then dragged one or more new pictures to SwiftJPEG, the old group would be
  440. forgotten and the first picture of the new group would be displayed immediately.
  441.  
  442. By default, the Display window is left open if you select a Full Screen view,
  443. though you can tell it to automatically close with the General Choices window.
  444. If the Display window had been dragged partially off screen you will notice
  445. that it gets pushed back on when you return from the Full Screen view. This is
  446. an unavoidable feature of the RISC OS Desktop. It will only affect the
  447. SwiftJPEG Display window. For more information see the Problems section.
  448.  
  449. Clicking on the SwiftJPEG icon bar icon with the left hand mouse button whilst
  450. a Display window is open, will move the window in front of any others that may
  451. be obscuring it.
  452.  
  453.  
  454.  
  455.                              Full Screen Display
  456.  
  457.               How pictures are displayed outside of the Desktop
  458.  
  459.  
  460.  
  461. A picture being displayed on the Desktop by SwiftJPEG can be shown Full Screen,
  462. that is, on a black background with no other windows or pictures visible.
  463. SwiftJPEG can also be set up to show pictures this way as soon as they are
  464. loaded. There are a variety of ways in which the Full Screen view can operate.
  465.  
  466. A Full Screen view is applied to a picture that is already being displayed with
  467. either the Full Screen item on the Main Menu or by clicking on the SwiftJPEG
  468. icon bar icon with the right hand mouse button. Alternatively, you can tell
  469. SwiftJPEG to show pictures Full Screen as soon as they are loaded, with the
  470. General Choices window.
  471.  
  472. The screen mode (number of pixels and number of colours) that SwiftJPEG chooses
  473. for the display varies according to a number of factors. Normally, SwiftJPEG
  474. will look at the size of the picture and find a screen mode that is closest to
  475. the its size; it will always choose one larger than or the same size as the
  476. picture, unless the picture is bigger than the biggest mode your machine is
  477. capable of. It then finds the largest number of colours that your machine can
  478. display that size mode in, and uses the result.
  479.  
  480. The General Choices window allows you to change this behaviour. SwiftJPEG can
  481. be told to always use the same screen mode that the Desktop is running in; it
  482. can find the largest size (in pixels) screen mode that your machine can do and
  483. use this with the greatest number of colours available at that size; it can
  484. find the largest number of colours your machine can display and then use this
  485. with the largest size available with that number of colours; or you can specify
  486. an exact mode to use. SwiftJPEG can only use a display mode that has 'square
  487. pixels' - such as 'X640 Y480 C256' (the old mode 28) but not 'X640 C256 C256'
  488. (the old mode 15).
  489.  
  490. Regardless of what size you have scaled pictures to in the Desktop with the
  491. Zoom item on the Main Menu, SwiftJPEG will normally ignore that for Full Screen
  492. view. This can also be changed from the General Choices window.
  493.  
  494. Since windows belonging to SwiftJPEG are affected by the mode changes caused
  495. when going to Full Screen view, the Choices window is always closed before Full
  496. Screen mode is entered. The equivalent action to close the window would be to
  497. click on its OK button - i.e. any changes made in the window are reflected
  498. throughout the rest of the application.
  499.  
  500. When a picture is being viewed, the keys and mouse buttons do the following
  501. (they only work when the picture has finished plotting):
  502.  
  503.  
  504. •   Pressing Q during a fade will jump to fully faded-in or faded-out
  505.     (depending on which direction the fade was going). This, for example,
  506.     allows you to skip past a picture quickly.
  507.  
  508. •   The I key will place a small box in the bottom left of the screen containing
  509.     some information on the picture. This is useful if you want to check what
  510.     size the image is without exiting the Full Screen view.
  511.  
  512. •   Pressing Escape will exit the Full Screen display and return you to the
  513.     Desktop.
  514.  
  515. •   The action of mouse buttons and other keys depends on whether you are
  516.     viewing only one picture Full Screen or whether you are viewing a group -
  517.     see the Loading groups of files section. If you are just viewing one
  518.     picture, any other key or button will also exit the Full Screen display and
  519.     return to you the Desktop.
  520.  
  521.  
  522. SwiftJPEG can be set to fade pictures in and out when displaying them Full
  523. Screen. This is done through a hardware feature of the Risc PC that allows
  524. colour components of the display, rather than the picture itself, to be
  525. modified - in this case, making them all progressively darker or lighter. It is
  526. also possible to make the pictures 'flash' in from bright white, an effect seen
  527. in some demos. Which method to use and the speed at which the fades take place
  528. is again controlled with the General Choices window. Note that you won't be
  529. able to see the JPEG plotting when Full Screen view is going to fade the
  530. picture in, so there may be an appreciable delay whilst the picture plots onto
  531. a completely black screen! If this is disconcerting turn off fading.
  532.  
  533. For users of !Gamma by Rob Davison, rdavison@es.co.nz, an application which
  534. uses the same feature of hardware as the SwiftJPEG fades, be aware that
  535. SwiftJPEG does notice any settings made in that application and applies them to
  536. the fades. So if you've made everything appear in red-on-black or some other
  537. odd setting, this will be accurately reflected in the fade...! The !Gamma
  538. application is available via. anonymous FTP from the Hensa server and the Demon
  539. Internet server in the UK, or from a mirror of the Demon site in Germany. Hensa
  540. is only available to non-academic users between 8:00pm and 8:00am local time
  541. with a limit of 25 users. The distribution at the time of writing consists of
  542. two separate archives, containing the main package and a bug fix. The main
  543. package may have had the fix applied already but the bug fix archive is only
  544. small and is quite important, so it's worth downloading both to be sure. The
  545. URLs are (with the main package URL listed first in each pair),
  546.  
  547. Hensa archive, UK
  548.  
  549. ftp://micros.hensa.ac.uk/micros/arch/riscos/e/e034/gamma.arc
  550. ftp://micros.hensa.ac.uk/micros/arch/riscos/e/e034/gammafix.arc
  551.  
  552. Demon Internet, UK
  553.  
  554. ftp://ftp.demon.co.uk/pub/acorn/graphics/riscpc/gamma.spk
  555. ftp://ftp.demon.co.uk/pub/acorn/graphics/riscpc/gammafix.spk
  556.  
  557. Demon mirror, Germany
  558.  
  559. ftp://ftp.uni-stuttgart.de/pub/systems/acorn/riscos/ftp.demon.co.
  560. uk/graphics/riscpc/gamma.spk.gz
  561. ftp://ftp.uni-stuttgart.de/pub/systems/acorn/riscos/ftp.demon.co.
  562. uk/graphics/riscpc/gammafix.arc
  563.  
  564.  
  565.  
  566.                                General Choices
  567.  
  568.                  A description of the General Choices window
  569.  
  570.  
  571.  
  572. A lot of the functionality of SwiftJPEG can be altered in some way through the
  573. General Choices window, accessed by the Choices... item of the Main Menu. It
  574. has options affecting almost every part of the application which is why it has
  575. been referred to by so many other sections of this manual. There are six major
  576. sections to the window - the top section is titled 'Display', the next section
  577. comprises of two groups next to one another connected with fading, there are
  578. two sliders in the third section, the fourth is titled 'Slideshow', the fifth
  579. is titled 'Miscellaneous' and the last section comprises the four buttons at
  580. the bottom of the window.
  581.  
  582.  
  583. ** 1. Display
  584.  
  585.  
  586. This section provides control over the use of dithering and the choice of Full
  587. Screen mode. There are two menu icons with an icon underneath showing the
  588. current choice.
  589.  
  590. The Dithering method menu lets you choose how a picture is displayed when there
  591. are not as many colours available on-screen as the picture uses. Dithering is a
  592. process where closely spaced, speckled colours are used to approximate to a
  593. colour that isn't there - a bit like mixing alternate red and yellow dots to
  594. give the illusion of orange. Dithering slows down the plotting of the image so
  595. there is an option to turn it off, though this will result in inferior display
  596. quality. Then there is a faster and a slower dithering option, with the slower
  597. one giving a better image. In fact these only produce a visibly different
  598. picture if you are in a mode with 256 colours available.
  599.  
  600. The Full Screen mode menu controls how the Full Screen routine chooses a
  601. display mode (number of colours and size of display) for the picture. This is
  602. mentioned in the relevant part of the Full Screen section. This section lists
  603. the various options in the order that they appear in the menu, from top to
  604. bottom. Note that for specifying an exact mode for the Full Screen display to
  605. use, you do so by either supplying an 'old-style' mode number or a full mode
  606. string. The latter is the sort of thing you can give to the Display Manager
  607. through it's Mode menu item - you can always change into the mode you want,
  608. write down the string the Display Manager is using, and type that information
  609. into the SwiftJPEG Full Screen menu, if you are unsure how mode strings work or
  610. want to be sure of getting exactly the right mode.
  611.  
  612.  
  613. ** 2. Fades
  614.  
  615.  
  616. This section allows control over which method (if any) of fading is used to
  617. fade the picture in and fade it back out again.
  618.  
  619. The left hand group of icons controls how pictures fade in, the right hand
  620. controls how they fade out. Both have a No fading at all option, then there is
  621. Fade from/to black and Flash to/from white. The former does a 'conventional'
  622. fade from completely black to full brightness or vice versa; the second will go
  623. to or from a completely bright white screen, darkening to the correct
  624. brightness for the picture. This can be quite eye-catching though some screen
  625. modes may not fill the whole screen and have a black border visible around the
  626. edge.
  627.  
  628.  
  629. ** 3. Fade speed
  630.  
  631.  
  632. There are two sliders beneath the fade-in and fade-out sections to control the
  633. speed at which fading in and fading out takes place. Dragging a bar to the far
  634. left will set the fastest speed; dragging it to the far right sets the slowest.
  635.  
  636.  
  637. ** 4. Slideshow
  638.  
  639.  
  640. This section gives control over the way in which a series of pictures to be
  641. shown in Full Screen mode are handled. The writeable icon contains a delay in
  642. seconds which SwiftJPEG should wait for between loading successive pictures
  643. into a Full Screen view (see loading groups of files for more information). A
  644. value of zero means SwiftJPEG will wait to be told to move to the next picture.
  645.  
  646. Don't zoom picture in Full Screen view controls whether or not SwiftJPEG will
  647. ignore or consider the Zoom factor that has been set from the Main Menu's Zoom
  648. item. If turned on, pictures will always be shown at 'true size', rather than
  649. scaled up or down. Note that the choice of Full Screen mode, if dependant upon
  650. the size of the image, will read the size of the image after zooming if the
  651. option is turned off.
  652.  
  653. The last option is Repeat pictures until Escape is pressed. If turned on, then
  654. a group of pictures will be shown over and over in Full Screen view rather than
  655. shown once and then forgotten about.
  656.  
  657.  
  658. ** 5. Miscellaneous
  659.  
  660.  
  661. These are various options not easily separated into the above categories. From
  662. top to bottom, Show JPEG in Full Screen mode on loading it should be ticked if
  663. you want pictures to be shown Full Screen rather than in the Display window as
  664. soon as they are loaded.
  665.  
  666. Close Display window after Full Screen view can be useful if you don't like
  667. having a picture you've just seen left behind in the Display window after
  668. viewing it Full Screen - though if the file isn't stored on the hard drive (it
  669. might have been UUDecoded in some other application and dropped straight into
  670. SwiftJPEG to see if it is worth keeping) you may want to keep this option
  671. deselected - otherwise the picture will be lost after a Full Screen view, as
  672. closing the Display window removes the picture from memory.
  673.  
  674. Only work out Full Screen modes once is usually left on. Normally SwiftJPEG
  675. only finds the biggest and most colourful display modes available on your
  676. machine when a picture is to be viewed using one of them. However, if you're
  677. likely to be changing the list of modes available (e.g. dropping new Monitor
  678. Definition Files to the Display Manager) then turning this option off will
  679. ensure that SwiftJPEG always notices those changes without needing to be
  680. quitted and restarted.
  681.  
  682. The final item is Automatically set filetype which if turned on, makes
  683. SwiftJPEG alter the filetype of any file that doesn't have the correct JPEG
  684. filetype of C85, to this correct filetype. If, say, loading pictures from some
  685. odd archive format that doesn't support filetypes, this option can be turned
  686. off to prevent the inevitable errors that would otherwise occur as SwiftJPEG
  687. tried to give the files the JPEG filetype.
  688.  
  689.  
  690. ** 6. Buttons
  691.  
  692.  
  693. The four buttons at the bottom of the window act in a fairly standard way. From
  694. left to right, the Save button saves the choices as they appear in the General
  695. Choices window and makes those changes active, closing the window. The Default
  696. button sets all the choices in the window to their original state - such as
  697. auto filetyping turned on, dithering at 'slow but accurate', and so-forth.
  698.  
  699. Cancel will restore the settings present when the window was last opened,
  700. assuming anything has changed - the window will also be closed unless you use
  701. the right hand mouse button. Finally, OK makes the changes active throughout
  702. the application and closes the window.
  703.  
  704.  
  705.  
  706.                           Loading groups of pictures
  707.  
  708.                    How SwiftJPEG handles groups of pictures
  709.  
  710.  
  711.  
  712. Whilst SwiftJPEG can only display one picture at a time, it is possible to drag
  713. a group of pictures to SwiftJPEG and have them handled in a sensible manner.
  714. This section describes in more detail what happens to groups of pictures.
  715.  
  716. Normally SwiftJPEG will not show a picture in a Full Screen view when it is
  717. loaded. In this case, when you drag a group of pictures to SwiftJPEG it will
  718. display the first picture in the group in the Display window on the Desktop.
  719. You can then view subsequent pictures with the Next Image item on the Main Menu.
  720.  
  721. If you are in the middle of looking through a group of pictures in this way and
  722. you drag one or more new pictures to SwiftJPEG, the old group will be forgotten
  723. and the first of the new group loaded immediately.
  724.  
  725. Obviously there is not much difference, in this case, between dragging on a
  726. group of pictures and using the Next Image menu item or dragging on each
  727. picture individually. The important difference comes with Full Screen viewing.
  728. Using the General Choices window it is possible to tell SwiftJPEG to show
  729. pictures in Full Screen mode as soon as they are loaded.
  730.  
  731. This makes it possible to do a 'slideshow' display by dragging on a group of
  732. pictures. They are shown one by one in Full Screen mode, without returning to
  733. the Desktop in between. Should one of the pictures give an error, the slideshow
  734. can be resumed by selecting the Next Image menu item again. Turning off the
  735. Full Screen option in the General Choices window would allow viewing to
  736. continue in the Desktop.
  737.  
  738. The side effect of this method is that if you accidentally forget to tell
  739. SwiftJPEG to display pictures Full Screen as soon as they load, then (unlike in
  740. some earlier versions of SwiftJPEG) you just need to turn this option on and
  741. then select the Next image option to continue Full Screen, though this will
  742. obviously start with the second of your group of images.
  743.  
  744. It is possible to tell SwiftJPEG to wait a certain amount of time between
  745. pictures and then automatically move onto the next one. You can also tell it to
  746. repeatedly cycle through a group of pictures until you force it to exit Full
  747. Screen view by pressing Escape. If a picture causes certain errors it will not
  748. be viewed again if you resume Full Screen viewing (so you don't get the same
  749. error over and over). Note that running out of memory does not count as one of
  750. the errors where this is true, as you might (for example) free some memory when
  751. the error occurs which would allow the picture to be loaded next time round
  752. without problems.
  753.  
  754. If a complete group of pictures is shown Full Screen and SwiftJPEG then returns
  755. to the Desktop, the group will then be forgotten about. If you force it to exit
  756. in the middle of a group with Escape, the group is remembered in case you want
  757. to carry on looking at the pictures. The exception is if SwiftJPEG has been
  758. told to repeatedly cycle through the pictures as described above. In this case
  759. the group is forgotten about as otherwise you'd always be left with a list of
  760. files stored in memory after viewing pictures Full Screen.
  761.  
  762. When loading a group into a Full Screen view with SwiftJPEG set up to
  763. automatically move onto the next picture after a certain time, there are slight
  764. changes to the keyboard and mouse operations as described in the Full Screen
  765. section. The right-hand mouse button will now pause on the current picture -
  766. SwiftJPEG will wait for a key or mouse button to be pressed before continuing
  767. (the usual 'special' keys such as Escape function as normal whilst paused). A
  768. 'tape deck'-style pause icon flashes briefly in the bottom left of the screen
  769. to show this. Using the I key will now also act as a pause function, whilst
  770. still showing the picture information. Other operations remain unaffected.
  771.  
  772. SwiftJPEG accomplishes this handling of groups by storing all the picture names
  773. in the group in a Dynamic Area and then loading them 'on demand'. Any potential
  774. errors will thus not be generated until the errant picture is accessed.
  775. SwiftJPEG does have a limit on how many pictures can be remembered at once, but
  776. it shouldn't normally be a problem (around 2,400 files worst-case). However, if
  777. there isn't enough free memory to store all the names in a group an appropriate
  778. error will be generated and only those pictures with names already in memory
  779. will be available.
  780.  
  781. Note that when loading pictures into Full Screen mode, you may notice a
  782. significant delay upon exiting Full Screen mode before the Desktop redraws. The
  783. drive indicator light for whatever device you loaded the pictures from, if
  784. present, will probably be flashing erratically during this period. So if you've
  785. dragged on a large group of pictures and this happens, be patient - so long as
  786. the drive light is flashing, you'll know the machine hasn't crashed. For more
  787. details see the Problems section.
  788.  
  789. To create a 'rolling slideshow' of pictures in a specific order, drag the
  790. pictures in the order you want them to the Pinboard. Using the General Choices
  791. window, set up some delay between pictures, make sure the group is displayed
  792. repeatedly, set up fades if you wish, ensure pictures will be shown Full Screen
  793. as they load, and finally select all the pictures you put on the Pinboard and
  794. drag them all to SwiftJPEG in one go. Then sit back and enjoy the show!
  795.  
  796.  
  797.  
  798.                             Running several copies
  799.  
  800.                Running more than one copy of SwiftJPEG at once
  801.  
  802.  
  803.  
  804. SwiftJPEG will only display one image at a time, though it can handle groups of
  805. files reasonably well. You may, however, want to view more than one picture at
  806. once.
  807.  
  808. This can be achieved by running another copy of SwiftJPEG. SwiftJPEG wasn't
  809. given the capability of viewing more than one picture at one time as this would
  810. firstly interfere with the slideshow aspect of the application, and secondly
  811. increase its size and marginally decrease its speed in a manner
  812. disproportionate to the requirement for multiple picture support.
  813.  
  814. Unlike some applications, when SwiftJPEG starts up it remembers exactly where
  815. its own Choices file is (and so-forth) and stores that internally. So if you
  816. have two copies perhaps set up in different ways in different places on a hard
  817. or floppy disc, both can be run simultaneously and both will still be able to
  818. read and save their own Choices correctly.
  819.  
  820. If you run the same copy of SwiftJPEG more than once, then each copy will be
  821. using the same Choices file. If you alter the Choices and save it from one
  822. copy, the others will not reflect the changes. This lets you set different
  823. options in each of the SwiftJPEG applications that you ran from the same place.
  824.  
  825.  
  826.  
  827.                                Handling Errors
  828.  
  829.                        How SwiftJPEG deals with errors
  830.  
  831.  
  832.  
  833. SwiftJPEG can experience a variety of errors with external causes, such as a
  834. lack of memory or a file being dragged from the Pinboard when the original has
  835. been deleted. Errors can also be generated by a JPEG file itself. This section
  836. describes the way in which errors are handled.
  837.  
  838. Key to SwiftJPEG's operation is the SpriteExtend module, which does the hard
  839. work of plotting the pictures and handling dithering. The SpriteExtend module
  840. is less tolerant of badly defined or fairly non-standard JPEGs than, say,
  841. ChangeFSI, and does not display some of the more exotic (and rare) kinds of
  842. JPEG files, such as progressive JPEGs or those with no compression. Some files
  843. then, will load but not be displayed, or may show odd traits such as only
  844. redrawing partially. This does not for example occur with any of the JPEGs
  845. supplied on the hard disc of a new Risc PC, and is not necessarily a fault of
  846. either SwiftJPEG or the SpriteExtend module in a strict sense; the problem lies
  847. more with the file itself. You will know if this has happened according to the
  848. following:
  849.  
  850. •   If there is not enough memory to load a picture into SwiftJPEG itself,
  851.     a warning is reported stating that this is the case. However, the
  852.     SpriteExtend module also needs memory for workspace; it creates a Dynamic
  853.     Area the size of which can be altered by the user.
  854.  
  855. •   The amount claimed depends on the size of the JPEG displayed. It can be
  856.     set to 0K (or any other arbitrary size constrained only by the amount of
  857.     free memory) by the user and is automatically increased in size by the
  858.     SpriteExtend module if required.
  859.  
  860. •   If enough memory is present to load the JPEG file into SwiftJPEG, but
  861.     there's then not enough workspace for the JPEG module, the JPEG won't be
  862.     shown - you'll get a blank Display window or (with Full Screen viewing) a
  863.     black screen, because all errors from the JPEG plotting calls themselves
  864.     are ignored. So if nothing plots, check there is enough memory free.
  865.  
  866. •   If nothing plots and there appears to be plenty of memory free then the
  867.     JPEG file is probably at fault. You could try loading it into !ChangeFSI to
  868.     see if that can make sense of the file.
  869.  
  870. All other errors are generally reported with the option to continue or quit the
  871. application, unless they occur at early startup time; in this case the
  872. application always quits, since incorrect startup would not allow the
  873. application to continue to function correctly.
  874.  
  875.  
  876.  
  877.                                    Problems
  878.  
  879.                            Problems with SwiftJPEG
  880.  
  881.  
  882.  
  883. This section contains any information on bugs or difficulties connected with
  884. SwiftJPEG. Some or all may have been mentioned in passing elsewhere, but they
  885. are duplicated here, usually with added detail, to make them easier to find.
  886. All fixes or advice gratefully received...
  887.  
  888.  
  889. ** The Display window after Full Screen view
  890.  
  891.  
  892. The position of the Display window may change after a Full Screen view, if the
  893. window had been dragged partially off screen. This is because the Wimp tries to
  894. gather any windows belonging to SwiftJPEG into the visible area of each screen
  895. mode that Full Screen uses, even though it leaves all other windows alone. It
  896. is apparently not possible to reopen the window partially off the screen again,
  897. hence the movement.
  898.  
  899.  
  900. ** Large groups of files in Full Screen mode
  901.  
  902.  
  903. After loading a large group of files straight into Full Screen mode, there can
  904. be a significant delay upon exiting Full Screen before the Desktop starts to
  905. redraw. During this period, the drive light (if present) for whatever device
  906. you loaded the pictures from will probably flash erratically. This appears to
  907. be a symptom of the way the Filer handles multiple file accesses, and not a bug
  908. in SwiftJPEG; whilst all the drive light flashing goes on, SwiftJPEG is not
  909. actually running (some other task is/tasks are), and just before this starts
  910. the files themselves are not open. This is disconcerting as you can be left
  911. with a blank grey screen for a long time, though at least the machine never
  912. crashes and the drive light shows it is actually doing something!
  913.  
  914.  
  915.  
  916.                                What is a JPEG?
  917.  
  918.                         About JPEG pictures in general
  919.  
  920.  
  921.  
  922. The acronym JPEG stands for 'Joint Pictures Expert Group', and is the name
  923. given to a type of picture file. A JPEG file allows pictures that would
  924. otherwise occupy a lot of memory or disc space to occupy considerably less,
  925. with a trade off between image quality and the memory or disc space required
  926. for that image.
  927.  
  928. JPEGs are designed for storing photographic images, rather than sharp images
  929. such as a black and white line drawings. To reduce the size of the image,
  930. clever techniques are used to re-encode the image in various space-saving ways.
  931. This re-encoding involves a loss of information (quality). For images
  932. compressed only small amounts, this loss won't be visible. As the image size
  933. decreases, the lost information becomes more and more apparent. The trade off
  934. between image size and quality is known as the 'quality factor', and usually
  935. expressed as a percentage. Most applications use 100% to mean 'best quality'.
  936.  
  937. The way that this lost information shows up in the final picture is called an
  938. 'artifact'; common artifacts of JPEGs are blurred outlines where a sharp colour
  939. changes occur (for example, a silhouette of a building against an orange
  940. sunset) or large blocks of the image reduced to the same colour (most often
  941. seen where there are subtle colour changes, for example in sky or calm water).
  942. The blurring of sharp colour changes is the main reason why JPEGs are intended
  943. for photographic material.
  944.  
  945. The routines that SwiftJPEG uses to plot the JPEGs are extremely fast, but this
  946. speed is obtained in part through a few compromises. Some of the rare JPEG
  947. formats, such as those with no compression, will not be plotted. In this case,
  948. Acorn's ChangeFSI should be able to display such pictures; if not, the JPEG
  949. file may be damaged in some way.
  950.  
  951.  
  952. ** How do I know a file is a JPEG?
  953.  
  954.  
  955. Since JPEG files have only been supported by the operating system from RISC OS
  956. 3.6 onwards, there are a great many icons floating around to represent JPEGs
  957. and what you see will depend on what software you're using and how old it is.
  958. The most likely icon will be a grey picture of a person's eye. If you use the
  959. Filer's Info option over a file, the filetype should be 'C85' and will probably
  960. have the name 'JPEG'. If a file doesn't appear to have the JPEG filetype but
  961. you still think it is a JPEG, try dragging it onto SwiftJPEG anyway - a message
  962. will be given saying if the file is not really a JPEG.
  963.  
  964.  
  965.  
  966.                                  SpriteExtend
  967.  
  968.                  Native JPEG plotting in RISC OS 3.5 or later
  969.  
  970.  
  971.  
  972. Under RISC OS 3.6 and later, JPEG files are supported natively by the operating
  973. system. This is done through extensions to the SpriteExtend module, which has
  974. been given extra code to deal with these files. RISC OS 3.5 users can soft-load
  975. this extension and give partial support for these files too.
  976.  
  977. Unfortunately, only Risc PC owners can use such versions of SpriteExtend as the
  978. module creates a Dynamic Area to use as workspace whilst plotting JPEGs.
  979. Dynamic Areas are not available on pre-Risc PC machines. The SpriteExtend's
  980. JPEG code is remarkably fast given how difficult JPEGs are to display, but
  981. there are some limitations in the type of JPEGs that are supported - it does
  982. support the common formats, though. Acorn's ChangeFSI application can always be
  983. used as a fallback if SpriteExtend can't display the picture, albeit a
  984. comparatively slow alternative.
  985.  
  986. Acorn have released an unsupported version of SpriteExtend for RISC OS 3.5
  987. users, which appears to work with SwiftJPEG well. This will not give !Draw,
  988. !Paint and so-on the ability to load JPEGs! A copy of the module is available
  989. on Acorn's FTP site; to download it, use the URL:
  990.  
  991. ftp://ftp.acorn.co.uk/pub/riscos/releases/spriteextend.arc
  992.  
  993. Versions 0.99 and later of SpriteExtend are 'JPEG-aware'.
  994.  
  995.  
  996.  
  997.                                 Dynamic Areas
  998.  
  999.            A new memory management feature in RISC OS 3.5 and later
  1000.  
  1001.  
  1002.  
  1003. Under RISC OS 3.5 or later, applications can make use of Dynamic Areas. These
  1004. are resizeable blocks of memory which an application can claim and give a
  1005. specific name. They can be any size, limited only by free memory.
  1006.  
  1007. Previously, applications may have allocated memory in several ways, all of
  1008. which worked but were not ideal. The worst was through claiming memory in the
  1009. Relocatable Module Area, or RMA. This practice led to increased fragmentation
  1010. of the RMA, which basically meant it grew in size over time and you may
  1011. eventually have needed to reset the machine to free up the memory it was using.
  1012.  
  1013. The second method was to use the System Sprite area. Applications such as
  1014. SparkFS do this on pre-Risc PC machines. This works a little better than the
  1015. RMA since fragmentation is less likely to occur, but the sprite area was not
  1016. designed for this use and several problems are associated with it.
  1017.  
  1018. The last method was to extend the memory allocated to the application directly,
  1019. though this can't be done under all circumstances as an application's memory is
  1020. handled in a special way. This also has other problems, and on the Risc PC, a
  1021. large amount of memory allocated to a single task will slow down the machine.
  1022. Furthermore, you can only have up to 28Mb allocated to any one task.
  1023.  
  1024. Dynamic Areas solve all of these problems, giving an area which an application
  1025. can name to show the user clearly what it is for (through the Task Manager
  1026. display). They are easy to deal with and were thankfully designed for the task
  1027. of storing an application's data. As mentioned above, there is no limit to
  1028. their size, within the limits of the machine's memory. The way that they are
  1029. handled allows Virtual Memory (that is, using hard disc space as 'slow' memory)
  1030. solutions to be implemented successfully.
  1031.  
  1032. The only problem with a Dynamic Area is that it can't easily be removed from
  1033. the Task Manager list, whereas application tasks can be. Some badly behaved
  1034. tasks may leave Dynamic Areas behind if they crash, and you either need to run
  1035. another application (e.g. !RemoveDA by Dave Thomas, cmsdthom@livjm.ac.uk,) or
  1036. reset the machine to remove them. SwiftJPEG uses its own Dynamic Area, but it's
  1037. reasonably well behaved and the area will be removed should the application
  1038. crash. Note that if you use the 'Watchdog' (Alt+Break) to kill the application,
  1039. then the area will be left behind as SwiftJPEG is not given any chance to shut
  1040. down properly before being killed off.
  1041.  
  1042. !RemoveDA is available from the Hensa archive in the UK. The archive may only
  1043. be accessed by non-academic users between 8:00pm and 8:00am local time and has
  1044. a maximum of 25 users. If you wish to download the ZIP file containing
  1045. !RemoveDA, use the following URL:
  1046.  
  1047. ftp://micros.hensa.ac.uk/micros/arch/riscos/d/d187/removeda.zip
  1048.  
  1049.  
  1050.  
  1051.                                 Contacting me
  1052.  
  1053.                        Snail Mail and E-Mail addresses
  1054.  
  1055.  
  1056.  
  1057. At the time of writing, I'm a student in my final year. Exactly what I'll be
  1058. doing after graduation is uncertain at the moment, but the details given below
  1059. should enable anyone to contact me regardless.
  1060.  
  1061. The snail mail address to use is:
  1062.  
  1063. Andrew Hodgkinson
  1064. 91 Micawber Road
  1065. Poynton
  1066. Cheshire
  1067. SK12 1UP
  1068.  
  1069. Mail may have to be forwarded from this address to actually reach me, so please
  1070. be patient. As for E-Mail, it is best to use my University address until around
  1071. late June 1996:
  1072.  
  1073.                            adh1003@hermes.cam.ac.uk
  1074.  
  1075. If this doesn't work or if it is after June 1996, you could try:
  1076.  
  1077.                         Hipposoft@dinas681.demon.co.uk
  1078.  
  1079. ...which should hopefully not change for quite a while! In any event, the snail
  1080. mail address should be reliable if all else fails.
  1081.  
  1082.  
  1083.  
  1084.                                     Thanks
  1085.  
  1086.                        Hipposoft would like to thank...
  1087.  
  1088.  
  1089.  
  1090. Graeme Barnett and Neil Coffey for feedback relating to SwiftJPEG in the early
  1091. stages, and particularly Stuart Halliday and Stephen Borrill for various
  1092. suggestions and bits of info; and everyone else who's EMailed me about various
  1093. things since then, including Stuart Bell who made me realise I shouldn't
  1094. completely drop the Junior manual format in favour of HTML, and was
  1095. instrumental in getting SpriteExtend released for RISC OS 3.5 users.
  1096.  
  1097. John Sullivan and Ben Blaukopf for help on user interface and some programming
  1098. issues, and for ideas on improving the HTML manual.
  1099.  
  1100. Chris Cox of Acorn for a very positive response to my request for a
  1101. distribution of the JPEG-aware SpriteExtend for RISC OS 3.5 machines, and
  1102. Charles Whyte of ART, to whom the request eventually got transferred
  1103. (unfortunately it required a full software license and I couldn't afford the
  1104. fee); and of course Tim Caspell who pursuaded ART to do the public
  1105. release on the Acorn FTP site!
  1106.  
  1107. Ragnar Hafstað and Dick Alstein for !BasCrunch v1.02, which was used to
  1108. compress the original BASIC source.
  1109.  
  1110.  
  1111.  
  1112.                             Disclaimer and Credits
  1113.  
  1114.                      Please read the following carefully!
  1115.  
  1116.  
  1117.  
  1118. If you do not agree with the following text, you may not use SwiftJPEG and must
  1119. delete it immediately.
  1120.  
  1121. 'The software' or 'this software' refers to the !SwiftJPEG application and any
  1122. related files distributed with it, including this manual in all its formats.
  1123.  
  1124. This software is supplied 'as is'; Hipposoft makes no claims as to its
  1125. reliability or suitability for any purpose, regardless of any comments made
  1126. elsewhere. No responsibility can be taken for any failure of the software, or
  1127. any loss or damage caused directly or indirectly, or not caused, by the
  1128. software.
  1129.  
  1130. Contents of this manual are not guaranteed to be correct, and may change
  1131. without notice.
  1132.  
  1133. The SpriteExtend module is Copyright Acorn Computers. Until recently (at the
  1134. time of writing) the JPEG aware SpriteExtend was not available for RISC OS 3.5
  1135. users; it is now, and you may therefore now use SwiftJPEG on a machine with
  1136. the SpriteExtend module soft-loaded on it. This statement superceeds any
  1137. contrary information in disclaimers for any prior versions of SwiftJPEG.
  1138.  
  1139. This software is Freeware, and must be distributed intact, with all the files
  1140. present and in the same form as received by the end user. If being distributed
  1141. in any profit-making way, permission must be granted by Andrew Hodgkinson
  1142. (Hipposoft) first.
  1143.  
  1144. This revision of the Disclaimer and Credits section was made on Monday the
  1145. 29th of April, 1996 and does not refer to versions of SwiftJPEG or the manual
  1146. made prior to this date except where explicitly indicated.
  1147.  
  1148.