Use of a scalable font as the system font
-----------------------------------------

   [The facilities should be turned on and off on a per-task basis, based on
the Wimp version number quoted in Wimp_Initialise.] Wouldn't it look a bit
silly for some tasks to have system-text menus, and others not?

   [Provide a global override that forces all tasks to do it, or forces no
tasks to do it.] The former should always be true; the latter would be an
option if the font you use is System.

   [Provide a 'right align' character in text icons.] This is a better form
of text icon - one of the things to be addressed in Aquarius. (And how do
you measure the length such a string - does this require changes to the Font
Manager too?)

   [Provide underline on/off control in icons.] Also part of a new text
icon, to be delivered by Aquarius.

   [Provide separate control of the exact spacing between sprite and text.]
This is no new functionality: merely a question of changing the place the
job is done. It makes the lives of application writers slightly easier if
they can guarantee they will run under WIMP 3.2 only, but gives no new
facilities of any sort (the kind of feature called "sugar").

   [Allow the app to get hold of the font handle of the wimp font.] How
about 'font_find_font ("<Wimp$Font>", ...)'?

   [Add a 'shift' character to Homerton.Medium (and others) from
Symbol/Sydney.]

   [Make the L40 icon type work as a writable field.] Again, facilities
like this should be available as a result of Aquarius work.

   [Update the Task Manager, Palette Utility, ADFSFiler, SCSIFiler, NetFiler
and Filer to use scalable fonts.] If all WIMP-printed system font were to be
replaced by a scalable font, none of this would be needed.

   [Bug fixes in DDV's code, including colour handling, L40 icons, caret
handling and automatic menu width calculation.] Fair enough, but wouldn't it
be faster to give them to DDV to do?

         (Aside: I don't know what the brief of this work was, but it seems
      to be that the best way to approach the problem would be to have the
      WIMP produce text using <WIMP$Font> instead of system font, whereever
      any text is supplied. The font would always be rendered at a size such
      that the CharBBox of the font is 16×32 O S units. This would mean no
      changes would be necessary to most applications, including all those
      listed above. Right-justification in menus would be done by some
      heuristic involving scanning for a regular expression that matches
      all key names. What a shame that the regexp code in ROM isn't
      callable.)

