1b6b80b196739f58dc5f087a6af97735abc6c4de
[reactos.git] / reactos / include / win32k / region.h
1
2 #ifndef __WIN32K_REGION_H
3 #define __WIN32K_REGION_H
4
5 #include <structs.h>
6 #include <win32k/gdiobj.h>
7
8 /* Internal functions */
9 /*
10 #define RGNDATA_PtrToHandle(pRgn) \
11 ((HRGN) GDIOBJ_PtrToHandle ((PGDIOBJ) pRgn, GO_REGION_MAGIC))
12 */
13 #define RGNDATA_HandleToPtr(hRgn) \
14 ((RGNDATA *) GDIOBJ_LockObj ((HGDIOBJ) hRgn, GO_REGION_MAGIC))
15
16 /* call GDIOBJ_ReleaseObj when reference counting is added */
17 #define RGNDATA_Release(hRgn) {}
18
19 /* GDI logical region object */
20 typedef struct tagRGNOBJ
21 {
22 GDIOBJHDR header;
23 RGNDATA* rgn;
24 } RGNOBJ;
25
26 /* User entry points */
27 INT STDCALL
28 W32kGetBoxRgn(HRGN hRgn, PRECT Rect);
29 HRGN STDCALL
30 W32kCropRgn(HRGN hDest, HRGN hSrc, const RECT* Rect, const POINT* Point);
31 HRGN STDCALL
32 W32kUnionRectWithRgn(HRGN hDest, const RECT* Rect);
33
34 INT
35 STDCALL
36 W32kCombineRgn(HRGN hDest,
37 HRGN hSrc1,
38 HRGN hSrc2,
39 INT CombineMode);
40
41 HRGN
42 STDCALL
43 W32kCreateEllipticRgn(INT LeftRect,
44 INT TopRect,
45 INT RightRect,
46 INT BottomRect);
47
48 HRGN
49 STDCALL
50 W32kCreateEllipticRgnIndirect(CONST PRECT rc);
51
52 HRGN
53 STDCALL
54 W32kCreatePolygonRgn(CONST PPOINT pt,
55 INT Count,
56 INT PolyFillMode);
57
58 HRGN
59 STDCALL
60 W32kCreatePolyPolygonRgn(CONST PPOINT pt,
61 CONST PINT PolyCounts,
62 INT Count,
63 INT PolyFillMode);
64
65 HRGN
66 STDCALL
67 W32kCreateRectRgn(INT LeftRect,
68 INT TopRect,
69 INT RightRect,
70 INT BottomRect);
71
72 HRGN
73 STDCALL
74 W32kCreateRectRgnIndirect(CONST PRECT rc);
75
76 HRGN
77 STDCALL
78 W32kCreateRoundRectRgn(INT LeftRect,
79 INT TopRect,
80 INT RightRect,
81 INT BottomRect,
82 INT WidthEllipse,
83 INT HeightEllipse);
84
85 BOOL
86 STDCALL
87 W32kEqualRgn(HRGN hSrcRgn1,
88 HRGN hSrcRgn2);
89
90 HRGN
91 STDCALL
92 W32kExtCreateRegion(CONST PXFORM Xform,
93 DWORD Count,
94 CONST PRGNDATA RgnData);
95
96 BOOL
97 STDCALL
98 W32kFillRgn(HDC hDC,
99 HRGN hRgn,
100 HBRUSH hBrush);
101
102 BOOL
103 STDCALL
104 W32kFrameRgn(HDC hDC,
105 HRGN hRgn,
106 HBRUSH hBrush,
107 INT Width,
108 INT Height);
109
110 INT
111 STDCALL
112 W32kGetRgnBox(HRGN hRgn,
113 LPRECT Rect);
114
115 BOOL
116 STDCALL
117 W32kInvertRgn(HDC hDC,
118 HRGN hRgn);
119
120 INT
121 STDCALL
122 W32kOffsetRgn(HRGN hRgn,
123 INT XOffset,
124 INT YOffset);
125
126 BOOL
127 STDCALL
128 W32kPaintRgn(HDC hDC,
129 HRGN hRgn);
130
131 BOOL
132 STDCALL
133 W32kPtInRegion(HRGN hRgn,
134 INT X,
135 INT Y);
136
137 BOOL
138 STDCALL
139 W32kRectInRegion(HRGN hRgn,
140 CONST LPRECT rc);
141
142 BOOL
143 STDCALL
144 W32kSetRectRgn(HRGN hRgn,
145 INT LeftRect,
146 INT TopRect,
147 INT RightRect,
148 INT BottomRect);
149
150 #endif
151