[cairo] Bad bug when filling clipped area

cu cairouser at yahoo.com
Sat Apr 24 20:07:43 PDT 2010


More follow-up. It seems that the problem is triggered by the following
optimization in _clip_and_composite_boxes():
 /* Use a fast path if the boxes are pixel aligned */
 status = _composite_boxes (dst, op, src, boxes, antialias, clip, extents);
 if (status != CAIRO_INT_STATUS_UNSUPPORTED)
       return status;

If the first box (in order of drawing) is pixel aligned, and the next
one is not - this fast path breaks, evidently somehow picking up the
wrong clip trapezoid (what looks like first trapezoid instead of the
second one, though I don't know enough to explain this properly). As a
quick and dirty solution disabling this fast path solves the issue, no
doubt at expense of performance.

It would be great if someone actually looked into this.

cu wrote:
> Please see this attached code sample. When running it using cairo 1.9.6
> (built for MacOS), the clipped area fill is completely wrong. Changing
> the value X of filled squares can fix the issue, so this is somehow
> value-driven.
>
> Having a fix for this would be great - as this issue manifests itself in
> a few cases and really breaks the output.
>   
>   



More information about the cairo mailing list