[cairo] cairo dash line bug? an unexpected polygon was rendered when drawing the dash line rectangle

M Joonas Pihlaja jpihlaja at cc.helsinki.fi
Wed Jun 24 17:35:04 PDT 2009


Hi,

On Wed, 24 Jun 2009, Lonely Hiker wrote:

> Hi All,
>  
> I am new to Cairo and today i encounter a dash line problem on Win32.
>  
> I had some testing code for it:
>  
[snip TestBug() function]

I ran this function on a cairo_image_surface() of size 1300x600 using 
cairo-1.6.4 and cairo-1.8.8 on Linux but couldn't replicate the bug 
Both times the result was a nice green dashed rectangle.  What version 
of cairo are you using?  If your cairo is older than 1.8.8 would you 
mind trying with the latest stable release?

> I ran the test application and tried to resize the window slowly so 
> that the retangle can be cut-off. During the resizing, at some 
> position the rendering showed this bug: it filled a huge polygon 
> with the color that was set for the stroke and covered part of the 
> rectangle. You can see this in the attachment.

Yikes.  Looks bad. :|

> I guess this is a cairo dash line bug? Any idea is appreciated.
>  
> Here is the test application:

[snip windows app]

Unfortunately I can't run this app as I'm not near a windows box.  I 
scanned through the win32 surface implementation and it looks like it 
relies on the generic cairo stroker, so the result ought to be 
identical using an image surface and a win32 surface -- in theory.
Could you check if the bug appears using the following program?

int
main()
{
        cairo_surface_t *im = cairo_image_surface_create(
                CAIRO_FORMAT_ARGB32,
                1300, 600);
        cairo_t *cr = cairo_create(im);

        cairo_set_source_rgb(cr, 1,1,1);
        cairo_paint(cr);

        TestBug(cr);

        cairo_surface_write_to_png(im, "out-dash-bug.png");
        cairo_surface_destroy(im);
        cairo_destroy(cr);
        return 0;
}

Cheers,

Joonas


More information about the cairo mailing list