From cfc7519727b0bb8ce19c7494c307ba89a3bce72f Mon Sep 17 00:00:00 2001 From: Amy Bowersox Date: Tue, 10 Dec 2019 14:51:53 -0700 Subject: [PATCH] a fencepost error --- src/devctxt.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/devctxt.c b/src/devctxt.c index e16cbb3..234ac5e 100755 --- a/src/devctxt.c +++ b/src/devctxt.c @@ -19,7 +19,9 @@ inline static BYTE line_clip_outcode(INT32 x, INT32 y, INT32 xmin, INT32 ymin, I return rc; } -#define CPX 8 /* clipping precision in bits */ +#define CPX 4 /* clipping precision in bits */ + +#define ONE (1 << CPX) /* constant for mathematics */ /* these macros keep the number of bits straight when doing fixed-point multiply & divide */ #define M(a, b) ((((a) * (b))) >> CPX) @@ -74,16 +76,16 @@ static BOOL line_clip(PINT32 output, INT32 x1, INT32 y1, INT32 x2, INT32 y2, INT } else if (outcode1 & 0x4) { - tmp = M(x2 - x1, D(ymax - y1, y2 - y1)); + tmp = M(x2 - x1, D(ymax - ONE - y1, y2 - y1)); x1 += tmp; - y1 = ymax; + y1 = ymax - ONE; Log(LDEBUG, "clipped against bottom to point (%d, %d), dx=%d/%d", x1 >> CPX, y1 >> CPX, tmp >> CPX, tmp); } else if (outcode1 & 0x2) { - tmp = M(y2 - y1, D(xmax - x1, x2 - x1)); + tmp = M(y2 - y1, D(xmax - ONE - x1, x2 - x1)); y1 += tmp; - x1 = xmax; + x1 = xmax - ONE; Log(LDEBUG, "clipped against right to point (%d, %d), dy=%d/%d", x1 >> CPX, y1 >> CPX, tmp >> CPX, tmp); } else if (outcode1 & 0x1)