Changes with RISC OS Select 3 issue 2
=====================================


Introduction
------------
Within this document, various references are made to other documentation
supplied within the 'Docs' directory. The documentation supplied is a mix
of programmers documentation and release notes. Much of the programmers
documentation is in the process of conversion for the main site and will be
provided in due course.


Graphics
--------
Internally, Select 3 has improved the graphics system significantly with
the addition of many new converters for foreign file formats and support
for alpha-channel sprites. 

Particular changes of note are :

  * Alpha-channel sprites now supported
    Alpha-channel sprites allow any pixel to have a arbitrary translucency.
    In essence, such sprites can blend in to the background. Previously,
    sprites could only have binary (solid or transparent) masks.
    Refer to 'Sprites-AlphaChannel' and 'SpriteExtend-AlphaPromotion'.
    
  * Full support for PNG to sprite conversion
    The improvements to the sprite system for alpha-channel now allows the
    conversion of almost any form of PNG to sprite. The PNG conversion will
    attempt to reduce images to a form which can be used on earlier systems
    where this is possible.
    Refer to 'PNGConversions'.
  
  * Near complete support for sprite to PNG conversion
    The new format alpha-channel sprites and all previously defined sprite
    types (excluding CMYK) are now supported by the PNG generation code,
    allowing PNGs to be generated more easily. This change is reflected in
    !Paint, allowing save to PNG files as easily as to sprite files.
    Refer to 'PNGConversions'.
  
  * JPEG rendering is more robust
    Although the Select 2 JPEG system had been tightened up greatly to
    remove any possibility of crashes, further problems were evident when
    used with the new thumbnailing feature in Filer. Truncated JPEGs and
    those which have been generated outside of the specification are now
    handled better and should either report errors, or render properly
    depending on the severity of the problems.
  
  * Generic image file conversions
    To complement and aid the ImageFileRender module introduced in Select 2,
    a new conversions module (ImageFileConvert) is provided. This module
    provides core image conversion facilities which can have new conversions
    added to seamlessly. Conversions are available for the following
    types...
      - To sprite:
         .ico, Clear, GIF, PCX, BMP, PNM, PNG, XBM, Sun raster
      - To SVG:
         Drawfile
      - To PNG:
         Sprite
      - To JPEG:
         Sprite
    In addition, any of the types handled by ImageFileRender can be
    converted to a sprite; that means DrawFile, JPEG, and ArtWorks files
    can also be converted to sprite.
    The types which are converted to natively handled types through
    ImageFileConvert (eg those which convert to sprites) can be rendered
    with ImageFileRender. Thus, .ico, Clear, GIF, PCX, etc, can all be
    rendered through the standard ImageFileRender interface.
    Note: GIF is presently unsupported and will only reproduce a single
          'GIF' filetype sprite.
    Example code will be supplied for providing new conversions.
  
  * Simplified ColourMap descriptor generation
    Colour mapping - a feature introduced more generally in Select 2 - has
    been made simpler with the inclusion of a new module to generate
    commonly used colour mapping descriptors.
  
  * Secondary DPMS blanking
    The ScreenBlanker has been updated to support a 'second level' blank
    delay. After this delay, the DPMS (power saving) of monitors can be
    invoked.
  
  * Rendering of 1bpp sprites with masks improved
    Rendering of sprites with 1bpp masks, using no scaling or colour 
    translation, where the sprite data ends on a word boundary, but 
    the mask data does not end on a word boundary, and the output 
    alignment is not a word boundary due to a graphics window being
    present now works properly.
   
  * Rendering to short sprites (height < 8) improved
    Two independant faults with the rendering to sprites which had small
    heights have been addressed. These have been long standing faults.
  
  * Redirection to sprite within TaskWindows now works
    Sprites can now be created within TaskWindows without causing problems
    when preempted.

