From 320cfda26facb74f35319f57d0e24842fa2f9538 Mon Sep 17 00:00:00 2001 From: Sam Hocevar Date: Sun, 1 Oct 2006 12:23:30 +0000 Subject: [PATCH] * Better precision in cucul_fill_triangle(). --- cucul/triangle.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/cucul/triangle.c b/cucul/triangle.c index 761adac..c28d6d3 100644 --- a/cucul/triangle.c +++ b/cucul/triangle.c @@ -105,13 +105,13 @@ int cucul_fill_triangle(cucul_canvas_t *cv, int x1, int y1, int x2, int y2, ch = cucul_utf8_to_utf32(str, NULL); /* Compute slopes and promote precision */ - sl21 = (y2 == y1) ? 0 : (x2 - x1) * 0x1000 / (y2 - y1); - sl31 = (y3 == y1) ? 0 : (x3 - x1) * 0x1000 / (y3 - y1); - sl32 = (y3 == y2) ? 0 : (x3 - x2) * 0x1000 / (y3 - y2); + sl21 = (y2 == y1) ? 0 : (x2 - x1) * 0x10000 / (y2 - y1); + sl31 = (y3 == y1) ? 0 : (x3 - x1) * 0x10000 / (y3 - y1); + sl32 = (y3 == y2) ? 0 : (x3 - x2) * 0x10000 / (y3 - y2); - x1 *= 0x1000; - x2 *= 0x1000; - x3 *= 0x1000; + x1 *= 0x10000; + x2 *= 0x10000; + x3 *= 0x10000; ymin = y1 < 0 ? 0 : y1; ymax = y3 + 1 < (int)cv->height ? y3 + 1 : (int)cv->height; @@ -138,13 +138,13 @@ int cucul_fill_triangle(cucul_canvas_t *cv, int x1, int y1, int x2, int y2, /* Rescale xa and xb, recentering the division */ if(xa < xb) { - xx1 = (xa + 0x800) / 0x1000; - xx2 = (xb + 0x801) / 0x1000; + xx1 = (xa + 0x800) / 0x10000; + xx2 = (xb + 0x801) / 0x10000; } else { - xx1 = (xb + 0x800) / 0x1000; - xx2 = (xa + 0x801) / 0x1000; + xx1 = (xb + 0x800) / 0x10000; + xx2 = (xa + 0x801) / 0x10000; } xmin = xx1 < 0 ? 0 : xx1;