From bc272f3edd079d2c9883c8ac34ed842d0d3dfe0f Mon Sep 17 00:00:00 2001 From: Magnus Olsen Date: Wed, 8 Aug 2007 23:03:46 +0000 Subject: [PATCH] Implement NtGdiEngAlphaBlend Implement EngAlphaBlend svn path=/trunk/; revision=28251 --- reactos/dll/win32/gdi32/gdi32.def | 2 +- reactos/dll/win32/gdi32/misc/stubs.c | 10 ------- reactos/subsystems/win32/win32k/eng/bitblt.c | 31 ++++++++++++++++++++ reactos/subsystems/win32/win32k/w32ksvc.db | 2 +- 4 files changed, 33 insertions(+), 12 deletions(-) diff --git a/reactos/dll/win32/gdi32/gdi32.def b/reactos/dll/win32/gdi32/gdi32.def index 0b31ee02d34..68aebe712ab 100644 --- a/reactos/dll/win32/gdi32/gdi32.def +++ b/reactos/dll/win32/gdi32/gdi32.def @@ -162,7 +162,7 @@ EndFormPage@4 EndPage@4 EndPath@4 EngAcquireSemaphore@4 -EngAlphaBlend@28 +EngAlphaBlend@28=NtGdiEngAlphaBlend@28; EngAssociateSurface@12 EngBitBlt@44 EngCheckAbort@4 diff --git a/reactos/dll/win32/gdi32/misc/stubs.c b/reactos/dll/win32/gdi32/misc/stubs.c index fbe553494e1..586bd82dde6 100644 --- a/reactos/dll/win32/gdi32/misc/stubs.c +++ b/reactos/dll/win32/gdi32/misc/stubs.c @@ -2534,16 +2534,6 @@ EngAcquireSemaphore ( IN HSEMAPHORE hsem ) SetLastError(ERROR_CALL_NOT_IMPLEMENTED); } -/* - * @unimplemented - */ -BOOL STDCALL -EngAlphaBlend(SURFOBJ *psoDest,SURFOBJ *psoSrc,CLIPOBJ *pco,XLATEOBJ *pxlo,RECTL *prclDest,RECTL *prclSrc,BLENDOBJ *pBlendObj) -{ - UNIMPLEMENTED; - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return 0; -} /* * @unimplemented diff --git a/reactos/subsystems/win32/win32k/eng/bitblt.c b/reactos/subsystems/win32/win32k/eng/bitblt.c index efdf51d4bc1..6e18f4d3565 100644 --- a/reactos/subsystems/win32/win32k/eng/bitblt.c +++ b/reactos/subsystems/win32/win32k/eng/bitblt.c @@ -892,6 +892,37 @@ IntEngStretchBlt(SURFOBJ *DestSurf, return ret; } + +BOOL +STDCALL +NtGdiEngAlphaBlend(IN SURFOBJ *Dest, + IN SURFOBJ *Source, + IN CLIPOBJ *ClipRegion, + IN XLATEOBJ *ColorTranslation, + IN PRECTL upDestRect, + IN PRECTL upSourceRect, + IN BLENDOBJ *BlendObj) +{ + RECTL DestRect; + RECTL SourceRect; + + _SEH_TRY + { + ProbeForRead(upDestRect, sizeof(RECTL), 1); + RtlCopyMemory(&DestRect,upDestRect, sizeof(RECTL)); + ProbeForRead(upSourceRect, sizeof(RECTL), 1); + RtlCopyMemory(&Source, upSourceRect, sizeof(RECTL)); + + } + _SEH_HANDLE + { + _SEH_YIELD(return FALSE); + } + _SEH_END; + + return EngAlphaBlend(Dest, Source, ClipRegion, ColorTranslation, &DestRect, &SourceRect, BlendObj); +} + BOOL STDCALL EngAlphaBlend(IN SURFOBJ *Dest, diff --git a/reactos/subsystems/win32/win32k/w32ksvc.db b/reactos/subsystems/win32/win32k/w32ksvc.db index 88bd0000fed..e283e5f1f35 100644 --- a/reactos/subsystems/win32/win32k/w32ksvc.db +++ b/reactos/subsystems/win32/win32k/w32ksvc.db @@ -626,7 +626,7 @@ NtUserYieldTask 0 # NtGdiEngStrokeAndFillPath 10 # NtGdiEngPaint 5 # NtGdiEngLineTo 9 -# NtGdiEngAlphaBlend 7 +NtGdiEngAlphaBlend 7 # NtGdiEngGradientFill 10 # NtGdiEngTransparentBlt 8 # NtGdiEngTextOut 10