Module version 1.01
-------------------

A problem was reported with the feature that uses the GDraw module.

Investigating, it seems that there are two related problems. When
the code passes on Draw module SWIs to GDraw, in order to enable
anti-aliasing, it has to set some extra bits in register R1 which
contain the fill style for the curve.

The first problem is that, having changed R1, the code doesn't restore
its value. I'm not aware of this bug upsetting anything, but it is now
fixed.

The main problem is that GDraw does not support a value of R1 = 0 to
select a default fill style. Although this was handled for Draw_Stroke
(by checking for zero and replacing it with a default style value),
it was not done for Draw_Fill, and this is what caused the trouble.

This is the bit of code in s.code that I'm talking about:


 str    r1,dtemp1       ; save r1 for later
 teq    r1,#0           ; is it zero?
 moveq  r1,#&30         ; yes replace with the default style value
 orr    r1,r1,#&80      ; enable aliasing


David Pilling



Module version 1.03
-------------------

There have been two further updates.

The code was made 32-bit compliant to produce version 1.02.

Justin Fletcher told me about a bug and how to fix it. This was
that R14 was being corrupted by the interception of the Draw SWIs.
Fixing this problem gives version 1.03.


David Pilling



Module version 1.04
-------------------

Previous versions of SFX passed almost all Draw stroke and fill calls
on to GDraw. It has been pointed out to me by Martin Wuerthner that
GDraw only supports a limited set of winding rules and fill options.
The fix in this version is to limit the calls passed to GDraw to those
it supports.

In fact in the interests of simplicity SFX now only passes on the
calls which can be antialiased, there are some rare cases which GDraw
might be able to speed up but not alias (which are now not passed on).

Doing this work highlighted the fact that SFX was not supporting the
correct default behaviour for stroking - a bug much like the one fixed
for filling in an earlier version. This is also fixed in this
version.


David Pilling



Module version 1.05
-------------------

This version of SFX observes a service call to see if output has been switched to a sprite or mask. If it has, it turns off aliasing unless
a 16- or 32-bpp sprite is in use.


David Pilling
