                             SELECT 3 FEATURES
                             =================

Introduction
============
Building upon the work done in Select 1 and 2, Select 3 improves upon both
the significant changes made to both the graphics and networking components
as well as adding many new features. The focus on Select 3 has been mostly
based around stablising features from Select 2 and improving the desktop
usability of the Operating system.


Major highlights
================
 * Cut and paste
   Text in writeable icons provided by the Window Manager is now able to be
   selected by keyboard and mouse. Such icons can be used with the standard
   clipboard operations
 
 * Thumbnailing
   The filer can now display images as thumbnails, allowing photo albums and
   other image collections to be browsed more easily.
 
 * Improved 'buttons'
   Action buttons, as well as groups and other 3D-style icons have been 
   improved and may be made round or given colours. Support for button styles
   is a 'plugin' interface and other clients may provide different button
   renderings.
 
 * Alpha-channel sprites
   A new class of sprites has been created for alpha-channel sprites. These
   sprites can be used whereever the standard sprite operations would be
   used through system sprite rendering calls. Alpha-channel sprites allow
   each pixel to have variable translucency, which means that sprites can
   blend better to their backgrounds.
 
 * Recycle bin
   Files deleted by the user can, optionally, be sent to a recycling bin
   from which they can be retrieved if necessary.
 
 * Improved Paint application
   !Paint's internal and external operation has had a major overhaul to
   cater for some of the new features of Select 3, including alpha-channel
   sprites.
   

Feature breakdown
=================
In the following breakdown, not all changes have been listed. In particular,
fixes to components are not listed unless their effect is significant.
Select is supplied with a more complete breakdown of the changes on a
per-component basis.


Application changes
-------------------
 * New !Recyclone application provides a rubbish bin into which files
   deleted by the user will be placed. A configuration tool is provided to
   allow the bin to be expired and its location changed.

 * New !NetLights application displays network activity on the iconbar.

 * !Draw can now import any type handled by ImageFileConvert where the type
   can be converted to a type which is handled natively by Draw. This means
   that PNG files, Artworks, BMP and other images types can now be imported.

 * !Paint has been given a major overhaul. See the separate section for
   more details.


Desktop changes
---------------
 * DragASprite no longer uses a 'drop' shadow when translucency is
   active.

 * DragAnObject's sprite creation code has been optimised slightly.

 * Wimp now supports a 'priority' sprite pool which is able to forcibly
   override anything in the other sprite pools.

 * 'IconBorder' plugin system allows the default slabbed borders to be
   rendered in a customisable manner. FilterManager has been updated
   to support multiple icon border filter clients. Example bordering
   source code will be supplied.

 * 'Auto-open submenus' option now opens submenus and windows in the correct
   position regardless of where the mouse is placed.

 * Selection of text within writeable icons and its use with cut and paste
   operations is now supported by the Window Manager. This furthers the
   work started in Select 1 to make the entire OS capable of using the
   cut and paste system.
 
 * Tinting of icons is now more reliable and can use any tint type provided
   by the ColourMap module.

 * Command windows generated by single tasking applications when run from
   the desktop are now centred on the screen.

 * FilerAction proxying is now an option which may be disabled under the
   clients control. This might be used by rubbish bin applications to
   invoke 'delete' operations on items already in the bin.

 * When in EY0 modes, Pinboard now correctly sizes its background 
   window on a mode change.
   
 * Pinboard configuration application can now be accessed by its main menu.
   Optimisation for redraw speed of tiled ImageFileRender images.
   
 * Pinboard and Filer have both been updated to provide StyleGuide compliant
   save dialogue boxes.

 * Attempting to delete !Boot will now raise a warning.

 * Attempting to copy a directory called !Boot over your !Boot 
   directory will now invoke the boot merge tool.

 * Should Filer fail to launch the filer action window for a delete
   operation, the confirm deletes option is now honoured.

 * In Filer, the Help option is now greyed if a directory and
   application combination are selected.
   
 * Filer windows have been updated to be more style-guide compliant
   and to address issues raised by the use of icon bordering.
   
 * Filer now offers to share directories as read only by default, rather
   than read-write. It makes sense not to share folders as public
   read/write by default.
   
 * Filer now provides a fourth display option beside those for Large, Small
   and information icons. The 'Thumbnails' display renders images using
   the ImageFileRender components, allowing any known image format to be
   displayed within the Filer.

 * Directories starting with a ! but without a !Run file are no longer 
   treated as an application, allowing such names to be used safely if
   necessary.

 * RAMFSFiler will share the disc as read only by default.
 
 * The Sprite Pool has been updated with a number of slight modifications:
      * RAMFS icon now fits in with the new style of icons
      * JPEG icon now follows the bitmap style
      * Shared CD discs now look more like the CDROM icon
      * Addition of Zip, GIF, PNM, XBM, Sun raster, PCX, ICO, Clear, 
        and BMP sprite icons.
      * LanManFS icon updated to fit better with correct style.
   
 * TaskManager can now launch Configure from the menu.
   The info box now describes the OS as RISC OS Select, and has been
   improved to address some issues with Icon Bordering.
   
 * Toolbox "Discard, Cancel, Save" icons have been resized to be 'standard'
   size.
   
 * TextGadget scrolling list boxes now display associated sprites more
   sensibly when selected; previously these would be displayed lighter than
   the rest of the line.
   The text is now positioned a little further across the window, away from
   the sprite in order to reduce the tight look that had been created.
   
 * ImageFileGadget correctly positions its window now; previously it would
   inset the window by a pixel.
   When resizing the gadget, the entire window is redrawn to ensure that it
   remains up to date.
   The facilities provided to developers for using ImageFileGadget have been
   greatly improved.
 
 * ImageFileGadget is now able to report mouse click events and has a much
   greater array of image manipulation options.

 * TextArea gadget now supports standard clipboard operations properly,
   allows for 'key notifications', and renders much more quickly in most
   cases.

 * Toolbox slider gadgets would respond to clicks and scrolls over the wells
   of the gadget even when the slider was set to be display only. They no
   longer react to such events.

 * Free space client templates tweaked to address issues relating to Icon
   Bordering.

 * The sprite file DesktopBanner$File is now loaded by the Desktop module,
   if it is present, and used as the welcome banner on entry to the desktop.

 * ShareFS 'Share directory' window is now updated to represent the current
   settings of the share if one is present, including the name of the Share.

 * TaskWindow now includes a fix for 'The MessageTrans Bug'.


