[WIN32SS][NTGDI] Extend PATH_FillPath as PATH_FillPathEx (#798)
[reactos.git] / win32ss / gdi / ntgdi / region.h
index 778dd29..0d4f454 100644 (file)
@@ -4,74 +4,95 @@
 
 /* Internal region data.
    Can't use RGNDATA structure because buffer is allocated statically */
-typedef struct _ROSRGNDATA
+typedef struct _REGION
 {
   /* Header for all gdi objects in the handle table.
      Do not (re)move this. */
-  BASEOBJECT    BaseObject;
-  PRGN_ATTR prgnattr;
+  BASEOBJECT BaseObject;
+  _Notnull_ PRGN_ATTR prgnattr;
   RGN_ATTR rgnattr;
 
   RGNDATAHEADER rdh;
-  RECTL        *Buffer;
-} ROSRGNDATA, *PROSRGNDATA, *LPROSRGNDATA, REGION, *PREGION;
+  RECTL *Buffer;
+} REGION, *PREGION;
 
+/* Globals ********************************************************************/
+
+extern PREGION prgnDefault;
+extern HRGN hrgnDefault;
 
 /* Functions ******************************************************************/
 
-#define  REGION_FreeRgn(pRgn)  GDIOBJ_FreeObj((POBJ)pRgn, GDIObjType_RGN_TYPE)
-#define  REGION_FreeRgnByHandle(hRgn)  GDIOBJ_FreeObjByHandle((HGDIOBJ)hRgn, GDI_OBJECT_TYPE_REGION)
+PREGION FASTCALL REGION_AllocRgnWithHandle(INT n);
+PREGION FASTCALL REGION_AllocUserRgnWithHandle(INT n);
+VOID FASTCALL REGION_UnionRectWithRgn(PREGION rgn, const RECTL *rect);
+INT FASTCALL REGION_SubtractRectFromRgn(PREGION prgnDest, PREGION prgnSrc, const RECTL *prcl);
+INT FASTCALL REGION_GetRgnBox(PREGION Rgn, RECTL *pRect);
+BOOL FASTCALL REGION_RectInRegion(PREGION Rgn, const RECTL *rc);
+BOOL FASTCALL REGION_PtInRegion(PREGION, INT, INT);
+INT FASTCALL REGION_CropRegion(PREGION rgnDst, PREGION rgnSrc, const RECTL *rect);
+VOID FASTCALL REGION_SetRectRgn(PREGION pRgn, INT LeftRect, INT TopRect, INT RightRect, INT BottomRect);
+VOID NTAPI REGION_vCleanup(PVOID ObjectBody);
+VOID FASTCALL REGION_Delete(PREGION);
+INT APIENTRY IntGdiGetRgnBox(HRGN, RECTL*);
 
-PROSRGNDATA FASTCALL REGION_AllocRgnWithHandle(INT n);
-PROSRGNDATA FASTCALL REGION_AllocUserRgnWithHandle(INT n);
-VOID FASTCALL REGION_UnionRectWithRgn(ROSRGNDATA *rgn, const RECTL *rect);
-INT FASTCALL REGION_GetRgnBox(PROSRGNDATA Rgn, RECTL *pRect);
-BOOL FASTCALL REGION_RectInRegion(PROSRGNDATA Rgn, const RECTL *rc);
-BOOL FASTCALL REGION_CropAndOffsetRegion(PROSRGNDATA rgnDst, PROSRGNDATA rgnSrc, const RECTL *rect, const POINT *off);
-VOID FASTCALL REGION_SetRectRgn(PROSRGNDATA pRgn, INT LeftRect, INT TopRect, INT RightRect, INT BottomRect);
-BOOL NTAPI REGION_Cleanup(PVOID ObjectBody);
+PREGION
+FASTCALL
+REGION_LockRgn(
+    _In_ HRGN hrgn);
 
-extern PROSRGNDATA prgnDefault;
-extern HRGN        hrgnDefault;
+VOID
+FASTCALL
+REGION_UnlockRgn(
+    _In_ PREGION prgn);
 
-VOID FASTCALL REGION_Delete(PROSRGNDATA);
-VOID FASTCALL IntGdiReleaseRaoRgn(PDC);
-VOID FASTCALL IntGdiReleaseVisRgn(PDC);
+BOOL
+FASTCALL
+REGION_bXformRgn(
+    _Inout_ PREGION prgn,
+    _In_ PMATRIX pmx);
+
+BOOL
+FASTCALL
+REGION_SetPolyPolygonRgn(
+    _Inout_ PREGION prgn,
+    _In_ const POINT *ppt,
+    _In_ const ULONG *pcPoints,
+    _In_ ULONG cPolygons,
+    _In_ INT iMode);
+
+HRGN
+NTAPI
+GreCreatePolyPolygonRgn(
+    _In_ const POINT *ppt,
+    _In_ const ULONG *pcPoints,
+    _In_ ULONG cPolygons,
+    _In_ INT iMode);
+
+BOOL
+FASTCALL
+REGION_bOffsetRgn(
+    _Inout_ PREGION prgn,
+    _In_ INT cx,
+    _In_ INT cy);
 
-INT APIENTRY IntGdiGetRgnBox(HRGN, RECTL*);
-BOOL FASTCALL IntGdiPaintRgn(PDC, HRGN );
-HRGN FASTCALL IntCreatePolyPolygonRgn(PPOINT, PULONG, INT, INT);
-INT FASTCALL IntGdiOffsetRgn(PROSRGNDATA,INT,INT);
 BOOL FASTCALL IntRectInRegion(HRGN,LPRECTL);
 
-INT FASTCALL IntGdiCombineRgn(PROSRGNDATA, PROSRGNDATA, PROSRGNDATA, INT);
-INT FASTCALL REGION_Complexity(PROSRGNDATA);
-PROSRGNDATA FASTCALL RGNOBJAPI_Lock(HRGN,PRGN_ATTR *);
-VOID FASTCALL RGNOBJAPI_Unlock(PROSRGNDATA);
-HRGN FASTCALL IntSysCreateRectRgn(INT,INT,INT,INT);
-PROSRGNDATA FASTCALL IntSysCreateRectpRgn(INT,INT,INT,INT);
+INT FASTCALL IntGdiCombineRgn(PREGION, PREGION, PREGION, INT);
+INT FASTCALL REGION_Complexity(PREGION);
+PREGION FASTCALL IntSysCreateRectpRgn(INT,INT,INT,INT);
 BOOL FASTCALL IntGdiSetRegionOwner(HRGN,DWORD);
 
-#define IntSysCreateRectRgnIndirect(prc) \
-  IntSysCreateRectRgn((prc)->left, (prc)->top, (prc)->right, (prc)->bottom)
+HRGN
+FASTCALL
+GreCreateFrameRgn(
+    HRGN hrgn,
+    INT x,
+    INT y);
 
 #define IntSysCreateRectpRgnIndirect(prc) \
   IntSysCreateRectpRgn((prc)->left, (prc)->top, (prc)->right, (prc)->bottom)
 
-PROSRGNDATA
+PREGION
 FASTCALL
 IntSysCreateRectpRgn(INT LeftRect, INT TopRect, INT RightRect, INT BottomRect);
-
-FORCEINLINE
-PREGION
-REGION_LockRgn(HRGN hrgn)
-{
-    return GDIOBJ_LockObject(hrgn, GDIObjType_RGN_TYPE);
-}
-
-FORCEINLINE
-VOID
-REGION_UnlockRgn(PREGION prgn)
-{
-    GDIOBJ_vUnlockObject(&prgn->BaseObject);
-}