From bec8c7508ebc0f69266f9aebe9903539391c519b Mon Sep 17 00:00:00 2001 From: Adrian Johnson Date: Tue, 3 Oct 2017 22:18:49 +1030 Subject: [PATCH] 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 --- src/cairo-path-bounds.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cairo-path-bounds.c b/src/cairo-path-bounds.c index 624b3cb4d..ac85f27be 100644 --- a/src/cairo-path-bounds.c +++ b/src/cairo-path-bounds.c @@ -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;