hackathon-dev #1

Merged
amy merged 101 commits from hackathon-dev into develop 2019-12-12 13:56:11 -07:00
Showing only changes of commit cfc7519727 - Show all commits

View File

@ -19,7 +19,9 @@ inline static BYTE line_clip_outcode(INT32 x, INT32 y, INT32 xmin, INT32 ymin, I
return rc; 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 */ /* these macros keep the number of bits straight when doing fixed-point multiply & divide */
#define M(a, b) ((((a) * (b))) >> CPX) #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) 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; 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); Log(LDEBUG, "clipped against bottom to point (%d, %d), dx=%d/%d", x1 >> CPX, y1 >> CPX, tmp >> CPX, tmp);
} }
else if (outcode1 & 0x2) 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; 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); Log(LDEBUG, "clipped against right to point (%d, %d), dy=%d/%d", x1 >> CPX, y1 >> CPX, tmp >> CPX, tmp);
} }
else if (outcode1 & 0x1) else if (outcode1 & 0x1)