mirror of https://github.com/encounter/SDL.git
SDL_Rect: minor code cleanups.
This commit is contained in:
parent
c573ebe143
commit
4d9bef604a
|
@ -31,16 +31,11 @@ SDL_HasIntersection(const SDL_Rect * A, const SDL_Rect * B)
|
||||||
if (!A) {
|
if (!A) {
|
||||||
SDL_InvalidParamError("A");
|
SDL_InvalidParamError("A");
|
||||||
return SDL_FALSE;
|
return SDL_FALSE;
|
||||||
}
|
} else if (!B) {
|
||||||
|
|
||||||
if (!B) {
|
|
||||||
SDL_InvalidParamError("B");
|
SDL_InvalidParamError("B");
|
||||||
return SDL_FALSE;
|
return SDL_FALSE;
|
||||||
}
|
} else if (SDL_RectEmpty(A) || SDL_RectEmpty(B)) {
|
||||||
|
return SDL_FALSE; /* Special cases for empty rects */
|
||||||
/* Special cases for empty rects */
|
|
||||||
if (SDL_RectEmpty(A) || SDL_RectEmpty(B)) {
|
|
||||||
return SDL_FALSE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Horizontal intersection */
|
/* Horizontal intersection */
|
||||||
|
@ -48,25 +43,29 @@ SDL_HasIntersection(const SDL_Rect * A, const SDL_Rect * B)
|
||||||
Amax = Amin + A->w;
|
Amax = Amin + A->w;
|
||||||
Bmin = B->x;
|
Bmin = B->x;
|
||||||
Bmax = Bmin + B->w;
|
Bmax = Bmin + B->w;
|
||||||
if (Bmin > Amin)
|
if (Bmin > Amin) {
|
||||||
Amin = Bmin;
|
Amin = Bmin;
|
||||||
if (Bmax < Amax)
|
}
|
||||||
|
if (Bmax < Amax) {
|
||||||
Amax = Bmax;
|
Amax = Bmax;
|
||||||
if (Amax <= Amin)
|
}
|
||||||
|
if (Amax <= Amin) {
|
||||||
return SDL_FALSE;
|
return SDL_FALSE;
|
||||||
|
}
|
||||||
/* Vertical intersection */
|
/* Vertical intersection */
|
||||||
Amin = A->y;
|
Amin = A->y;
|
||||||
Amax = Amin + A->h;
|
Amax = Amin + A->h;
|
||||||
Bmin = B->y;
|
Bmin = B->y;
|
||||||
Bmax = Bmin + B->h;
|
Bmax = Bmin + B->h;
|
||||||
if (Bmin > Amin)
|
if (Bmin > Amin) {
|
||||||
Amin = Bmin;
|
Amin = Bmin;
|
||||||
if (Bmax < Amax)
|
}
|
||||||
|
if (Bmax < Amax) {
|
||||||
Amax = Bmax;
|
Amax = Bmax;
|
||||||
if (Amax <= Amin)
|
}
|
||||||
|
if (Amax <= Amin) {
|
||||||
return SDL_FALSE;
|
return SDL_FALSE;
|
||||||
|
}
|
||||||
return SDL_TRUE;
|
return SDL_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -78,20 +77,13 @@ SDL_IntersectRect(const SDL_Rect * A, const SDL_Rect * B, SDL_Rect * result)
|
||||||
if (!A) {
|
if (!A) {
|
||||||
SDL_InvalidParamError("A");
|
SDL_InvalidParamError("A");
|
||||||
return SDL_FALSE;
|
return SDL_FALSE;
|
||||||
}
|
} else if (!B) {
|
||||||
|
|
||||||
if (!B) {
|
|
||||||
SDL_InvalidParamError("B");
|
SDL_InvalidParamError("B");
|
||||||
return SDL_FALSE;
|
return SDL_FALSE;
|
||||||
}
|
} else if (!result) {
|
||||||
|
|
||||||
if (!result) {
|
|
||||||
SDL_InvalidParamError("result");
|
SDL_InvalidParamError("result");
|
||||||
return SDL_FALSE;
|
return SDL_FALSE;
|
||||||
}
|
} else if (SDL_RectEmpty(A) || SDL_RectEmpty(B)) { /* Special cases for empty rects */
|
||||||
|
|
||||||
/* Special cases for empty rects */
|
|
||||||
if (SDL_RectEmpty(A) || SDL_RectEmpty(B)) {
|
|
||||||
result->w = 0;
|
result->w = 0;
|
||||||
result->h = 0;
|
result->h = 0;
|
||||||
return SDL_FALSE;
|
return SDL_FALSE;
|
||||||
|
@ -102,11 +94,13 @@ SDL_IntersectRect(const SDL_Rect * A, const SDL_Rect * B, SDL_Rect * result)
|
||||||
Amax = Amin + A->w;
|
Amax = Amin + A->w;
|
||||||
Bmin = B->x;
|
Bmin = B->x;
|
||||||
Bmax = Bmin + B->w;
|
Bmax = Bmin + B->w;
|
||||||
if (Bmin > Amin)
|
if (Bmin > Amin) {
|
||||||
Amin = Bmin;
|
Amin = Bmin;
|
||||||
|
}
|
||||||
result->x = Amin;
|
result->x = Amin;
|
||||||
if (Bmax < Amax)
|
if (Bmax < Amax) {
|
||||||
Amax = Bmax;
|
Amax = Bmax;
|
||||||
|
}
|
||||||
result->w = Amax - Amin;
|
result->w = Amax - Amin;
|
||||||
|
|
||||||
/* Vertical intersection */
|
/* Vertical intersection */
|
||||||
|
@ -114,11 +108,13 @@ SDL_IntersectRect(const SDL_Rect * A, const SDL_Rect * B, SDL_Rect * result)
|
||||||
Amax = Amin + A->h;
|
Amax = Amin + A->h;
|
||||||
Bmin = B->y;
|
Bmin = B->y;
|
||||||
Bmax = Bmin + B->h;
|
Bmax = Bmin + B->h;
|
||||||
if (Bmin > Amin)
|
if (Bmin > Amin) {
|
||||||
Amin = Bmin;
|
Amin = Bmin;
|
||||||
|
}
|
||||||
result->y = Amin;
|
result->y = Amin;
|
||||||
if (Bmax < Amax)
|
if (Bmax < Amax) {
|
||||||
Amax = Bmax;
|
Amax = Bmax;
|
||||||
|
}
|
||||||
result->h = Amax - Amin;
|
result->h = Amax - Amin;
|
||||||
|
|
||||||
return !SDL_RectEmpty(result);
|
return !SDL_RectEmpty(result);
|
||||||
|
@ -132,35 +128,22 @@ SDL_UnionRect(const SDL_Rect * A, const SDL_Rect * B, SDL_Rect * result)
|
||||||
if (!A) {
|
if (!A) {
|
||||||
SDL_InvalidParamError("A");
|
SDL_InvalidParamError("A");
|
||||||
return;
|
return;
|
||||||
}
|
} else if (!B) {
|
||||||
|
|
||||||
if (!B) {
|
|
||||||
SDL_InvalidParamError("B");
|
SDL_InvalidParamError("B");
|
||||||
return;
|
return;
|
||||||
}
|
} else if (!result) {
|
||||||
|
|
||||||
if (!result) {
|
|
||||||
SDL_InvalidParamError("result");
|
SDL_InvalidParamError("result");
|
||||||
return;
|
return;
|
||||||
}
|
} else if (SDL_RectEmpty(A)) { /* Special cases for empty Rects */
|
||||||
|
if (SDL_RectEmpty(B)) { /* A and B empty */
|
||||||
/* Special cases for empty Rects */
|
SDL_zerop(result);
|
||||||
if (SDL_RectEmpty(A)) {
|
} else { /* A empty, B not empty */
|
||||||
if (SDL_RectEmpty(B)) {
|
*result = *B;
|
||||||
/* A and B empty */
|
}
|
||||||
SDL_zerop(result);
|
return;
|
||||||
return;
|
} else if (SDL_RectEmpty(B)) { /* A not empty, B empty */
|
||||||
} else {
|
|
||||||
/* A empty, B not empty */
|
|
||||||
*result = *B;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (SDL_RectEmpty(B)) {
|
|
||||||
/* A not empty, B empty */
|
|
||||||
*result = *A;
|
*result = *A;
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Horizontal union */
|
/* Horizontal union */
|
||||||
|
@ -168,11 +151,13 @@ SDL_UnionRect(const SDL_Rect * A, const SDL_Rect * B, SDL_Rect * result)
|
||||||
Amax = Amin + A->w;
|
Amax = Amin + A->w;
|
||||||
Bmin = B->x;
|
Bmin = B->x;
|
||||||
Bmax = Bmin + B->w;
|
Bmax = Bmin + B->w;
|
||||||
if (Bmin < Amin)
|
if (Bmin < Amin) {
|
||||||
Amin = Bmin;
|
Amin = Bmin;
|
||||||
|
}
|
||||||
result->x = Amin;
|
result->x = Amin;
|
||||||
if (Bmax > Amax)
|
if (Bmax > Amax) {
|
||||||
Amax = Bmax;
|
Amax = Bmax;
|
||||||
|
}
|
||||||
result->w = Amax - Amin;
|
result->w = Amax - Amin;
|
||||||
|
|
||||||
/* Vertical union */
|
/* Vertical union */
|
||||||
|
@ -180,11 +165,13 @@ SDL_UnionRect(const SDL_Rect * A, const SDL_Rect * B, SDL_Rect * result)
|
||||||
Amax = Amin + A->h;
|
Amax = Amin + A->h;
|
||||||
Bmin = B->y;
|
Bmin = B->y;
|
||||||
Bmax = Bmin + B->h;
|
Bmax = Bmin + B->h;
|
||||||
if (Bmin < Amin)
|
if (Bmin < Amin) {
|
||||||
Amin = Bmin;
|
Amin = Bmin;
|
||||||
|
}
|
||||||
result->y = Amin;
|
result->y = Amin;
|
||||||
if (Bmax > Amax)
|
if (Bmax > Amax) {
|
||||||
Amax = Bmax;
|
Amax = Bmax;
|
||||||
|
}
|
||||||
result->h = Amax - Amin;
|
result->h = Amax - Amin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -201,9 +188,7 @@ SDL_EnclosePoints(const SDL_Point * points, int count, const SDL_Rect * clip,
|
||||||
if (!points) {
|
if (!points) {
|
||||||
SDL_InvalidParamError("points");
|
SDL_InvalidParamError("points");
|
||||||
return SDL_FALSE;
|
return SDL_FALSE;
|
||||||
}
|
} else if (count < 1) {
|
||||||
|
|
||||||
if (count < 1) {
|
|
||||||
SDL_InvalidParamError("count");
|
SDL_InvalidParamError("count");
|
||||||
return SDL_FALSE;
|
return SDL_FALSE;
|
||||||
}
|
}
|
||||||
|
@ -330,31 +315,20 @@ SDL_IntersectRectAndLine(const SDL_Rect * rect, int *X1, int *Y1, int *X2,
|
||||||
if (!rect) {
|
if (!rect) {
|
||||||
SDL_InvalidParamError("rect");
|
SDL_InvalidParamError("rect");
|
||||||
return SDL_FALSE;
|
return SDL_FALSE;
|
||||||
}
|
} else if (!X1) {
|
||||||
|
|
||||||
if (!X1) {
|
|
||||||
SDL_InvalidParamError("X1");
|
SDL_InvalidParamError("X1");
|
||||||
return SDL_FALSE;
|
return SDL_FALSE;
|
||||||
}
|
} else if (!Y1) {
|
||||||
|
|
||||||
if (!Y1) {
|
|
||||||
SDL_InvalidParamError("Y1");
|
SDL_InvalidParamError("Y1");
|
||||||
return SDL_FALSE;
|
return SDL_FALSE;
|
||||||
}
|
} else if (!X2) {
|
||||||
|
|
||||||
if (!X2) {
|
|
||||||
SDL_InvalidParamError("X2");
|
SDL_InvalidParamError("X2");
|
||||||
return SDL_FALSE;
|
return SDL_FALSE;
|
||||||
}
|
} else if (!Y2) {
|
||||||
|
|
||||||
if (!Y2) {
|
|
||||||
SDL_InvalidParamError("Y2");
|
SDL_InvalidParamError("Y2");
|
||||||
return SDL_FALSE;
|
return SDL_FALSE;
|
||||||
}
|
} else if (SDL_RectEmpty(rect)) {
|
||||||
|
return SDL_FALSE; /* Special case for empty rect */
|
||||||
/* Special case for empty rect */
|
|
||||||
if (SDL_RectEmpty(rect)) {
|
|
||||||
return SDL_FALSE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
x1 = *X1;
|
x1 = *X1;
|
||||||
|
@ -378,8 +352,7 @@ SDL_IntersectRectAndLine(const SDL_Rect * rect, int *X1, int *Y1, int *X2,
|
||||||
return SDL_FALSE;
|
return SDL_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (y1 == y2) {
|
if (y1 == y2) { /* Horizontal line, easy to clip */
|
||||||
/* Horizontal line, easy to clip */
|
|
||||||
if (x1 < rectx1) {
|
if (x1 < rectx1) {
|
||||||
*X1 = rectx1;
|
*X1 = rectx1;
|
||||||
} else if (x1 > rectx2) {
|
} else if (x1 > rectx2) {
|
||||||
|
@ -393,8 +366,7 @@ SDL_IntersectRectAndLine(const SDL_Rect * rect, int *X1, int *Y1, int *X2,
|
||||||
return SDL_TRUE;
|
return SDL_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (x1 == x2) {
|
if (x1 == x2) { /* Vertical line, easy to clip */
|
||||||
/* Vertical line, easy to clip */
|
|
||||||
if (y1 < recty1) {
|
if (y1 < recty1) {
|
||||||
*Y1 = recty1;
|
*Y1 = recty1;
|
||||||
} else if (y1 > recty2) {
|
} else if (y1 > recty2) {
|
||||||
|
@ -476,24 +448,16 @@ SDL_GetSpanEnclosingRect(int width, int height,
|
||||||
if (width < 1) {
|
if (width < 1) {
|
||||||
SDL_InvalidParamError("width");
|
SDL_InvalidParamError("width");
|
||||||
return SDL_FALSE;
|
return SDL_FALSE;
|
||||||
}
|
} else if (height < 1) {
|
||||||
|
|
||||||
if (height < 1) {
|
|
||||||
SDL_InvalidParamError("height");
|
SDL_InvalidParamError("height");
|
||||||
return SDL_FALSE;
|
return SDL_FALSE;
|
||||||
}
|
} else if (!rects) {
|
||||||
|
|
||||||
if (!rects) {
|
|
||||||
SDL_InvalidParamError("rects");
|
SDL_InvalidParamError("rects");
|
||||||
return SDL_FALSE;
|
return SDL_FALSE;
|
||||||
}
|
} else if (!span) {
|
||||||
|
|
||||||
if (!span) {
|
|
||||||
SDL_InvalidParamError("span");
|
SDL_InvalidParamError("span");
|
||||||
return SDL_FALSE;
|
return SDL_FALSE;
|
||||||
}
|
} else if (numrects < 1) {
|
||||||
|
|
||||||
if (numrects < 1) {
|
|
||||||
SDL_InvalidParamError("numrects");
|
SDL_InvalidParamError("numrects");
|
||||||
return SDL_FALSE;
|
return SDL_FALSE;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue