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 FASTCALL
RGNDATA_AllocRgn(INT n
);
19 BOOL FASTCALL
RGNDATA_InternalDelete( PROSRGNDATA Obj
);
21 /* User entry points */
23 W32kUnionRectWithRgn(HRGN hDest
, CONST PRECT 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 W32kSelectVisRgn(HDC hdc
,
140 W32kSetRectRgn(HRGN hRgn
,
148 W32kGetRegionData(HRGN hrgn
,
152 HRGN STDCALL
REGION_CropRgn(HRGN hDst
, HRGN hSrc
, const PRECT lpRect
, PPOINT lpPt
);
154 HRGN STDCALL
UnsafeW32kCreateRectRgnIndirect(CONST PRECT rc
);
155 INT STDCALL
UnsafeW32kGetRgnBox(HRGN hRgn
, LPRECT pRect
);
156 HRGN FASTCALL
UnsafeW32kUnionRectWithRgn(HRGN hDest
, CONST PRECT Rect
);