Synchronize with trunk's revision r57629.
[reactos.git] / win32ss / gdi / ntgdi / rect.c
1 /*
2 * PROJECT: ReactOS win32 kernel mode subsystem
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: subsystems/win32/win32k/objects/rect.c
5 * PURPOSE: Rect functions
6 * PROGRAMMER: Timo Kreuzer
7 */
8
9 #include <win32k.h>
10
11 #define NDEBUG
12 #include <debug.h>
13
14 /* FUNCTIONS *****************************************************************/
15
16 BOOL
17 FASTCALL
18 RECTL_bUnionRect(RECTL *prclDst, const RECTL *prcl1, const RECTL *prcl2)
19 {
20 if (RECTL_bIsEmptyRect(prcl1))
21 {
22 if (RECTL_bIsEmptyRect(prcl2))
23 {
24 RECTL_vSetEmptyRect(prclDst);
25 return FALSE;
26 }
27 else
28 {
29 *prclDst = *prcl2;
30 }
31 }
32 else
33 {
34 if (RECTL_bIsEmptyRect(prcl2))
35 {
36 *prclDst = *prcl1;
37 }
38 else
39 {
40 prclDst->left = min(prcl1->left, prcl2->left);
41 prclDst->top = min(prcl1->top, prcl2->top);
42 prclDst->right = max(prcl1->right, prcl2->right);
43 prclDst->bottom = max(prcl1->bottom, prcl2->bottom);
44 }
45 }
46
47 return TRUE;
48 }
49
50
51 BOOL
52 FASTCALL
53 RECTL_bIntersectRect(RECTL* prclDst, const RECTL* prcl1, const RECTL* prcl2)
54 {
55 prclDst->left = max(prcl1->left, prcl2->left);
56 prclDst->right = min(prcl1->right, prcl2->right);
57
58 if (prclDst->left < prclDst->right)
59 {
60 prclDst->top = max(prcl1->top, prcl2->top);
61 prclDst->bottom = min(prcl1->bottom, prcl2->bottom);
62
63 if (prclDst->top < prclDst->bottom)
64 {
65 return TRUE;
66 }
67 }
68
69 RECTL_vSetEmptyRect(prclDst);
70
71 return FALSE;
72 }
73
74 VOID
75 FASTCALL
76 RECTL_vMakeWellOrdered(RECTL *prcl)
77 {
78 LONG lTmp;
79 if (prcl->left > prcl->right)
80 {
81 lTmp = prcl->left;
82 prcl->left = prcl->right;
83 prcl->right = lTmp;
84 }
85 if (prcl->top > prcl->bottom)
86 {
87 lTmp = prcl->top;
88 prcl->top = prcl->bottom;
89 prcl->bottom = lTmp;
90 }
91 }
92
93 VOID
94 FASTCALL
95 RECTL_vInflateRect(RECTL *rect, INT dx, INT dy)
96 {
97 rect->left -= dx;
98 rect->top -= dy;
99 rect->right += dx;
100 rect->bottom += dy;
101 }
102
103 /* EOF */