Explorar o código

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.
Sam Lantinga %!s(int64=11) %!d(string=hai) anos
pai
achega
80930559a3
Modificáronse 1 ficheiros con 4 adicións e 3 borrados
  1. 4 3
      src/video/SDL_rect.c

+ 4 - 3
src/video/SDL_rect.c

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