Prevent curved strokes in small ctms from being culled from vector surfaces

The combination of both curved strokes and ignoring the ctm in the thin
line check caused some fill-strokes in this test case to be culled.

Modify the thin line check to take the ctm into account and increase
the minimum width to 1 point to prevent curved lines such as tiny dots
from being culled.

https://bugs.freedesktop.org/show_bug.cgi?id=103071
This commit is contained in:
Adrian Johnson 2017-10-03 22:18:49 +10:30
parent dccbed7d78
commit bec8c7508e

View file

@ -200,8 +200,8 @@ _cairo_path_fixed_stroke_extents (const cairo_path_fixed_t *path,
cairo_stroke_style_t style;
/* When calculating extents for vector surfaces, ensure lines thinner
* than the fixed point resolution are not optimized away. */
double min_line_width = _cairo_fixed_to_double (CAIRO_FIXED_EPSILON*2);
* than one point are not optimized away. */
double min_line_width = _cairo_matrix_transformed_circle_major_axis (ctm_inverse, 1.0);
if (stroke_style->line_width < min_line_width)
{
style = *stroke_style;