From patchwork Thu Apr 16 12:04:21 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [RFC] mi: reduce missing segments on large ellipse From: Olivier Fourdan X-Patchwork-Id: 47327 Message-Id: <1429185861-4411-2-git-send-email-ofourdan@redhat.com> To: xorg-devel@lists.x.org Cc: Olivier Fourdan Date: Thu, 16 Apr 2015 14:04:21 +0200 With larger ellipses, rounding will cause some spans close to vertical tangent to be of zero length, leading to sometimes rather large missing portion of the arc. Try to detect this case and work around it. Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1166989 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91858 Signed-off-by: Olivier Fourdan --- mi/miarc.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/mi/miarc.c b/mi/miarc.c index e8bc87e..be9c94c 100644 --- a/mi/miarc.c +++ b/mi/miarc.c @@ -563,6 +563,16 @@ miComputeEllipseSpans(int lw, xArc * parc, miArcSpanData * spdata) outx = x + t; } } + if (ICEIL(xorg + outx) - ICEIL(xorg + inx) < lw ) { + if (inx <= 0.0) { + outx = outx + ICEIL(-r); + inx = inx + ICEIL(r); + } + else { + outx = outx + ICEIL(r); + inx = inx + ICEIL(-r); + } + } span->lx = ICEIL(xorg - outx); if (inx <= 0.0) { spdata->count1++;