From 2d20efaa9ccc4e30a05900521543af9d353fc49a Mon Sep 17 00:00:00 2001 From: Robin Watts Date: Mon, 9 Jan 2012 12:25:18 +0000 Subject: Fix Bug 692356 (comment #2) Take on a modified version of Zenikos patch; only take the quick exit if the whole dash length is small, or if the dash_length scaled up by the maximum possible scale in the ctm is less than 1/2 a pixel. --- draw/draw_path.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'draw') diff --git a/draw/draw_path.c b/draw/draw_path.c index ca33f5f2..d6f9934b 100644 --- a/draw/draw_path.c +++ b/draw/draw_path.c @@ -723,7 +723,7 @@ fz_flatten_dash_path(fz_gel *gel, fz_path *path, fz_stroke_state *stroke, fz_mat { struct sctx s; fz_point p0, p1, p2, p3, beg; - float phase_len; + float phase_len, max_expand; int i; s.gel = gel; @@ -752,7 +752,8 @@ fz_flatten_dash_path(fz_gel *gel, fz_path *path, fz_stroke_state *stroke, fz_mat phase_len = 0; for (i = 0; i < stroke->dash_len; i++) phase_len += stroke->dash_list[i]; - if (phase_len < 0.01f || phase_len < stroke->linewidth * 0.5f) + max_expand = MAX(MAX(fabs(ctm.a),fabs(ctm.b)),MAX(fabs(ctm.c),fabs(ctm.d))); + if (phase_len < 0.01f || phase_len * max_expand < 0.5f) { fz_flatten_stroke_path(gel, path, stroke, ctm, flatness, linewidth); return; -- cgit v1.2.3