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, GO_REGION_MAGIC, GDIOBJFLAG_DEFAULT)
15 #define RGNDATA_LockRgn(hRgn) ((PROSRGNDATA)GDIOBJ_LockObj((HGDIOBJ)hRgn, GO_REGION_MAGIC))
16 #define RGNDATA_UnlockRgn(hRgn) GDIOBJ_UnlockObj((HGDIOBJ)hRgn, GO_REGION_MAGIC)
17 HRGN RGNDATA_AllocRgn(INT n);
19 BOOL RGNDATA_InternalDelete( PROSRGNDATA Obj );
21 /* User entry points */
23 W32kUnionRectWithRgn(HRGN hDest, const RECT* Rect);
27 W32kCombineRgn(HRGN hDest,
34 W32kCreateEllipticRgn(INT LeftRect,
41 W32kCreateEllipticRgnIndirect(CONST PRECT rc);
45 W32kCreatePolygonRgn(CONST PPOINT pt,
51 W32kCreatePolyPolygonRgn(CONST PPOINT pt,
52 CONST PINT PolyCounts,
58 W32kCreateRectRgn(INT LeftRect,
65 W32kCreateRectRgnIndirect(CONST PRECT rc);
69 W32kCreateRoundRectRgn(INT LeftRect,
78 W32kEqualRgn(HRGN hSrcRgn1,
83 W32kExtCreateRegion(CONST PXFORM Xform,
85 CONST PROSRGNDATA RgnData);
103 W32kGetRgnBox(HRGN hRgn,
108 W32kInvertRgn(HDC hDC,
113 W32kOffsetRgn(HRGN hRgn,
119 W32kPaintRgn(HDC hDC,
124 W32kPtInRegion(HRGN hRgn,
130 W32kRectInRegion(HRGN hRgn,
135 W32kSetRectRgn(HRGN hRgn,
143 W32kGetRegionData(HRGN hrgn,
146 HRGN REGION_CropRgn(HRGN hDst, HRGN hSrc, const PRECT lpRect, PPOINT lpPt);
148 UnsafeW32kCreateRectRgnIndirect(CONST PRECT rc);
150 UnsafeW32kGetRgnBox(HRGN hRgn,