Graphics changes
----------------
 * 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.

 * SpriteExtend would fail to generate code when translucent sprites 
   were rendered in paletted screen modes where the eigen factor was 
   EX0 or EY0. This allows sprites to be visibly dragged in such modes.
   
 * FontManager can now safely resize its dynamic area. The version
   supplied in Select 2 had problems on certain systems which has now
   been addressed.
   
 * ImageFileRender now provides *ImageFileRenderers command for listing the
   supported renderers. This is mirrored in a new SWI to enumerate the
   renderers.

 * A default viewer application can now be specified through ImageFileRender
   and will be set up as system variables for all renderable types.

 * ImageFileRender's sprite renderer now supports information requests 
   previous versions were would return the colour type incorrectly for
   certain sprite types.
   Sprite rendering will now render sprites of 8bpp or less through a wide
   translation table which improves their appearance when colourmapping is
   used in 16bbp or higher.

 * New ImageFileConvert module is used with the Convert* modules to provide
   a generic conversion method, allowing conversion between different file
   formats through a number of SWI calls. *ImageFileConverters will list
   the supported converters.

 * DrawFile will now render sprites in 8bpp or less through a wide
   translation table which improves their appearance when colourmapping is
   used in 16bbp or higher.
   
 * JPEG rendering where DPI based JPEGs are given as ratios are now taken
   into account in a similar manner to that used by !Draw.
   JPEGs which supply a ratio, DPI or DPC (dots per centimetre) of 0 will
   now be treated as 90 DPI. JPEGs with low values for DPI or DPC will now
   be treated as is this was a ratio.

 * CompressJPEG module now registers as a sprite to JPEG converter with
   ImageFileConvert.
 
 * JPEG handling is much more robust now, and should never generate aborts
   for either valid or corrupt compressed data.
 
 * ImageFileRender_Artworks module added to render Artworks documents.
  
 * New ConvertGIF added to ROM to generate a 'dummy' image. This is a
   placeholder module which avoids the requirement for a Unisys patent for
   the use of the LZW algorithm.

 * New ConvertXBM added to ROM to convert XBM image files to sprites.
 
 * New ConvertSun added to ROM to convert Sun raster image files to sprites.
 
 * New ConvertBMP added to ROM to convert Windows BMP image files to sprites.

 * New ConvertPNM added to ROM, supporting type 1-6 PNM files.

 * New ConvertICO added to ROM to convert Windows .ico files to sprites.

 * New ConvertPCX added to ROM to convert PCX files to sprites.

 * New ConvertClear added to ROM to convert Translator 'Clear' files to
   sprites.

 * New ConvertSprite module added , which supports creation of sprites through
   ImageFileConvert from any format which ImageFileRender can handle.
   ConvertSprite provides a proxy ImageFileConvert handler for
   ImageFileRender in much the same way that ImageFileRender automatically
   provides a proxy ImageFileRender handler for ImageFileConvert.
   ConvertSprite can also provide callback and SWI functions to render
   images to a sprite.

 * ConvertPNG has almost full support for creating PNGs from sprites
   (including alpha-channel sprites), with only CMYK sprites presently
   unsupported. Sprites can be created from any form of PNG, generating
   alpha-channel sprites where necessary.
  
 * DrawFile module now supports creation of SVG files from DrawFiles using
   the ImageFileConvert interface.
 
 * New ColourMap module allows generation of colourmapping descriptors
   without recourse to assembler. Currently supported mappings are :
        Blend, Brighten, Contrast, Gamma, Identity, Invert, Monochrome,
        Monochrome and scale and User.
   Colour map descriptors can be chained together to create more complex
   effects.

 * SpriteExtend, Kernel and ColourTrans have been updated to provide a new
   sprite type for alpha-channel sprites. Alpha-channel sprites allow the
   images to be rendered with varying levels of translucency per pixel.
   Previously, sprites could only provide binary (pixel on or off) masks.
 
 * SpriteUtil (System sprite area provider) has had a number of commands
   fixed to remove errors when no system sprite area is present.

 * InverseTable 'destination tracking' is now improved and should no longer
   result in corrupt font colours or alpha channel rendering.


