9627490bbebae16a121a93a68b63a08f82f679d1
[reactos.git] / reactos / include / win32k / region.h
1
2 #ifndef __WIN32K_REGION_H
3 #define __WIN32K_REGION_H
4
5 #include <win32k/gdiobj.h>
6
7 /* Internal region data. Can't use RGNDATA structure because buffer is allocated statically */
8 typedef struct _ROSRGNDATA {
9 RGNDATAHEADER rdh;
10 PRECT Buffer;
11 } ROSRGNDATA, *PROSRGNDATA, *LPROSRGNDATA;
12
13
14 #define RGNDATA_FreeRgn(hRgn) GDIOBJ_FreeObj((HGDIOBJ)hRgn, GDI_OBJECT_TYPE_REGION)
15 #define RGNDATA_LockRgn(hRgn) ((PROSRGNDATA)GDIOBJ_LockObj((HGDIOBJ)hRgn, GDI_OBJECT_TYPE_REGION))
16 #define RGNDATA_UnlockRgn(pRgn) GDIOBJ_UnlockObjByPtr(pRgn)
17 HRGN FASTCALL RGNDATA_AllocRgn(INT n);
18 BOOL INTERNAL_CALL RGNDATA_Cleanup(PVOID ObjectBody);
19
20 /* User entry points */
21 HRGN STDCALL
22 NtGdiUnionRectWithRgn(HRGN hDest, CONST PRECT Rect);
23
24 INT
25 STDCALL
26 NtGdiCombineRgn(HRGN hDest,
27 HRGN hSrc1,
28 HRGN hSrc2,
29 INT CombineMode);
30
31 HRGN
32 STDCALL
33 NtGdiCreateEllipticRgn(INT LeftRect,
34 INT TopRect,
35 INT RightRect,
36 INT BottomRect);
37
38 HRGN
39 STDCALL
40 NtGdiCreateEllipticRgnIndirect(CONST PRECT rc);
41
42 HRGN
43 STDCALL
44 NtGdiCreatePolygonRgn(CONST PPOINT pt,
45 INT Count,
46 INT PolyFillMode);
47
48 HRGN
49 STDCALL
50 NtGdiCreatePolyPolygonRgn(CONST PPOINT pt,
51 CONST PINT PolyCounts,
52 INT Count,
53 INT PolyFillMode);
54
55 HRGN
56 STDCALL
57 NtGdiCreateRectRgn(INT LeftRect,
58 INT TopRect,
59 INT RightRect,
60 INT BottomRect);
61
62 HRGN
63 STDCALL
64 NtGdiCreateRectRgnIndirect(CONST PRECT rc);
65
66 HRGN
67 STDCALL
68 NtGdiCreateRoundRectRgn(INT LeftRect,
69 INT TopRect,
70 INT RightRect,
71 INT BottomRect,
72 INT WidthEllipse,
73 INT HeightEllipse);
74
75 BOOL
76 STDCALL
77 NtGdiEqualRgn(HRGN hSrcRgn1,
78 HRGN hSrcRgn2);
79
80 HRGN
81 STDCALL
82 NtGdiExtCreateRegion(CONST XFORM *Xform,
83 DWORD Count,
84 CONST RGNDATA *RgnData);
85
86 BOOL
87 STDCALL
88 NtGdiFillRgn(HDC hDC,
89 HRGN hRgn,
90 HBRUSH hBrush);
91
92 BOOL
93 STDCALL
94 NtGdiFrameRgn(HDC hDC,
95 HRGN hRgn,
96 HBRUSH hBrush,
97 INT Width,
98 INT Height);
99
100 INT
101 STDCALL
102 NtGdiGetRgnBox(HRGN hRgn,
103 LPRECT Rect);
104
105 BOOL
106 STDCALL
107 NtGdiInvertRgn(HDC hDC,
108 HRGN hRgn);
109
110 INT
111 STDCALL
112 NtGdiOffsetRgn(HRGN hRgn,
113 INT XOffset,
114 INT YOffset);
115
116 BOOL
117 STDCALL
118 NtGdiPaintRgn(HDC hDC,
119 HRGN hRgn);
120
121 BOOL
122 STDCALL
123 NtGdiPtInRegion(HRGN hRgn,
124 INT X,
125 INT Y);
126
127 BOOL
128 STDCALL
129 NtGdiRectInRegion(HRGN hRgn,
130 CONST LPRECT rc);
131
132 INT
133 STDCALL
134 NtGdiSelectVisRgn(HDC hdc,
135 HRGN hrgn);
136
137 BOOL
138 STDCALL
139 NtGdiSetRectRgn(HRGN hRgn,
140 INT LeftRect,
141 INT TopRect,
142 INT RightRect,
143 INT BottomRect);
144
145 DWORD
146 STDCALL
147 NtGdiGetRegionData(HRGN hrgn,
148 DWORD count,
149 LPRGNDATA rgndata);
150 #endif
151