Fixed bug 2012 - Algorithm logic getting wrong in ComputeOutCode

Nitz

I was going through the SDL_IntersectRectAndLine function and wondered to see the ComputeOutCode function implementation.

The problem in this algo is, x and y axis are getting check with respect to 0, Which is wrong, it should be get checked with respect to rectangle x and y axis.
This commit is contained in:
Sam Lantinga 2013-10-21 00:25:43 -07:00
parent 6f76bc290a
commit 80930559a3

View File

@ -296,15 +296,16 @@ SDL_EnclosePoints(const SDL_Point * points, int count, const SDL_Rect * clip,
#define CODE_LEFT 4 #define CODE_LEFT 4
#define CODE_RIGHT 8 #define CODE_RIGHT 8
static int ComputeOutCode(const SDL_Rect * rect, int x, int y) static int
ComputeOutCode(const SDL_Rect * rect, int x, int y)
{ {
int code = 0; int code = 0;
if (y < 0) { if (y < rect->y) {
code |= CODE_TOP; code |= CODE_TOP;
} else if (y >= rect->y + rect->h) { } else if (y >= rect->y + rect->h) {
code |= CODE_BOTTOM; code |= CODE_BOTTOM;
} }
if (x < 0) { if (x < rect->x) {
code |= CODE_LEFT; code |= CODE_LEFT;
} else if (x >= rect->x + rect->w) { } else if (x >= rect->x + rect->w) {
code |= CODE_RIGHT; code |= CODE_RIGHT;