- Fixed BitBlts with ROP != SRCCOPY.

- Added skeleton for NtUserCallHwndOpt.

svn path=/trunk/; revision=6750
This commit is contained in:
Filip Navara 2003-11-22 11:01:28 +00:00
parent ec4c966d0b
commit aadb87f5d7
7 changed files with 37 additions and 30 deletions

View file

@ -121,11 +121,13 @@ NtUserCallHwndLock(
HWND hWnd, HWND hWnd,
DWORD Unknown1); DWORD Unknown1);
DWORD #define HWNDOPT_ROUTINE_SETPROGMANWINDOW 0x4A
#define HWNDOPT_ROUTINE_SETTASKMANWINDOW 0x4B
HWND
STDCALL STDCALL
NtUserCallHwndOpt( NtUserCallHwndOpt(
DWORD Unknown0, HWND Param,
DWORD Unknown1); DWORD Routine);
DWORD DWORD
STDCALL STDCALL

View file

@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * 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 #undef WIN32_LEAN_AND_MEAN
#include <windows.h> #include <windows.h>
#include <stdlib.h> #include <stdlib.h>
@ -278,12 +278,12 @@ DIB_16BPP_BitBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
PBRUSHOBJ Brush, PPOINTL BrushOrigin, PBRUSHOBJ Brush, PPOINTL BrushOrigin,
XLATEOBJ *ColorTranslation, ULONG Rop4) XLATEOBJ *ColorTranslation, ULONG Rop4)
{ {
LONG i, j, k, sx, sy; LONG i, j, sx, sy;
ULONG Dest, Source, Pattern; ULONG Dest, Source, Pattern;
PULONG DestBits; PULONG DestBits;
BOOL UsesSource = ((Rop4 & 0xCC0000) >> 2) != (Rop4 & 0x330000); BOOL UsesSource = ((Rop4 & 0xCC0000) >> 2) != (Rop4 & 0x330000);
BOOL UsesPattern = ((Rop4 & 0xF00000) >> 4) != (Rop4 & 0x0F0000); 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) if (Rop4 == SRCCOPY)
{ {
@ -302,11 +302,8 @@ DIB_16BPP_BitBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
Dest = *DestBits; Dest = *DestBits;
if (UsesSource) if (UsesSource)
{ {
Source = 0; Source = DIB_GetSource(SourceSurf, SourceGDI, sx + (i - DestRect->left), sy, ColorTranslation);
for (k = 0; k < 2; k++) Source |= DIB_GetSource(SourceSurf, SourceGDI, sx + (i - DestRect->left) + 1, sy, ColorTranslation) << 16;
{
Source |= (DIB_GetSource(SourceSurf, SourceGDI, sx + (i - DestRect->left) + k, sy, ColorTranslation) << (k * 16));
}
} }
if (UsesPattern) if (UsesPattern)
{ {

View file

@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * 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 #undef WIN32_LEAN_AND_MEAN
#include <windows.h> #include <windows.h>
@ -273,7 +273,7 @@ DIB_1BPP_BitBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
PULONG DestBits; PULONG DestBits;
BOOL UsesSource = ((Rop4 & 0xCC0000) >> 2) != (Rop4 & 0x330000); BOOL UsesSource = ((Rop4 & 0xCC0000) >> 2) != (Rop4 & 0x330000);
BOOL UsesPattern = ((Rop4 & 0xF00000) >> 4) != (Rop4 & 0x0F0000); 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) if (Rop4 == SRCCOPY)
{ {

View file

@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * 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 #undef WIN32_LEAN_AND_MEAN
#include <windows.h> #include <windows.h>
#include <stdlib.h> #include <stdlib.h>
@ -244,7 +244,7 @@ DIB_4BPP_BitBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
PULONG DestBits; PULONG DestBits;
BOOL UsesSource = ((Rop4 & 0xCC0000) >> 2) != (Rop4 & 0x330000); BOOL UsesSource = ((Rop4 & 0xCC0000) >> 2) != (Rop4 & 0x330000);
BOOL UsesPattern = ((Rop4 & 0xF00000) >> 4) != (Rop4 & 0x0F0000); 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] = static const ULONG ExpandSolidColor[16] =
{ {
0x00000000 /* 0 */, 0x00000000 /* 0 */,

View file

@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * 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 #undef WIN32_LEAN_AND_MEAN
#include <windows.h> #include <windows.h>
#include <stdlib.h> #include <stdlib.h>
@ -279,7 +279,7 @@ DIB_8BPP_BitBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf,
PULONG DestBits; PULONG DestBits;
BOOL UsesSource = ((Rop4 & 0xCC0000) >> 2) != (Rop4 & 0x330000); BOOL UsesSource = ((Rop4 & 0xCC0000) >> 2) != (Rop4 & 0x330000);
BOOL UsesPattern = ((Rop4 & 0xF00000) >> 4) != (Rop4 & 0x0F0000); 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) if (Rop4 == SRCCOPY)
{ {

View file

@ -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 * COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
@ -275,6 +275,25 @@ NtUserCallTwoParam(
return 0; 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 * @implemented

View file

@ -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 * COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel * PROJECT: ReactOS kernel
@ -90,17 +90,6 @@ NtUserCallHwnd(
return 0; return 0;
} }
DWORD
STDCALL
NtUserCallHwndOpt(
DWORD Unknown0,
DWORD Unknown1)
{
UNIMPLEMENTED
return 0;
}
DWORD DWORD
STDCALL STDCALL
NtUserCallHwndParam( NtUserCallHwndParam(