1 /*
2  * PROJECT:         ReactOS api tests
3  * LICENSE:         GPL - See COPYING in the top level directory
4  * PURPOSE:         Test for NtGdiCombineRgn
5  * PROGRAMMERS:
6  */
7 
8 #include "../win32nt.h"
9 
10 START_TEST(NtGdiCombineRgn)
11 {
12     HRGN hRgnDest, hRgn1, hRgn2;
13 // test what params are accepted for what operations
14 // 0? invalid? are params maybe ignored in some cases?
15 // LastError
16 
17     /* Preparation */
18     hRgnDest = CreateRectRgn(0,0,1,1);
19     hRgn1 = CreateRectRgn(1,1,4,4);
20     hRgn2 = CreateRectRgn(2,2,6,3);
21 
22     /* RGN_AND = 1, RGN_OR = 2, RGN_XOR = 3, RGN_DIFF = 4, RGN_COPY = 5 */
23 
24     ok_int(NtGdiCombineRgn(hRgnDest, hRgn1, hRgn2, 0), ERROR);
25     ok_int(NtGdiCombineRgn(hRgnDest, hRgn1, hRgn2, 6), ERROR);
26 
27     SetLastError(ERROR_SUCCESS);
28     ok_int(NtGdiCombineRgn(hRgnDest, 0, 0, RGN_AND), ERROR);
29     ok_long(GetLastError(), ERROR_INVALID_HANDLE);
30     SetLastError(ERROR_SUCCESS);
31     ok_int(NtGdiCombineRgn(hRgnDest, hRgn1, 0, RGN_AND), ERROR);
32     ok_long(GetLastError(), ERROR_INVALID_HANDLE);
33     SetLastError(ERROR_SUCCESS);
34     ok_int(NtGdiCombineRgn(hRgnDest, 0, hRgn1, RGN_AND), ERROR);
35     ok_long(GetLastError(), ERROR_INVALID_HANDLE);
36     SetLastError(ERROR_SUCCESS);
37     ok_int(NtGdiCombineRgn(0, hRgn1, hRgn2, RGN_AND), ERROR);
38     ok_long(GetLastError(), ERROR_INVALID_HANDLE);
39 
40     /* Create intersection */
41     ok_int(NtGdiCombineRgn(hRgnDest, hRgn1, hRgn2, RGN_AND), SIMPLEREGION);
42     SetRectRgn(hRgn1, 2, 2, 4, 3);
43     ok_int(NtGdiCombineRgn(hRgnDest, hRgnDest, hRgn1, RGN_XOR), NULLREGION);
44 
45     /* Create intersection with itself */
46     SetRectRgn(hRgnDest, 2, 2, 4, 3);
47     ok_int(NtGdiCombineRgn(hRgnDest, hRgnDest, hRgnDest, RGN_AND), SIMPLEREGION);
48     SetRectRgn(hRgn1, 2, 2, 4, 3);
49     ok_int(NtGdiCombineRgn(hRgnDest, hRgnDest, hRgn1, RGN_XOR), NULLREGION);
50 
51     /* What if 2 regions are the same */
52 }
53