Older documents supplied:
   CMYK sprites
      - SpriteExtend-CMYK
   Colour mapping of drawfiles 
      - ColourMap-DrawFile
   Colour mapping of sprites and JPEGs
      - ColourMap-Sprite
   General graphics system overview
      - GraphicsSystem [updated]
   Progressive JPEGs and transcoding
      - CompressJPEG
   SpriteExtend JPEG errors
      - SpriteExtend-Errors
   Translucent sprite rendering
      - SpriteExtend-Translucency
   Sprite to PNG conversion
      - ConvertPNG (but note that ImageFileConvert should be used in
                    preference)
   Generic image rendering
      - ImageFileRender
   Sprite pool changes
      - SystemSpriteArea
   Tables for blending with the background
      - BlendTable and InverseTable
   


Input
-----
Input devices have not been changed for Select 3.

Older documents supplied:
   Low level pointing device information
      - PointerDevices
   Desktop interface to scrolling wheels
      - WindowScroll


Window manager
--------------
The WindowManager has been significantly improved with the addition of
support for selections within writeable icons, as well as support for
priority sprite pool.

  * Selection within writeable icons
    Writeable icons can now be select using both the mouse and keyboard.
    Text can be cut and pasted in thse icons using the standard keyboard
    operations.
    Refer to 'WimpCnP'.
  
  * 'Special' highlighting of selected writeable icons
    In a similar way to the special highlighting in Select 2 icons,
    selected text in writeable icons can have a special highlighting
    colour. This allows tailoring of the colour scheme to match the
    rest of the desktop as necessary.
  
  * Priority sprite pool support
    In order to allow more flexible and reliable selection of sprites
    used by applications. The priority sprite pool overrides the ROM
    and standard sprite pool. The priority pool is used by user-
    configurable replacements for the standard sprites provided by the
    operating system and applications.
    Refer to 'PrioritySpritePool' and 'WimpReadSysInfo'.
  
  * Icon borders can now be customised
    3D icon bordering is now configurable and replacable by alternate
    bordering plugins. The supplied bordering system allows rounded
    icons to be drawn in a variety of styles.
    Example code will be supplied for creating new plugins.
  
  * Tinted icons are now more flexible
    By utilising the new ColourMap module, tinted icons can now use any
    of the formats specified by the ColourMap module to manipulate the
    colours of icons.
    Refer to 'TintValidation'.
  
  * Wimp command window reading now documented
    The state of the Wimp command window could be read on all versions of
    Select. This feature is now documented.
    Refer to 'WimpCommandWindow'.
  
  * Plotting icons can now use alternate sprite pools
    In order to address issues with the rendering of sprites in the Filer,
    and for greater flexibility, the Wimp_PlotIcon call has been extended.
    This allows icons sprites to be rendered more reliably outside the
    redraw loop.
    Refer to 'WimpPlotIcon'.
  
  * Background window stack rationalised
    Background windows are now handled as a separate stack, rather than
    being unique, allowing more control over the display of background
    positioned accelerators.
    Refer to 'WindowStacks'.

Older documents supplied:
   Wimp text sizing
      - WimpTextOp


Networking
----------
Networking changes have not been as significant in Select 3 as they
were in Select 2, but a number of minor faults have been addressed
and a few new features have been added.

  * Support for ZeroConf
    ZeroConf configures interfaces to allow the systems without any
    configuration information (DHCP, BootP or other systems) to
    initialise an IP address for an interface.
    Refer to 'AutomaticConfiguration'.
  
  * Improved interface aliasing
    Aliased interfaces previously would be allocated dynamically -
    such that the first aliased interface was given the identifier
    0, the second identifier 1, etc. In order to allow ZeroConf to
    function reliably, aliased interfaces are now numbered statically
    and can therefore be controlled reliably.
  
  * Improve support for statistics
    Both DHCPClient and ZeroConf support the *ShowStat command and its
    associated statistics gathering service.
  
  * AppleTalk is now supplied in ROM
    The AppleTalk client is able to communicate with Apple file and
    print servers.
    Refer to 'AppleTalk'.
  
  * Improved support for changing interfaces
    Because interfaces are liable to change more readily with Select 2 and
    3 due to the presence of DHCP and ZeroConf, issues within Internet have
    been addressed to allow these changes to take place more safely.

Older documents supplied:
   Automatic configuration of network interfaces
      - AutomaticConfiguration [updated]
   AUN support
      - AUNIntro
   Internet pollwords
      - Pollword


