]>
Commit | Line | Data |
---|---|---|
7407ac7f BB |
1 | /* |
2 | Simple DirectMedia Layer | |
3 | Copyright (C) 1997-2013 Sam Lantinga <slouken@libsdl.org> | |
4 | ||
5 | This software is provided 'as-is', without any express or implied | |
6 | warranty. In no event will the authors be held liable for any damages | |
7 | arising from the use of this software. | |
8 | ||
9 | Permission is granted to anyone to use this software for any purpose, | |
10 | including commercial applications, and to alter it and redistribute it | |
11 | freely, subject to the following restrictions: | |
12 | ||
13 | 1. The origin of this software must not be misrepresented; you must not | |
14 | claim that you wrote the original software. If you use this software | |
15 | in a product, an acknowledgment in the product documentation would be | |
16 | appreciated but is not required. | |
17 | 2. Altered source versions must be plainly marked as such, and must not be | |
18 | misrepresented as being the original software. | |
19 | 3. This notice may not be removed or altered from any source distribution. | |
20 | */ | |
21 | ||
22 | /** | |
23 | * \file SDL_rect.h | |
24 | * | |
25 | * Header file for SDL_rect definition and management functions. | |
26 | */ | |
27 | ||
28 | #ifndef _SDL_rect_h | |
29 | #define _SDL_rect_h | |
30 | ||
31 | #include "SDL_stdinc.h" | |
32 | #include "SDL_error.h" | |
33 | #include "SDL_pixels.h" | |
34 | #include "SDL_rwops.h" | |
35 | ||
36 | #include "begin_code.h" | |
37 | /* Set up for C function definitions, even when using C++ */ | |
38 | #ifdef __cplusplus | |
39 | extern "C" { | |
40 | #endif | |
41 | ||
42 | /** | |
43 | * \brief The structure that defines a point | |
44 | * | |
45 | * \sa SDL_EnclosePoints | |
46 | */ | |
47 | typedef struct | |
48 | { | |
49 | int x; | |
50 | int y; | |
51 | } SDL_Point; | |
52 | ||
53 | /** | |
54 | * \brief A rectangle, with the origin at the upper left. | |
55 | * | |
56 | * \sa SDL_RectEmpty | |
57 | * \sa SDL_RectEquals | |
58 | * \sa SDL_HasIntersection | |
59 | * \sa SDL_IntersectRect | |
60 | * \sa SDL_UnionRect | |
61 | * \sa SDL_EnclosePoints | |
62 | */ | |
63 | typedef struct SDL_Rect | |
64 | { | |
65 | int x, y; | |
66 | int w, h; | |
67 | } SDL_Rect; | |
68 | ||
69 | /** | |
70 | * \brief Returns true if the rectangle has no area. | |
71 | */ | |
72 | SDL_FORCE_INLINE SDL_bool SDL_RectEmpty(const SDL_Rect *r) | |
73 | { | |
74 | return ((!r) || (r->w <= 0) || (r->h <= 0)) ? SDL_TRUE : SDL_FALSE; | |
75 | } | |
76 | ||
77 | /** | |
78 | * \brief Returns true if the two rectangles are equal. | |
79 | */ | |
80 | SDL_FORCE_INLINE SDL_bool SDL_RectEquals(const SDL_Rect *a, const SDL_Rect *b) | |
81 | { | |
82 | return (a && b && (a->x == b->x) && (a->y == b->y) && | |
83 | (a->w == b->w) && (a->h == b->h)) ? SDL_TRUE : SDL_FALSE; | |
84 | } | |
85 | ||
86 | /** | |
87 | * \brief Determine whether two rectangles intersect. | |
88 | * | |
89 | * \return SDL_TRUE if there is an intersection, SDL_FALSE otherwise. | |
90 | */ | |
91 | extern DECLSPEC SDL_bool SDLCALL SDL_HasIntersection(const SDL_Rect * A, | |
92 | const SDL_Rect * B); | |
93 | ||
94 | /** | |
95 | * \brief Calculate the intersection of two rectangles. | |
96 | * | |
97 | * \return SDL_TRUE if there is an intersection, SDL_FALSE otherwise. | |
98 | */ | |
99 | extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRect(const SDL_Rect * A, | |
100 | const SDL_Rect * B, | |
101 | SDL_Rect * result); | |
102 | ||
103 | /** | |
104 | * \brief Calculate the union of two rectangles. | |
105 | */ | |
106 | extern DECLSPEC void SDLCALL SDL_UnionRect(const SDL_Rect * A, | |
107 | const SDL_Rect * B, | |
108 | SDL_Rect * result); | |
109 | ||
110 | /** | |
111 | * \brief Calculate a minimal rectangle enclosing a set of points | |
112 | * | |
113 | * \return SDL_TRUE if any points were within the clipping rect | |
114 | */ | |
115 | extern DECLSPEC SDL_bool SDLCALL SDL_EnclosePoints(const SDL_Point * points, | |
116 | int count, | |
117 | const SDL_Rect * clip, | |
118 | SDL_Rect * result); | |
119 | ||
120 | /** | |
121 | * \brief Calculate the intersection of a rectangle and line segment. | |
122 | * | |
123 | * \return SDL_TRUE if there is an intersection, SDL_FALSE otherwise. | |
124 | */ | |
125 | extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRectAndLine(const SDL_Rect * | |
126 | rect, int *X1, | |
127 | int *Y1, int *X2, | |
128 | int *Y2); | |
129 | ||
130 | /* Ends C function definitions when using C++ */ | |
131 | #ifdef __cplusplus | |
132 | } | |
133 | #endif | |
134 | #include "close_code.h" | |
135 | ||
136 | #endif /* _SDL_rect_h */ | |
137 | ||
138 | /* vi: set ts=4 sw=4 expandtab: */ |