More improvements to region.c:
- PROSRGNDATA -> REGION, void -> VOID, int -> INT, uppercase struct names
- do not put assignments into if statements
- !x -> x == NULL for pointers
- Add additional parentheses / curly braces
- rename RGN_ATTR::Flags to iComplexity

svn path=/trunk/; revision=65720
This commit is contained in:
Timo Kreuzer 2014-12-18 08:11:19 +00:00
parent 1a37b7cfb8
commit 2768e3abbd
7 changed files with 496 additions and 405 deletions

View file

@ -52,7 +52,7 @@ IntEngWndUpdateClipObj(
XCLIPOBJ* Clip, XCLIPOBJ* Clip,
PWND Window) PWND Window)
{ {
PROSRGNDATA visRgn; PREGION visRgn;
TRACE("IntEngWndUpdateClipObj\n"); TRACE("IntEngWndUpdateClipObj\n");

View file

@ -212,13 +212,13 @@ CombineRgn(HRGN hDest,
if ( !Ret || if ( !Ret ||
!pRgn_Attr_Dest || !pRgn_Attr_Dest ||
!pRgn_Attr_Src1 || !pRgn_Attr_Src1 ||
pRgn_Attr_Src1->Flags > SIMPLEREGION ) pRgn_Attr_Src1->iComplexity > SIMPLEREGION )
return NtGdiCombineRgn(hDest, hSrc1, hSrc2, CombineMode); return NtGdiCombineRgn(hDest, hSrc1, hSrc2, CombineMode);
/* Handle COPY and use only src1. */ /* Handle COPY and use only src1. */
if ( CombineMode == RGN_COPY ) if ( CombineMode == RGN_COPY )
{ {
switch (pRgn_Attr_Src1->Flags) switch (pRgn_Attr_Src1->iComplexity)
{ {
case NULLREGION: case NULLREGION:
Ret = SetRectRgn( hDest, 0, 0, 0, 0); Ret = SetRectRgn( hDest, 0, 0, 0, 0);
@ -245,7 +245,7 @@ CombineRgn(HRGN hDest,
Ret = GdiGetHandleUserData((HGDIOBJ) hSrc2, GDI_OBJECT_TYPE_REGION, (PVOID) &pRgn_Attr_Src2); Ret = GdiGetHandleUserData((HGDIOBJ) hSrc2, GDI_OBJECT_TYPE_REGION, (PVOID) &pRgn_Attr_Src2);
if ( !Ret || if ( !Ret ||
!pRgn_Attr_Src2 || !pRgn_Attr_Src2 ||
pRgn_Attr_Src2->Flags > SIMPLEREGION ) pRgn_Attr_Src2->iComplexity > SIMPLEREGION )
return NtGdiCombineRgn(hDest, hSrc1, hSrc2, CombineMode); return NtGdiCombineRgn(hDest, hSrc1, hSrc2, CombineMode);
/* All but AND. */ /* All but AND. */
@ -270,14 +270,14 @@ CombineRgn(HRGN hDest,
return NtGdiCombineRgn(hDest, hSrc1, hSrc2, CombineMode); return NtGdiCombineRgn(hDest, hSrc1, hSrc2, CombineMode);
} }
/* Now handle DIFF. */ /* Now handle DIFF. */
if ( pRgn_Attr_Src1->Flags == NULLREGION ) if ( pRgn_Attr_Src1->iComplexity == NULLREGION )
{ {
if (SetRectRgn( hDest, 0, 0, 0, 0)) if (SetRectRgn( hDest, 0, 0, 0, 0))
return NULLREGION; return NULLREGION;
goto ERROR_Exit; goto ERROR_Exit;
} }
if ( pRgn_Attr_Src2->Flags != NULLREGION ) if ( pRgn_Attr_Src2->iComplexity != NULLREGION )
{ {
Complexity = ComplexityFromRects( &pRgn_Attr_Src1->Rect, &pRgn_Attr_Src2->Rect); Complexity = ComplexityFromRects( &pRgn_Attr_Src1->Rect, &pRgn_Attr_Src2->Rect);
@ -295,9 +295,9 @@ CombineRgn(HRGN hDest,
} }
else /* Handle OR or XOR. */ else /* Handle OR or XOR. */
{ {
if ( pRgn_Attr_Src1->Flags == NULLREGION ) if ( pRgn_Attr_Src1->iComplexity == NULLREGION )
{ {
if ( pRgn_Attr_Src2->Flags != NULLREGION ) if ( pRgn_Attr_Src2->iComplexity != NULLREGION )
{ {
/* Src1 null and not NULL, set from src2. */ /* Src1 null and not NULL, set from src2. */
Ret = SetRectRgn( hDest, Ret = SetRectRgn( hDest,
@ -315,7 +315,7 @@ CombineRgn(HRGN hDest,
goto ERROR_Exit; goto ERROR_Exit;
} }
/* Src1 is not NULL. */ /* Src1 is not NULL. */
if ( pRgn_Attr_Src2->Flags != NULLREGION ) if ( pRgn_Attr_Src2->iComplexity != NULLREGION )
{ {
if ( CombineMode != RGN_OR ) /* Filter XOR, so go K. */ if ( CombineMode != RGN_OR ) /* Filter XOR, so go K. */
return NtGdiCombineRgn(hDest, hSrc1, hSrc2, CombineMode); return NtGdiCombineRgn(hDest, hSrc1, hSrc2, CombineMode);
@ -350,8 +350,8 @@ CombineRgn(HRGN hDest,
} }
/* Handle AND. */ /* Handle AND. */
if ( pRgn_Attr_Src1->Flags != NULLREGION && if ( pRgn_Attr_Src1->iComplexity != NULLREGION &&
pRgn_Attr_Src2->Flags != NULLREGION ) pRgn_Attr_Src2->iComplexity != NULLREGION )
{ {
Complexity = ComplexityFromRects( &pRgn_Attr_Src1->Rect, &pRgn_Attr_Src2->Rect); Complexity = ComplexityFromRects( &pRgn_Attr_Src1->Rect, &pRgn_Attr_Src2->Rect);
@ -491,13 +491,13 @@ CreateRectRgn(int x1, int y1, int x2, int y2)
if (( x1 == x2) || (y1 == y2)) if (( x1 == x2) || (y1 == y2))
{ {
pRgn_Attr->Flags = NULLREGION; pRgn_Attr->iComplexity = NULLREGION;
pRgn_Attr->Rect.left = pRgn_Attr->Rect.top = pRgn_Attr->Rect.left = pRgn_Attr->Rect.top =
pRgn_Attr->Rect.right = pRgn_Attr->Rect.bottom = 0; pRgn_Attr->Rect.right = pRgn_Attr->Rect.bottom = 0;
} }
else else
{ {
pRgn_Attr->Flags = SIMPLEREGION; pRgn_Attr->iComplexity = SIMPLEREGION;
pRgn_Attr->Rect.left = x1; pRgn_Attr->Rect.left = x1;
pRgn_Attr->Rect.top = y1; pRgn_Attr->Rect.top = y1;
pRgn_Attr->Rect.right = x2; pRgn_Attr->Rect.right = x2;
@ -642,7 +642,7 @@ ExtSelectClipRgn( IN HDC hdc, IN HRGN hrgn, IN INT iMode)
!(pEntry->Flags & GDI_ENTRY_VALIDATE_VIS) ) !(pEntry->Flags & GDI_ENTRY_VALIDATE_VIS) )
{ {
if (!hrgn || if (!hrgn ||
(hrgn && pRgn_Attr && pRgn_Attr->Flags <= SIMPLEREGION) ) (hrgn && pRgn_Attr && pRgn_Attr->iComplexity <= SIMPLEREGION) )
{ {
if ((pTeb->GdiTebBatch.Offset + sizeof(GDIBSEXTSELCLPRGN)) <= GDIBATCHBUFSIZE) if ((pTeb->GdiTebBatch.Offset + sizeof(GDIBSEXTSELCLPRGN)) <= GDIBATCHBUFSIZE)
{ {
@ -655,7 +655,7 @@ ExtSelectClipRgn( IN HDC hdc, IN HRGN hrgn, IN INT iMode)
if ( hrgn && pRgn_Attr ) if ( hrgn && pRgn_Attr )
{ {
Ret = pRgn_Attr->Flags; Ret = pRgn_Attr->iComplexity;
if ( pDc_Attr->VisRectRegion.Rect.left >= pRgn_Attr->Rect.right || if ( pDc_Attr->VisRectRegion.Rect.left >= pRgn_Attr->Rect.right ||
pDc_Attr->VisRectRegion.Rect.top >= pRgn_Attr->Rect.bottom || pDc_Attr->VisRectRegion.Rect.top >= pRgn_Attr->Rect.bottom ||
@ -670,7 +670,7 @@ ExtSelectClipRgn( IN HDC hdc, IN HRGN hrgn, IN INT iMode)
} }
else else
{ {
Ret = pDc_Attr->VisRectRegion.Flags; Ret = pDc_Attr->VisRectRegion.iComplexity;
pgO->fnMode |= 0x80000000; // Set no hrgn mode. pgO->fnMode |= 0x80000000; // Set no hrgn mode.
} }
pTeb->GdiTebBatch.Offset += sizeof(GDIBSEXTSELCLPRGN); pTeb->GdiTebBatch.Offset += sizeof(GDIBSEXTSELCLPRGN);
@ -763,7 +763,7 @@ GetRgnBox(HRGN hrgn,
//if (!GdiGetHandleUserData((HGDIOBJ) hrgn, GDI_OBJECT_TYPE_REGION, (PVOID) &Rgn_Attr)) //if (!GdiGetHandleUserData((HGDIOBJ) hrgn, GDI_OBJECT_TYPE_REGION, (PVOID) &Rgn_Attr))
return NtGdiGetRgnBox(hrgn, prcOut); return NtGdiGetRgnBox(hrgn, prcOut);
if (Rgn_Attr->Flags == NULLREGION) if (Rgn_Attr->iComplexity == NULLREGION)
{ {
prcOut->left = 0; prcOut->left = 0;
prcOut->top = 0; prcOut->top = 0;
@ -772,12 +772,12 @@ GetRgnBox(HRGN hrgn,
} }
else else
{ {
if (Rgn_Attr->Flags != SIMPLEREGION) if (Rgn_Attr->iComplexity != SIMPLEREGION)
return NtGdiGetRgnBox(hrgn, prcOut); return NtGdiGetRgnBox(hrgn, prcOut);
/* WARNING! prcOut is never checked newbies! */ /* WARNING! prcOut is never checked newbies! */
RtlCopyMemory( prcOut, &Rgn_Attr->Rect, sizeof(RECT)); RtlCopyMemory( prcOut, &Rgn_Attr->Rect, sizeof(RECT));
} }
return Rgn_Attr->Flags; return Rgn_Attr->iComplexity;
} }
/* /*
@ -875,10 +875,10 @@ OffsetRgn( HRGN hrgn,
// if (!GdiGetHandleUserData((HGDIOBJ) hrgn, GDI_OBJECT_TYPE_REGION, (PVOID) &pRgn_Attr)) // if (!GdiGetHandleUserData((HGDIOBJ) hrgn, GDI_OBJECT_TYPE_REGION, (PVOID) &pRgn_Attr))
return NtGdiOffsetRgn(hrgn,nXOffset,nYOffset); return NtGdiOffsetRgn(hrgn,nXOffset,nYOffset);
if ( pRgn_Attr->Flags == NULLREGION) if ( pRgn_Attr->iComplexity == NULLREGION)
return pRgn_Attr->Flags; return pRgn_Attr->iComplexity;
if ( pRgn_Attr->Flags != SIMPLEREGION) if ( pRgn_Attr->iComplexity != SIMPLEREGION)
return NtGdiOffsetRgn(hrgn,nXOffset,nYOffset); return NtGdiOffsetRgn(hrgn,nXOffset,nYOffset);
nLeftRect = pRgn_Attr->Rect.left; nLeftRect = pRgn_Attr->Rect.left;
@ -911,7 +911,7 @@ OffsetRgn( HRGN hrgn,
pRgn_Attr->AttrFlags |= ATTR_RGN_DIRTY; pRgn_Attr->AttrFlags |= ATTR_RGN_DIRTY;
} }
} }
return pRgn_Attr->Flags; return pRgn_Attr->iComplexity;
} }
/* /*
@ -929,10 +929,10 @@ PtInRegion(IN HRGN hrgn,
//if (!GdiGetHandleUserData((HGDIOBJ) hrgn, GDI_OBJECT_TYPE_REGION, (PVOID) &pRgn_Attr)) //if (!GdiGetHandleUserData((HGDIOBJ) hrgn, GDI_OBJECT_TYPE_REGION, (PVOID) &pRgn_Attr))
return NtGdiPtInRegion(hrgn,x,y); return NtGdiPtInRegion(hrgn,x,y);
if ( pRgn_Attr->Flags == NULLREGION) if ( pRgn_Attr->iComplexity == NULLREGION)
return FALSE; return FALSE;
if ( pRgn_Attr->Flags != SIMPLEREGION) if ( pRgn_Attr->iComplexity != SIMPLEREGION)
return NtGdiPtInRegion(hrgn,x,y); return NtGdiPtInRegion(hrgn,x,y);
return INRECT( pRgn_Attr->Rect, x, y); return INRECT( pRgn_Attr->Rect, x, y);
@ -953,10 +953,10 @@ RectInRegion(HRGN hrgn,
//if (!GdiGetHandleUserData((HGDIOBJ) hrgn, GDI_OBJECT_TYPE_REGION, (PVOID) &pRgn_Attr)) //if (!GdiGetHandleUserData((HGDIOBJ) hrgn, GDI_OBJECT_TYPE_REGION, (PVOID) &pRgn_Attr))
return NtGdiRectInRegion(hrgn, (LPRECT) prcl); return NtGdiRectInRegion(hrgn, (LPRECT) prcl);
if ( pRgn_Attr->Flags == NULLREGION) if ( pRgn_Attr->iComplexity == NULLREGION)
return FALSE; return FALSE;
if ( pRgn_Attr->Flags != SIMPLEREGION) if ( pRgn_Attr->iComplexity != SIMPLEREGION)
return NtGdiRectInRegion(hrgn, (LPRECT) prcl); return NtGdiRectInRegion(hrgn, (LPRECT) prcl);
/* swap the coordinates to make right >= left and bottom >= top */ /* swap the coordinates to make right >= left and bottom >= top */
@ -1019,7 +1019,7 @@ SetRectRgn(HRGN hrgn,
if ((nLeftRect == nRightRect) || (nTopRect == nBottomRect)) if ((nLeftRect == nRightRect) || (nTopRect == nBottomRect))
{ {
Rgn_Attr->AttrFlags |= ATTR_RGN_DIRTY; Rgn_Attr->AttrFlags |= ATTR_RGN_DIRTY;
Rgn_Attr->Flags = NULLREGION; Rgn_Attr->iComplexity = NULLREGION;
Rgn_Attr->Rect.left = Rgn_Attr->Rect.top = Rgn_Attr->Rect.left = Rgn_Attr->Rect.top =
Rgn_Attr->Rect.right = Rgn_Attr->Rect.bottom = 0; Rgn_Attr->Rect.right = Rgn_Attr->Rect.bottom = 0;
return TRUE; return TRUE;
@ -1042,7 +1042,7 @@ SetRectRgn(HRGN hrgn,
} }
Rgn_Attr->AttrFlags |= ATTR_RGN_DIRTY ; Rgn_Attr->AttrFlags |= ATTR_RGN_DIRTY ;
Rgn_Attr->Flags = SIMPLEREGION; Rgn_Attr->iComplexity = SIMPLEREGION;
return TRUE; return TRUE;
} }

View file

@ -274,7 +274,7 @@ FASTCALL
IntSetDefaultRegion(PDC pdc) IntSetDefaultRegion(PDC pdc)
{ {
PSURFACE pSurface; PSURFACE pSurface;
PROSRGNDATA prgn; PREGION prgn;
RECTL rclWnd, rclClip; RECTL rclWnd, rclClip;
IntGdiReleaseRaoRgn(pdc); IntGdiReleaseRaoRgn(pdc);

File diff suppressed because it is too large Load diff

View file

@ -4,7 +4,7 @@
/* Internal region data. /* Internal region data.
Can't use RGNDATA structure because buffer is allocated statically */ 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. /* Header for all gdi objects in the handle table.
Do not (re)move this. */ Do not (re)move this. */
@ -14,7 +14,7 @@ typedef struct _ROSRGNDATA
RGNDATAHEADER rdh; RGNDATAHEADER rdh;
RECTL *Buffer; RECTL *Buffer;
} ROSRGNDATA, *PROSRGNDATA, *LPROSRGNDATA, REGION, *PREGION; } REGION, *PREGION;
/* Functions ******************************************************************/ /* Functions ******************************************************************/
@ -22,41 +22,41 @@ typedef struct _ROSRGNDATA
#define REGION_FreeRgn(pRgn) GDIOBJ_FreeObj((POBJ)pRgn, GDIObjType_RGN_TYPE) #define REGION_FreeRgn(pRgn) GDIOBJ_FreeObj((POBJ)pRgn, GDIObjType_RGN_TYPE)
#define REGION_FreeRgnByHandle(hRgn) GDIOBJ_FreeObjByHandle((HGDIOBJ)hRgn, GDI_OBJECT_TYPE_REGION) #define REGION_FreeRgnByHandle(hRgn) GDIOBJ_FreeObjByHandle((HGDIOBJ)hRgn, GDI_OBJECT_TYPE_REGION)
PROSRGNDATA FASTCALL REGION_AllocRgnWithHandle(INT n); PREGION FASTCALL REGION_AllocRgnWithHandle(INT n);
PROSRGNDATA FASTCALL REGION_AllocUserRgnWithHandle(INT n); PREGION FASTCALL REGION_AllocUserRgnWithHandle(INT n);
VOID FASTCALL REGION_UnionRectWithRgn(ROSRGNDATA *rgn, const RECTL *rect); VOID FASTCALL REGION_UnionRectWithRgn(PREGION rgn, const RECTL *rect);
INT FASTCALL REGION_SubtractRectFromRgn(PREGION prgnDest, PREGION prgnSrc, const RECTL *prcl); INT FASTCALL REGION_SubtractRectFromRgn(PREGION prgnDest, PREGION prgnSrc, const RECTL *prcl);
INT FASTCALL REGION_GetRgnBox(PROSRGNDATA Rgn, RECTL *pRect); INT FASTCALL REGION_GetRgnBox(PREGION Rgn, RECTL *pRect);
BOOL FASTCALL REGION_RectInRegion(PROSRGNDATA Rgn, const RECTL *rc); BOOL FASTCALL REGION_RectInRegion(PREGION Rgn, const RECTL *rc);
BOOL FASTCALL REGION_PtInRegion(PREGION, INT, INT); BOOL FASTCALL REGION_PtInRegion(PREGION, INT, INT);
INT FASTCALL REGION_CropAndOffsetRegion(PROSRGNDATA rgnDst, PROSRGNDATA rgnSrc, const RECTL *rect, const POINT *off); INT FASTCALL REGION_CropAndOffsetRegion(PREGION rgnDst, PREGION rgnSrc, const RECTL *rect, const POINT *off);
VOID FASTCALL REGION_SetRectRgn(PROSRGNDATA pRgn, INT LeftRect, INT TopRect, INT RightRect, INT BottomRect); VOID FASTCALL REGION_SetRectRgn(PREGION pRgn, INT LeftRect, INT TopRect, INT RightRect, INT BottomRect);
VOID NTAPI REGION_vCleanup(PVOID ObjectBody); VOID NTAPI REGION_vCleanup(PVOID ObjectBody);
extern PROSRGNDATA prgnDefault; extern PREGION prgnDefault;
extern HRGN hrgnDefault; extern HRGN hrgnDefault;
VOID FASTCALL REGION_Delete(PROSRGNDATA); VOID FASTCALL REGION_Delete(PREGION);
VOID FASTCALL IntGdiReleaseRaoRgn(PDC); VOID FASTCALL IntGdiReleaseRaoRgn(PDC);
VOID FASTCALL IntGdiReleaseVisRgn(PDC); VOID FASTCALL IntGdiReleaseVisRgn(PDC);
INT APIENTRY IntGdiGetRgnBox(HRGN, RECTL*); INT APIENTRY IntGdiGetRgnBox(HRGN, RECTL*);
BOOL FASTCALL IntGdiPaintRgn(PDC, PREGION ); BOOL FASTCALL IntGdiPaintRgn(PDC, PREGION );
BOOL FASTCALL IntSetPolyPolygonRgn(PPOINT, PULONG, INT, INT, PREGION); BOOL FASTCALL IntSetPolyPolygonRgn(PPOINT, PULONG, INT, INT, PREGION);
INT FASTCALL IntGdiOffsetRgn(PROSRGNDATA,INT,INT); INT FASTCALL IntGdiOffsetRgn(PREGION,INT,INT);
BOOL FASTCALL IntRectInRegion(HRGN,LPRECTL); BOOL FASTCALL IntRectInRegion(HRGN,LPRECTL);
INT FASTCALL IntGdiCombineRgn(PROSRGNDATA, PROSRGNDATA, PROSRGNDATA, INT); INT FASTCALL IntGdiCombineRgn(PREGION, PREGION, PREGION, INT);
INT FASTCALL REGION_Complexity(PROSRGNDATA); INT FASTCALL REGION_Complexity(PREGION);
PROSRGNDATA FASTCALL RGNOBJAPI_Lock(HRGN,PRGN_ATTR *); PREGION FASTCALL RGNOBJAPI_Lock(HRGN,PRGN_ATTR *);
VOID FASTCALL RGNOBJAPI_Unlock(PROSRGNDATA); VOID FASTCALL RGNOBJAPI_Unlock(PREGION);
PROSRGNDATA FASTCALL IntSysCreateRectpRgn(INT,INT,INT,INT); PREGION FASTCALL IntSysCreateRectpRgn(INT,INT,INT,INT);
BOOL FASTCALL IntGdiSetRegionOwner(HRGN,DWORD); BOOL FASTCALL IntGdiSetRegionOwner(HRGN,DWORD);
#define IntSysCreateRectpRgnIndirect(prc) \ #define IntSysCreateRectpRgnIndirect(prc) \
IntSysCreateRectpRgn((prc)->left, (prc)->top, (prc)->right, (prc)->bottom) IntSysCreateRectpRgn((prc)->left, (prc)->top, (prc)->right, (prc)->bottom)
PROSRGNDATA PREGION
FASTCALL FASTCALL
IntSysCreateRectpRgn(INT LeftRect, INT TopRect, INT RightRect, INT BottomRect); IntSysCreateRectpRgn(INT LeftRect, INT TopRect, INT RightRect, INT BottomRect);

View file

@ -273,7 +273,7 @@ typedef struct __GDI_SHARED_HANDLE_TABLE /* Must match win32k/include/gdiobj.h *
typedef struct _RGN_ATTR typedef struct _RGN_ATTR
{ {
ULONG AttrFlags; ULONG AttrFlags;
ULONG Flags; /* Clipping region's complexity. NULL, SIMPLE & COMPLEXREGION */ ULONG iComplexity; /* Clipping region's complexity. NULL, SIMPLE & COMPLEXREGION */
RECTL Rect; RECTL Rect;
} RGN_ATTR,*PRGN_ATTR; } RGN_ATTR,*PRGN_ATTR;

View file

@ -1309,7 +1309,7 @@ NtUserGetUpdateRect(HWND hWnd, LPRECT UnsafeRect, BOOL bErase)
PWND Window; PWND Window;
RECTL Rect; RECTL Rect;
INT RegionType; INT RegionType;
PROSRGNDATA RgnData; PREGION RgnData;
NTSTATUS Status; NTSTATUS Status;
DECLARE_RETURN(BOOL); DECLARE_RETURN(BOOL);