Kernel
------
The kernel has not been significantly modified for Select 3, however a
number of bugs present in Select 2 and earlier have been addressed and
the EvaluateExpression SWI has been abstracted into a separate module.

  * EvaluateExpression is now outside the kernel
    The SWI call OS_EvaluateExpression, and the equivilent *Eval command
    have been extended. New expressions are provided for extracting
    path components from filenames and generating time strings.
    Refer to 'EvaluateExpression'.
  
  * LegacyBBC module takes over some Kernel functions
    Certain calls which were previously handled by the Kernel to provide
    support for BBC applications have been moved away into a separate
    module to isolate them.

Older documents supplied:
   <none>



Desktop
-------
Filer has changed significantly in this release to support the display of
thumbnailed image files.

  * Filer now supports thumbnailing
    Thumbnails have been implemented as the 4th display format. This
    is provided through the ImageFileRender components using the
    ConvertSprite module to provide the creation of sprites. Sprites
    are cached when the filer window is opened.
  
  * Filer displays 'applications' without !Run files as directories
    Applications without a !Run file are now considered identical to
    normal directories. Previously such directories would not function
    correctly as applications.
  
  * 'Drop' shadow on DragASprite removed
    The shadow on DragASprite operations has been removed, as this did
    not make a lot of sense with the new transparent DragASprite which
    was introduced in Select 2.
  
  * FilerAction proxys can now be disabled
    When used under the control of another application, proxies can be
    selectively disabled.
    Refer to 'FilerAction-NeverProxy'.
  
  * Pinboard configuration is more accessible
    The pinboard configuration can now be launched from an option on the
    main menu.
  
  * Configurable desktop banner
    The banner displayed during machine startup can now be configured by
    setting DesktopBanner$File to point to a suitable sprite.
    
Older documents supplied:
   <none>
    

Toolbox
-------
The toolbox components have been updated to address issues raised by
users, and to extend the facilities of the ImageFileGadget introduced
in Select 1.

  * TextArea gadgets now supports clipboard
    TextArea gadgets can now use the clipboard in a standard manner.
    Selected regions will use the same selection colours as the
    text selection within writeable icons.
  
  * ImageFileGadget support improved.
    ImageFileGadget has been extended to support all the features
    available to ImageFileRender.
    Further documentation will follow.
  
Older documents supplied:
   <none>



Configuration tools
-------------------
The configuration tools have been updated to support quit warnings
in all the plugins and for the new features.
  
  * Time and date plugin supports timezone
    The timezone can now be configured in the Date and Time plugin
    tool.
  
  * Window configuration supports text selections
    The window configuration tool can now change the manner in which
    text selections are coloured and the effect of key presses.
    The effect of inserting characters into selections can be chosen,
    as can the effecft of deleting characters from selections.
  
  * New icon border configuration tool
    The manner in which the icon borders are rendered can be controlled
    with the new Icon Border configuration tool. This allows all the 
    settings of the standard 'round' icon border rendering to be
    changed.
  
  * Re-written filer configuration tool
    The support for thumbnails within the Filer required more changes
    to the configuration tool. In order to make the plugin more flexible
    and to fit in with the more modern style of configuration tools,
    the entire tool has been rewritten.
  
  * Softload configuration tool improved
    Softload ROM images are now sorted into date order, making selection
    of ROMs much simpler. ROM images are now supplied in archives together
    with their change lists; these lists are recorded with the ROM when
    installed to allow them to be viewed at a later date.
  
  * Resolver configuration menus shows local DNS servers
    Resolver configuration is now able to locate DNS servers on the local
    network, even with bind variants.

  * Immediate configuration of interfaces
    Interface configuration can now take effect immediately, rather than
    requiring a reboot. Certain applications may not function correctly
    if the interfaces are changed underneath them.
 
  * Improved CPIShell
    CPIShell is now able to be passed command line arguments to pass to the
    launched plugin. This is used to allow installation of components through
    Filer_Action (dragging over !Boot).
  
  * Updated Screen blanker configuration
    The secondary blanking level (DPMS after screensaver) can be configured
    through the screen saver configuration tool.
    