Other updates to improve graphic design
---------------------------------------

   [Add facilities to allow the tiling of the background of a window with a
sprite.] This would be done by Aquarius.

   [Provide a validation string facility in icons that specifies that the
background colour should be the same as the window background, using the
same tile, aligned to the same base.] This is form of transparency, which I
think will be treated by Aquarius too.

   [Provide a new 3D startup screen, along the lines proposed by Chris
Murray's sketch.] This is not done by the WIMP, but by the Desktop module.
In any case, Service_DesktopWelcome (if claimed) will let any module
suppress it and replace it with something of its won devising.

   [Change the visual feedback for action buttons and default action buttons
such that they sink down and to the right by one pixel.] At the moment,
there is no feedback of any sort here; it might be hard or easy to do this
in the WIMP. In any case, it would be of only limited usefulness, since the
way buttons should work in this paradigm is "down on click," "action on
RELEASE." To do this, we either have to change the icon button types used by
appications, or else provide a better way of doing this: in Aquarius, for
example.

   [Radio icons where ADJUST can *not* lead to no buttons being selected.]
Sugar.

   [Update drag-a-sprite.] As well as the WIMP, the font manager, a
selection of fonts, the task manager, the palette utility, ADFSFiler,
SCSIFiler, NetFiler and the filer? Okay, boss!

   [Flashing caret.] This can be done already (though it would be nice if it
were done under interrupt ...).

   [In a centred text icon, where the text is too wide for the icon, make
the text right-justified.] Sugar.

   [A different crawling drag box.] Facilities to allow better application
control of the drag box belong in Aquarius: it should certainly be possible
to this there.

   [A facility that allows the application to know whenever the value of a
writable icon changes.] Available already: set KN in the validation string.

   [Add a slider/thermometer type icon.] Certainly a part of Aquarius.

   [X in icon validation string.] Again, the sort of thing to be addressed
by Aquarius. 

   [Beep if a Wimp validation string prevents the typing of a key.]
Again, you can do this already by setting KN in the validation string.

   [Investigate extracting all icon-rendering code from the Wimp into a
separate module.] An Aquarius sort of thing to do as well: I would hope that
all the facilities of WIMP icons would be available in the Aquarius toolkit.
That being the case, once we have Aquarius in wide use, the WIMP icon code
would no longer be in use, so could be taken out.

Updates to improve the handling of error messages
-------------------------------------------------

   [Extra icons and buttons on Wimp_ReportError boxes.]

   [Extra modes of behaviour for various classes of error.] The WIMP has
nothing to do with this, does it? Maybe we want a shared C library with a
trap handler that calls Wimp_ReportError with some of the new flags (if it
thinks the WIMP is running ...).

   [Provide an escape route such that separate modules can provide handling
of specific error codes.] This sounds like a major system-wide change, on
the order of service calls (and I don't mean adding a new service call - I
mean like the whole service call mechanism).

   [Provide a central facility that allows a single messages file to contain
messages for common errors.] This would be approached by Aquarius.

   [Shift-control-ESCAPE should kill off the current task.] This can be done
at present using a small module.

   [Go through the errors in the ROM (in hdr.newerrors), adding the above
classifications.]

Summary
-------

Changes that would come out of Aquarius anyway:

         [Provide a 'right align' character in text icons.]

         [Provide underline on/off control in icons.]

         [Make the L40 icon type work as a writable field.]

         [Add facilities to allow the tiling of the background of a window
      with a sprite.]

         [Change the visual feedback for action buttons and default action
      buttons such that they sink down and to the right by one pixel.]

         [Provide a validation string facility in icons that specifies that
      the background colour should be the same as the window background,
      using the same tile, aligned to the same base.]

         [Add a slider/thermometer type icon.]

         [A different crawling drag box.]

         [X in icon validation string.]

         [Provide a central facility that allows a single messages file to
      contain messages for common errors.]

Changes to the WIMP:

         [Bug fixes in DDV's code, including colour handling, L40 icons,
      caret handling and automatic menu width calculation.]

         [Extra icons and buttons on Wimp_ReportError boxes.]

Changes to other modules:

         [Add a 'shift' character to Homerton.Medium (and others) from
      Symbol/Sydney.]

         [Update the Task Manager, Palette Utility, ADFSFiler, SCSIFiler,
      NetFiler and Filer to use scalable fonts.]

         [Update drag-a-sprite.]

         [Flashing caret.]

         [Extra modes of behaviour for various classes of error.]

         [Shift-control-ESCAPE should kill off the current task.]

         [Provide a new 3D startup screen, along the lines proposed by Chris
      Murray's sketch.]

High-impact system-wide changes (which J R C considers impractical):

         [Provide an escape route such that separate modules can provide
      handling of specific error codes.]

         [Go through the errors in the ROM (in hdr.newerrors), adding the
      above classifications.]

Changes considered (by J R C) unnecessary or sugar:

         [The facilities should be turned on and off on a per-task basis,
      based on the Wimp version number quoted in Wimp_Initialise.]

         [Provide a global override that forces all tasks to do it, or
      forces no tasks to do it.]

         [Provide separate control of the exact spacing between sprite and
      text.]

         [Allow the app to get hold of the font handle of the wimp font.]

         [Radio icons where ADJUST can *not* lead to no buttons being
      selected.]

         [In a centred text icon, where the text is too wide for the icon,
      make the text right-justified.]

         [A facility that allows the application to know whenever the value
      of a writable icon changes.]

         [Beep if a Wimp validation string prevents the typing of a key.]

         [Investigate extracting all icon-rendering code from the Wimp into
      a separate module.]
