From aadb87f5d7a807d954cc502e26bf5ac5b3fae2c2 Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Sat, 22 Nov 2003 11:01:28 +0000 Subject: [PATCH] - Fixed BitBlts with ROP != SRCCOPY. - Added skeleton for NtUserCallHwndOpt. svn path=/trunk/; revision=6750 --- reactos/include/win32k/ntuser.h | 8 +++++--- reactos/subsys/win32k/dib/dib16bpp.c | 13 +++++-------- reactos/subsys/win32k/dib/dib1bpp.c | 4 ++-- reactos/subsys/win32k/dib/dib4bpp.c | 4 ++-- reactos/subsys/win32k/dib/dib8bpp.c | 4 ++-- reactos/subsys/win32k/ntuser/misc.c | 21 ++++++++++++++++++++- reactos/subsys/win32k/ntuser/stubs.c | 13 +------------ 7 files changed, 37 insertions(+), 30 deletions(-) diff --git a/reactos/include/win32k/ntuser.h b/reactos/include/win32k/ntuser.h index 7b3e1ef3542..75d4f3879f3 100644 --- a/reactos/include/win32k/ntuser.h +++ b/reactos/include/win32k/ntuser.h @@ -121,11 +121,13 @@ NtUserCallHwndLock( HWND hWnd, DWORD Unknown1); -DWORD +#define HWNDOPT_ROUTINE_SETPROGMANWINDOW 0x4A +#define HWNDOPT_ROUTINE_SETTASKMANWINDOW 0x4B +HWND STDCALL NtUserCallHwndOpt( - DWORD Unknown0, - DWORD Unknown1); + HWND Param, + DWORD Routine); DWORD STDCALL diff --git a/reactos/subsys/win32k/dib/dib16bpp.c b/reactos/subsys/win32k/dib/dib16bpp.c index 17252c64655..f3385192f7f 100644 --- a/reactos/subsys/win32k/dib/dib16bpp.c +++ b/reactos/subsys/win32k/dib/dib16bpp.c @@ -16,7 +16,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -/* $Id: dib16bpp.c,v 1.9 2003/10/06 16:25:53 gvg Exp $ */ +/* $Id: dib16bpp.c,v 1.10 2003/11/22 11:01:28 navaraf Exp $ */ #undef WIN32_LEAN_AND_MEAN #include #include @@ -278,12 +278,12 @@ DIB_16BPP_BitBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf, PBRUSHOBJ Brush, PPOINTL BrushOrigin, XLATEOBJ *ColorTranslation, ULONG Rop4) { - LONG i, j, k, sx, sy; + LONG i, j, sx, sy; ULONG Dest, Source, Pattern; PULONG DestBits; BOOL UsesSource = ((Rop4 & 0xCC0000) >> 2) != (Rop4 & 0x330000); BOOL UsesPattern = ((Rop4 & 0xF00000) >> 4) != (Rop4 & 0x0F0000); - LONG RoundedRight = DestRect->right - (DestRect->right & 0x1); + LONG RoundedRight = DestRect->right - ((DestRect->right - DestRect->left) & 0x1); if (Rop4 == SRCCOPY) { @@ -302,11 +302,8 @@ DIB_16BPP_BitBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf, Dest = *DestBits; if (UsesSource) { - Source = 0; - for (k = 0; k < 2; k++) - { - Source |= (DIB_GetSource(SourceSurf, SourceGDI, sx + (i - DestRect->left) + k, sy, ColorTranslation) << (k * 16)); - } + Source = DIB_GetSource(SourceSurf, SourceGDI, sx + (i - DestRect->left), sy, ColorTranslation); + Source |= DIB_GetSource(SourceSurf, SourceGDI, sx + (i - DestRect->left) + 1, sy, ColorTranslation) << 16; } if (UsesPattern) { diff --git a/reactos/subsys/win32k/dib/dib1bpp.c b/reactos/subsys/win32k/dib/dib1bpp.c index 98bf1b0684c..c4b4a9a0127 100644 --- a/reactos/subsys/win32k/dib/dib1bpp.c +++ b/reactos/subsys/win32k/dib/dib1bpp.c @@ -16,7 +16,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -/* $Id: dib1bpp.c,v 1.12 2003/10/29 22:45:45 gvg Exp $ */ +/* $Id: dib1bpp.c,v 1.13 2003/11/22 11:01:28 navaraf Exp $ */ #undef WIN32_LEAN_AND_MEAN #include @@ -273,7 +273,7 @@ DIB_1BPP_BitBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf, PULONG DestBits; BOOL UsesSource = ((Rop4 & 0xCC0000) >> 2) != (Rop4 & 0x330000); BOOL UsesPattern = ((Rop4 & 0xF00000) >> 4) != (Rop4 & 0x0F0000); - LONG RoundedRight = DestRect->right - (DestRect->right & 0x7); + LONG RoundedRight = DestRect->right - ((DestRect->right - DestRect->left) & 0x7); if (Rop4 == SRCCOPY) { diff --git a/reactos/subsys/win32k/dib/dib4bpp.c b/reactos/subsys/win32k/dib/dib4bpp.c index a21bfabeaa8..f2c7cbc47ee 100644 --- a/reactos/subsys/win32k/dib/dib4bpp.c +++ b/reactos/subsys/win32k/dib/dib4bpp.c @@ -16,7 +16,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -/* $Id: dib4bpp.c,v 1.20 2003/10/06 21:04:24 gvg Exp $ */ +/* $Id: dib4bpp.c,v 1.21 2003/11/22 11:01:28 navaraf Exp $ */ #undef WIN32_LEAN_AND_MEAN #include #include @@ -244,7 +244,7 @@ DIB_4BPP_BitBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf, PULONG DestBits; BOOL UsesSource = ((Rop4 & 0xCC0000) >> 2) != (Rop4 & 0x330000); BOOL UsesPattern = ((Rop4 & 0xF00000) >> 4) != (Rop4 & 0x0F0000); - LONG RoundedRight = DestRect->right - (DestRect->right & 0x7); + LONG RoundedRight = DestRect->right - ((DestRect->right - DestRect->left) & 0x7); static const ULONG ExpandSolidColor[16] = { 0x00000000 /* 0 */, diff --git a/reactos/subsys/win32k/dib/dib8bpp.c b/reactos/subsys/win32k/dib/dib8bpp.c index 62b9e2695b6..46b1679981d 100644 --- a/reactos/subsys/win32k/dib/dib8bpp.c +++ b/reactos/subsys/win32k/dib/dib8bpp.c @@ -16,7 +16,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -/* $Id: dib8bpp.c,v 1.7 2003/10/06 16:25:53 gvg Exp $ */ +/* $Id: dib8bpp.c,v 1.8 2003/11/22 11:01:28 navaraf Exp $ */ #undef WIN32_LEAN_AND_MEAN #include #include @@ -279,7 +279,7 @@ DIB_8BPP_BitBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf, PULONG DestBits; BOOL UsesSource = ((Rop4 & 0xCC0000) >> 2) != (Rop4 & 0x330000); BOOL UsesPattern = ((Rop4 & 0xF00000) >> 4) != (Rop4 & 0x0F0000); - LONG RoundedRight = DestRect->right - (DestRect->right & 0x3); + LONG RoundedRight = DestRect->right - ((DestRect->right - DestRect->left) & 0x3); if (Rop4 == SRCCOPY) { diff --git a/reactos/subsys/win32k/ntuser/misc.c b/reactos/subsys/win32k/ntuser/misc.c index be41f0907e4..5947653128b 100644 --- a/reactos/subsys/win32k/ntuser/misc.c +++ b/reactos/subsys/win32k/ntuser/misc.c @@ -1,4 +1,4 @@ -/* $Id: misc.c,v 1.26 2003/11/19 13:19:40 weiden Exp $ +/* $Id: misc.c,v 1.27 2003/11/22 11:01:28 navaraf Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -275,6 +275,25 @@ NtUserCallTwoParam( return 0; } +HWND +STDCALL +NtUserCallHwndOpt( + HWND Param, + DWORD Routine) +{ + switch (Routine) + { + case HWNDOPT_ROUTINE_SETPROGMANWINDOW: + /* FIXME */ + break; + + case HWNDOPT_ROUTINE_SETTASKMANWINDOW: + /* FIXME */ + break; + } + + return 0; +} /* * @implemented diff --git a/reactos/subsys/win32k/ntuser/stubs.c b/reactos/subsys/win32k/ntuser/stubs.c index 7238b9c24ae..1076f8b9737 100644 --- a/reactos/subsys/win32k/ntuser/stubs.c +++ b/reactos/subsys/win32k/ntuser/stubs.c @@ -1,4 +1,4 @@ -/* $Id: stubs.c,v 1.37 2003/11/19 12:25:03 weiden Exp $ +/* $Id: stubs.c,v 1.38 2003/11/22 11:01:28 navaraf Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -90,17 +90,6 @@ NtUserCallHwnd( return 0; } -DWORD -STDCALL -NtUserCallHwndOpt( - DWORD Unknown0, - DWORD Unknown1) -{ - UNIMPLEMENTED - - return 0; -} - DWORD STDCALL NtUserCallHwndParam(