Networking changes
------------------
 * Internet, ShareFS and Freeway have had issues relating to large
   file transfers addressed.

 * InetConfigure can now configure static IP addresses properly.
   Previous versions would retain the addresses stored in CMOS rather
   than using the new addresses supplied by the user.

 * Internet module has had a fix for interfaces with no addresses
   never issuing service calls.

 * Aliased interfaces are no longer dynamically named; the names used on
   their creation are now retained, allowing deterministic operation.
 
 * Internet can now handle changes in interface addresses more reliably.
   Previous versions had issues relating to multiple aliased interfaces and
   ARP requests which could cause machines to seemingly 'vanish'.

 * Added support for ZeroConf IP configuration. ZeroConf is a means by
   which an address can be obtained for a machine on a network without
   any configuration process. This is similar to the configuration used
   by the Access, but standardised across multiple platforms by a global
   group.

 * DHCPClient and ZeroConf client both respond to *ShowStat to provided
   their statistics.

 * DHCP client now supports address changed due to its deletion of
   the interface address. Previously this was not an issue, because
   Internet never issued service for address deletion, but now that
   this has been done it is now aware of this case.

 * The AppleTalk client is now supplied in ROM. This allows RISC OS systems
   to contact AppleTalk file and print servers.
   
 * LanManFS has been improved, resulting in faster resolution of names
   on local networks. The 'Transact' SWI call has been updated to allow
   a larger number of Transact communications to be made, including old
   WinPopup messaging.
   

 
Miscellaneous changes
---------------------
 * OS_CLI is handled by an external module, CLIV.
 
 * Some calls have been moved from the kernel to a new module called
   LegacyBBC.

 * BEL (VDU 7) no longer uses OS_Word 7, but is passed to Sound calls
   directly.

 * FileTypes now declares PCX, PNG, SunRaster, BMP, Clear, ICO and XBM file
   type names.
   
 * FileSwitch is now able to reference path variables (pseudo-filing systems)
   through $, eg Music:$ for <Music$Path>. Writing to a path variable with
   multiple entries where a <path>$Write variable exists will now use the
   <path>$Write directory for the operation.
   
 * FileSwitch no longer leaves streams open if a 'close' fails.

 * ResourceFS will now only issue 'changed' messages where the files changed
   are opened by it, thus reducing the impact on menus opened by the user
   when ShareFS discs become available over the network.

 * ParallelDeviceDriver is now capable of reading Device IDs.
   This allows the auto-detection of the make and model of Printer
   connected.

 * PCI memory reservation has been removed from the kernel, freeing 256M of
   logical address space for use by dynamic areas.
   
 * Conversions module has a minor for for ReadUnsigned returning an invalid
   V flag on some conversions.

 * ScreenBlanker now supports a second-level blanking using DPMS.
   ScreenBlanker no longer uses CMOS to get its initial settings and defaults
   to 'off'.

 * CDFS legacy support for built in conversions removed.

 * EvaluateExpression module takes over from the Kernel's
   OS_EvaluateExpression. Additionally, expressions can now extract
   directory or leaf names from a string, canonicalise a filename and
   generate a string from the current time.


Configuration tools
------------------- 
 * 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 is now able to locate DNS servers on the local
   network, even with bind variants.
   
 * Interface configuration can now take effect immediately, rather than
   requiring a reboot.

 * Re-written Filer configuration tool includes the new thumbnail
   configuration options.
 
 * All tools now warn if the configuration application is closed when
   changes have been made. Tools where changes have been made are indicated
   by a '*' in the title of the window, in line with standard RISC OS
   practice.

 * 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).

 * TimeSetup is now capable of setting the timezone.


Scrapfile naming
----------------
Previously, when a network interface is active on a machine the
ScrapDirectory is set to a Directory named after the MAC Address of the
first installed Network card. If NetFS was active, this would be replaced
by the station ID.

With Select 3, the scrap directory naming is now based solely on the
hardware configuration, as detected by HWScan. For most users this will
be disabled and so the scrap directory will be named 'Disabled'.


New IconSetUp Configuration Tool
--------------------------------
The new IconSetup configuration tool allows the setting of options for the
standard IconBorderRound module. The following options are supported for
buttons and borders :

  Rounded edges
    with Small, Medium, Normal or Large curves
 
  Apply to (sunken) writeable fields
 
  Enable 'special' colour schemes
    with choice of Foreground and Background colour for 
    Action buttons, Default buttons, and Groups

All the above colours may be applied as solid colour or as a tint of the
original colour.

Furthermore button icons and information fields may have the colour applied
as a Blend (top to bottom blend of the border colours, applying the button
colour as a strong tint).

Button icons may have a rim highlight and may have either thick or thin
borders.


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.

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.
