Wimp_TextOp
===========

In order to address certain issues with fonts which 'overhang' their right
hand edge (such as oblique or italic fonts), a new flag bit has been added
to Wimp_TextOp 1 (read size of string). This allows applications (such as
Filer) to calculate icon bounding boxes more reliably where such fonts are
in use.


Wimp_TextOp
=> R0 = operation + flags
         bits 0-7   operation :
                      0 : Set colours to use
                      1 : Readstring size
                      2 : Plot font
         bits 8-31  dependant on operation
   other registers dependant on operation

This SWI is used to perform text string operations using the desktop font.



Wimp_TextOp 0
=> R0 = 0 (set font colours)
   R1 = foreground colour (&BBGGRR00)
   R2 = background colour (&BBGGRR00)

This SWI sets the colours to use for subsequent desktop font operations.



Wimp_TextOp 1
=> R0 = 1 (read string size) + flags :
          bit 31: Return size covered by string
   R1 = pointer to string
   R2 = number of characters to process, or 0 for the entire string
<= R0 = width of string in desktop font in OS units

This SWI is used to read the width of a string when rendered on the screen.
Bit 31 controls whether the space covered by the string is returned, rather
than the baseline offset at which the string ends. This distinction must be
made because certain fonts (italic fonts, for example) will end at a
baseline position before the end of the rendered font; with the bit set, the
whole area covered will be returned. Thus, if this call is required for
locating end of a string such that another may be added (for example, in
another colour) then bit 31 should be clear. If, however, this call is being
used to calculate the size required for the font such that it is entirely
rendered (for example, in calculating the size of an icons bounding box),
bit 31 should be set.
