2 #ifndef __WIN32K_REGION_H
3 #define __WIN32K_REGION_H
5 #include <win32k/gdiobj.h>
7 /* Internal region data. Can't use RGNDATA structure because buffer is allocated statically */
8 typedef struct _ROSRGNDATA {
11 } ROSRGNDATA, *PROSRGNDATA, *LPROSRGNDATA;
14 #define RGNDATA_FreeRgn(hRgn) GDIOBJ_FreeObj((HGDIOBJ)hRgn, GDI_OBJECT_TYPE_REGION, GDIOBJFLAG_DEFAULT)
15 #define RGNDATA_LockRgn(hRgn) ((PROSRGNDATA)GDIOBJ_LockObj((HGDIOBJ)hRgn, GDI_OBJECT_TYPE_REGION))
16 #define RGNDATA_UnlockRgn(hRgn) GDIOBJ_UnlockObj((HGDIOBJ)hRgn, GDI_OBJECT_TYPE_REGION)
17 HRGN FASTCALL RGNDATA_AllocRgn(INT n);
19 BOOL FASTCALL RGNDATA_InternalDelete( PROSRGNDATA Obj );
21 /* User entry points */
23 NtGdiUnionRectWithRgn(HRGN hDest, CONST PRECT Rect);
27 NtGdiCombineRgn(HRGN hDest,
34 NtGdiCreateEllipticRgn(INT LeftRect,
41 NtGdiCreateEllipticRgnIndirect(CONST PRECT rc);
45 NtGdiCreatePolygonRgn(CONST PPOINT pt,
51 NtGdiCreatePolyPolygonRgn(CONST PPOINT pt,
52 CONST PINT PolyCounts,
58 NtGdiCreateRectRgn(INT LeftRect,
65 NtGdiCreateRectRgnIndirect(CONST PRECT rc);
69 NtGdiCreateRoundRectRgn(INT LeftRect,
78 NtGdiEqualRgn(HRGN hSrcRgn1,
83 NtGdiExtCreateRegion(CONST PXFORM Xform,
85 CONST PROSRGNDATA RgnData);
95 NtGdiFrameRgn(HDC hDC,
103 NtGdiGetRgnBox(HRGN hRgn,
108 NtGdiInvertRgn(HDC hDC,
113 NtGdiOffsetRgn(HRGN hRgn,
119 NtGdiPaintRgn(HDC hDC,
124 NtGdiPtInRegion(HRGN hRgn,
130 NtGdiRectInRegion(HRGN hRgn,
135 NtGdiSelectVisRgn(HDC hdc,
140 NtGdiSetRectRgn(HRGN hRgn,
148 NtGdiGetRegionData(HRGN hrgn,
152 HRGN STDCALL REGION_CropRgn(HRGN hDst, HRGN hSrc, const PRECT lpRect, PPOINT lpPt);
154 HRGN STDCALL UnsafeIntCreateRectRgnIndirect(CONST PRECT rc);
155 INT STDCALL UnsafeIntGetRgnBox(HRGN hRgn, LPRECT pRect);
156 HRGN FASTCALL UnsafeIntUnionRectWithRgn(HRGN hDest, CONST PRECT Rect);
157 BOOL FASTCALL UnsafeIntRectInRegion(HRGN hRgn, CONST LPRECT rc);