2 #ifndef __WIN32K_REGION_H
3 #define __WIN32K_REGION_H
7 /* Type definitions ***********************************************************/
9 /* Internal region data.
10 Can't use RGNDATA structure because buffer is allocated statically */
11 typedef struct _ROSRGNDATA
13 /* Header for all gdi objects in the handle table.
14 Do not (re)move this. */
15 BASEOBJECT BaseObject
;
19 } ROSRGNDATA
, *PROSRGNDATA
, *LPROSRGNDATA
;
22 /* Functions ******************************************************************/
24 #define REGION_FreeRgn(hRgn) GDIOBJ_FreeObj((HGDIOBJ)hRgn, GDI_OBJECT_TYPE_REGION)
25 #define REGION_LockRgn(hRgn) ((PROSRGNDATA)GDIOBJ_LockObj((HGDIOBJ)hRgn, GDI_OBJECT_TYPE_REGION))
26 #define REGION_UnlockRgn(pRgn) GDIOBJ_UnlockObjByPtr((POBJ)pRgn)
28 PROSRGNDATA FASTCALL
REGION_AllocRgnWithHandle(INT n
);
29 VOID FASTCALL
REGION_UnionRectWithRgn(ROSRGNDATA
*rgn
, CONST RECT
*rect
);
30 INT FASTCALL
REGION_GetRgnBox(PROSRGNDATA Rgn
, LPRECT pRect
);
31 BOOL FASTCALL
REGION_RectInRegion(PROSRGNDATA Rgn
, CONST LPRECT rc
);
32 BOOL FASTCALL
REGION_CropAndOffsetRegion(PROSRGNDATA rgnDst
, PROSRGNDATA rgnSrc
, const PRECT rect
, const PPOINT off
);
33 VOID FASTCALL
REGION_SetRectRgn(PROSRGNDATA pRgn
, INT LeftRect
, INT TopRect
, INT RightRect
, INT BottomRect
);
34 BOOL INTERNAL_CALL
REGION_Cleanup(PVOID ObjectBody
);
36 INT STDCALL
IntGdiGetRgnBox(HRGN
, LPRECT
);
37 BOOL FASTCALL
IntGdiPaintRgn(PDC
, HRGN
);
38 HRGN FASTCALL
GdiCreatePolyPolygonRgn(CONST PPOINT
, CONST PINT
, INT
, INT
);
39 int FASTCALL
IntGdiGetClipBox(HDC hDC
, LPRECT rc
);
40 INT STDCALL
IntGdiSelectVisRgn(HDC hdc
, HRGN hrgn
);
43 #define UnsafeIntCreateRectRgnIndirect(prc) \
44 NtGdiCreateRectRgn((prc)->left, (prc)->top, (prc)->right, (prc)->bottom)
46 #endif /* not __WIN32K_REGION_H */