mirror of https://github.com/encounter/SDL.git
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:
parent
6f76bc290a
commit
80930559a3
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue