diff options
author | Robin Watts <Robin.Watts@artifex.com> | 2020-07-28 17:52:11 +0100 |
---|---|---|
committer | Robin Watts <Robin.Watts@artifex.com> | 2020-07-28 17:58:58 +0100 |
commit | c001ce438ef9fd0171104ac49afa110e39edb03e (patch) | |
tree | fbc67c53516a409926b8751b9e6629c725e3a026 /demos/csharp | |
parent | 45b122117e937bb36da2ef03ea590c90ebcd2de9 (diff) | |
download | ghostpdl-c001ce438ef9fd0171104ac49afa110e39edb03e.tar.gz |
Bug 702587: Fix alpha buffer issue with fill/stroke operations.
The "alphabits" devices work by an alpha buffer being inserted
into the device chain before graphical operations. This intercepts
drawing device calls, 'saves' the color, and then converts the
call into a fill of a monochrome mask.
Only a small 'window' of mask is ever held in memory at once. When
the drawing moves out of the range of that window, the window is
flushed (conceptually the mask is scaled down, and then that scaled
representation is filled with the saved color).
Any "stragglers" (i.e. unwritten back bits of mask) are flushed at
the end of the graphical operation.
When using fill/stroke, the existing code fails to notice the
color in use being changed. This means the last 'window' of
fill can end up being written in the color intended for 'stroke'.
We therefore update the fill/stroke logic to check for the color
changing. (We check for 'unflushed data' and 'color has changed').
Diffstat (limited to 'demos/csharp')
0 files changed, 0 insertions, 0 deletions