mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 01:24:38 +00:00
Misc. painting fixes.
svn path=/trunk/; revision=3412
This commit is contained in:
parent
c75df46270
commit
25788364e8
4 changed files with 46 additions and 22 deletions
|
@ -1,4 +1,4 @@
|
|||
/* $Id: painting.c,v 1.3 2002/08/26 23:20:54 dwelch Exp $
|
||||
/* $Id: painting.c,v 1.4 2002/08/27 23:29:40 dwelch Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -162,7 +162,7 @@ PaintValidateParent(PWINDOW_OBJECT Child)
|
|||
Rect.right = Child->WindowRect.right - Child->WindowRect.left;
|
||||
Rect.bottom = Child->WindowRect.bottom - Child->WindowRect.top;
|
||||
|
||||
hRgn = W32kCreateRectRgnIndirect(&Rect);
|
||||
hRgn = UnsafeW32kCreateRectRgnIndirect(&Rect);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -187,7 +187,8 @@ PaintValidateParent(PWINDOW_OBJECT Child)
|
|||
Rect1.bottom = Parent->WindowRect.bottom -
|
||||
Parent->WindowRect.top;
|
||||
|
||||
Parent->UpdateRegion = W32kCreateRectRgnIndirect(&Rect1);
|
||||
Parent->UpdateRegion =
|
||||
UnsafeW32kCreateRectRgnIndirect(&Rect1);
|
||||
}
|
||||
Offset.x = Child->WindowRect.left - Parent->WindowRect.left;
|
||||
Offset.y = Child->WindowRect.top - Parent->WindowRect.top;
|
||||
|
@ -297,7 +298,7 @@ PaintUpdateRgns(PWINDOW_OBJECT Window, HRGN hRgn, ULONG Flags,
|
|||
if (Window->UpdateRegion == (HANDLE)1)
|
||||
{
|
||||
Window->UpdateRegion =
|
||||
W32kCreateRectRgnIndirect(&Rect);
|
||||
UnsafeW32kCreateRectRgnIndirect(&Rect);
|
||||
}
|
||||
if (W32kCombineRgn(Window->UpdateRegion,
|
||||
Window->UpdateRegion, hRgn,
|
||||
|
@ -475,11 +476,12 @@ PaintRedrawWindow(HWND hWnd, const RECT* UpdateRect, HRGN UpdateRgn,
|
|||
}
|
||||
if (Window->UpdateRegion == NULL)
|
||||
{
|
||||
Window->UpdateRegion = W32kCreateRectRgnIndirect(&Rect2);
|
||||
Window->UpdateRegion =
|
||||
UnsafeW32kCreateRectRgnIndirect(&Rect2);
|
||||
}
|
||||
else
|
||||
{
|
||||
hRgn = W32kCreateRectRgnIndirect(&Rect2);
|
||||
hRgn = UnsafeW32kCreateRectRgnIndirect(&Rect2);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -491,7 +493,7 @@ PaintRedrawWindow(HWND hWnd, const RECT* UpdateRect, HRGN UpdateRgn,
|
|||
else
|
||||
{
|
||||
W32kGetClientRect(hWnd, &Rect2);
|
||||
hRgn = W32kCreateRectRgnIndirect(&Rect2);
|
||||
hRgn = UnsafeW32kCreateRectRgnIndirect(&Rect2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -672,7 +674,8 @@ PaintUpdateNCRegion(PWINDOW_OBJECT Window, HRGN hRgn, ULONG Flags)
|
|||
{
|
||||
if (Flags & UNC_UPDATE)
|
||||
{
|
||||
Window->UpdateRegion = W32kCreateRectRgnIndirect(&ClientRect);
|
||||
Window->UpdateRegion =
|
||||
UnsafeW32kCreateRectRgnIndirect(&ClientRect);
|
||||
}
|
||||
if (Flags & UNC_REGION)
|
||||
{
|
||||
|
@ -690,7 +693,8 @@ PaintUpdateNCRegion(PWINDOW_OBJECT Window, HRGN hRgn, ULONG Flags)
|
|||
else if (Window->UpdateRegion == (HANDLE)1 && Flags & UNC_UPDATE)
|
||||
{
|
||||
W32kGetClientRect(Window, &ClientRect);
|
||||
Window->UpdateRegion = W32kCreateRectRgnIndirect(&ClientRect);
|
||||
Window->UpdateRegion =
|
||||
UnsafeW32kCreateRectRgnIndirect(&ClientRect);
|
||||
if (Flags & UNC_REGION)
|
||||
{
|
||||
hRgnRet = (HANDLE)1;
|
||||
|
@ -768,9 +772,10 @@ NtUserBeginPaint(HWND hWnd, PAINTSTRUCT* lPs)
|
|||
|
||||
UpdateRegion = Window->UpdateRegion;
|
||||
Window->UpdateRegion = 0;
|
||||
if (UpdateRegion != NULL || Window->Flags & WINDOWOBJECT_NEED_INTERNALPAINT)
|
||||
if (UpdateRegion != NULL ||
|
||||
(Window->Flags & WINDOWOBJECT_NEED_INTERNALPAINT))
|
||||
{
|
||||
MsqDecPaintCountQueue(&Window->MessageQueue);
|
||||
MsqDecPaintCountQueue(Window->MessageQueue);
|
||||
}
|
||||
Window->Flags &= ~WINDOWOBJECT_NEED_INTERNALPAINT;
|
||||
|
||||
|
@ -802,7 +807,7 @@ NtUserBeginPaint(HWND hWnd, PAINTSTRUCT* lPs)
|
|||
|
||||
/* FIXME: Check for DC creation failure. */
|
||||
|
||||
W32kGetClientRect(hWnd, &ClientRect);
|
||||
W32kGetClientRect(Window, &ClientRect);
|
||||
W32kGetClipBox(lPs->hdc, &ClipRect);
|
||||
W32kLPtoDP(lPs->hdc, (LPPOINT)&ClipRect, 2);
|
||||
W32kIntersectRect(&lPs->rcPaint, &ClientRect, &ClipRect);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: windc.c,v 1.4 2002/08/27 21:20:45 jfilby Exp $
|
||||
/* $Id: windc.c,v 1.5 2002/08/27 23:29:40 dwelch Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -349,7 +349,7 @@ NtUserGetDCEx(HWND hWnd, HANDLE hRegion, ULONG Flags)
|
|||
}
|
||||
dce = DCEOBJ_LockDCE(hdce);
|
||||
dce->type = DCE_CACHE_DC;
|
||||
dce->hDC = hdce;
|
||||
dce->hDC = W32kCreateDC(L"DISPLAY", NULL, NULL, NULL);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
@ -67,9 +67,19 @@ int STDCALL W32kExtSelectClipRgn(HDC hDC,
|
|||
}
|
||||
|
||||
int STDCALL W32kGetClipBox(HDC hDC,
|
||||
LPRECT rc)
|
||||
LPRECT rc)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
int retval;
|
||||
DC *dc;
|
||||
|
||||
if (!(dc = DC_HandleToPtr(hDC))) return ERROR;
|
||||
retval = W32kGetRgnBox(dc->w.hGCClipRgn, rc);
|
||||
rc->left -= dc->w.DCOrgX;
|
||||
rc->right -= dc->w.DCOrgX;
|
||||
rc->top -= dc->w.DCOrgY;
|
||||
rc->bottom -= dc->w.DCOrgY;
|
||||
W32kDPtoLP(hDC, (LPPOINT)rc, 2);
|
||||
return(retval);
|
||||
}
|
||||
|
||||
int STDCALL W32kGetMetaRgn(HDC hDC,
|
||||
|
|
|
@ -1566,15 +1566,24 @@ W32kCreateRectRgn(INT LeftRect,
|
|||
return NULL;
|
||||
}
|
||||
|
||||
HRGN
|
||||
STDCALL
|
||||
W32kCreateRectRgnIndirect(CONST PRECT rc)
|
||||
HRGN STDCALL
|
||||
W32kCreateRectRgnIndirect(CONST PRECT rc)
|
||||
{
|
||||
RECT SafeRc;
|
||||
if( NT_SUCCESS( MmCopyFromCaller( &SafeRc, rc, sizeof( RECT ) ) ) )
|
||||
return W32kCreateRectRgn(SafeRc.left, SafeRc.top, SafeRc.right, SafeRc.bottom);
|
||||
NTSTATUS Status;
|
||||
|
||||
return NULL;
|
||||
Status = MmCopyFromCaller(&SafeRc, rc, sizeof(RECT));
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
return(NULL);
|
||||
}
|
||||
return(UnsafeW32kCreateRectRgnIndirect(&SafeRc));
|
||||
}
|
||||
|
||||
HRGN STDCALL
|
||||
UnsafeW32kCreateRectRgnIndirect(CONST PRECT rc)
|
||||
{
|
||||
return(W32kCreateRectRgn(rc->left, rc->top, rc->right, rc->bottom));
|
||||
}
|
||||
|
||||
HRGN
|
||||
|
|
Loading…
Reference in a new issue