You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.5 KiB
46 lines
1.5 KiB
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 <ofourdan@redhat.com> |
|
X-Patchwork-Id: 47327 |
|
Message-Id: <1429185861-4411-2-git-send-email-ofourdan@redhat.com> |
|
To: xorg-devel@lists.x.org |
|
Cc: Olivier Fourdan <ofourdan@redhat.com> |
|
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 <ofourdan@redhat.com> |
|
--- |
|
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++;
|
|
|