Older documents supplied:
   Global sound frequency tracking
      - Ratetracker


Applications
------------
The applications supplied with Select 3 have been updated over those
supplied with Select 2.

  * New waste bin application, Recyclone
    Files deleted from the desktop using the Filer 'delete' option can
    be copied to a recycle bin rather than being deleted directly.
    This allows them to be recovered later, should that be required.
  
  * Updated SockStats tool
    SockStats is now able to break down statistics on a per-interface
    basis.
  
  * New NetLights network activity monitor.
    The NetLights application indicates traffic on the network through
    a discrete iconbar icon.
  
  * New AppleTalk tools
    AT Notify and AT Print can be used to handle AppleTalk notifications
    and printing queues.

  * New LanMan password configuration tool
    Passwords on LanMan systems can now be configured through the 
    LMPasswd tool.
  
  * Image viewer application
    A simple image viewer application is supplied for viewing image files
    supported by ImageFileRender.
  
  * Paint overhaul
    See separate section below and 'Paint'.

Older documents supplied:
   <none>


Library
-------
A couple of new tools have been added to the library, and the MiniZip
tool has been updated significantly.

  * MiniZip now matches standard *Zip command line usage
    In order to simplify the use of MiniZip, the command line arguments have
    been updated to match the arguments passed to the InfoZip command.
  
  * New MiniGrep tool
    MiniGrep is a very simple version of the widely used 'Grep' tool used
    for searching files for a known string. MiniGrep is capable of
    displaying its results through throwback.
  
  * New ImgConvert tool
    The image conversion facilities provided by ImageFileConvert are made
    available through the command line with this conversion tool.

Older documents supplied:
   <none>

The library has not changed significantly for Select 2. A new JPEG
transcoding tool, 'MiniJTran' has been created to use the features  provided
by the transcoding CompressJPEG module. This allows JPEG files to be
converted to and from progressive images.


Updated modules
---------------
The URL fetcher modules have been supplied with this version of Select 3.
Documentation for these will become available shortly.

Older documents supplied:
   <none>


Miscellaneous boot updates
--------------------------

 * Improved pseudo-filing system support
   Pseudo-filing systems can now be written to if a 'write' variable
   (<foo>$Write) exists to indicate where write operations should occur.
   This should allow applications which incorrectly wrote to Choices:
   to function correctly.
   Pseudo-filing systems can also be given a root specifier ($) prefix to
   indicate that no higher directories can be traversed. It is recommended
   that clients use this rather than the bare path specifier.
   These features are also used by Recyclone.
 
 * Scrap directory naming rationalised
   The name of the directory into which temporary files are written has
   been rationalised to match that used by the current hardware profile.
   This will be 'Disabled' for most users, but where enabled will allow
   multiple clients to safely use the same scrap directory.
 
 * 'MessageTrans bug' fix
   Previously, closing TaskWindows could cause problems for MessageTrans
   which would generate repeated data abort errors. This has been a long
   standing and serious problem for developers using TaskWindows. The
   fault in the TaskWindow module has now been addressed.

Older documents supplied:
   <none>


Paint
-----
The Paint application has been updated to support the new alpha-channel
sprite format provided by Select 3. Paint can create sprites with
alpha-channels, add an alpha-channel to an existing sprite, and allow
editing of the alpha-channel.

Paint's user interface has also been brought up to date, with a separate
attached toolbox for each sprite (similar to !Draw) so each sprite has it's
own "working set" of toolbox settings. Shortcuts for zoom and select colour
have been added along with a new colour display area. The menu tree has been
revised to be more logical and Styleguide compliant.

Paint makes better use of the ImageFileConvert system in Select 3 and can
directly load any filetypes supported by ImageFileConvert (PNG, JPEG, Clear,
ICO, BMP etc). Paint allows saving of an image in JPEG and PNG format as
well as sprite.

The main selector display has been updated to allow multiple sprites to be
selected. Sprites within the main selector display can be moved around by
dragging them to change the order in the file. Sprites may now be sorted by
name, size or type.

A good number of bug fixes and performance improvements have also been added
along with usability features such as a true graphic brush display and
better clipboard support.

Refer to 'Paint'.
