diff --git a/reactos/dll/win32/gdi32/gdi32.def b/reactos/dll/win32/gdi32/gdi32.def index d1a05c02e99..f776804b066 100644 --- a/reactos/dll/win32/gdi32/gdi32.def +++ b/reactos/dll/win32/gdi32/gdi32.def @@ -248,7 +248,7 @@ FrameRgn@20=NtGdiFrameRgn@20 GdiAddFontResourceW@12 GdiAddGlsBounds@8 GdiAddGlsRecord@16 -GdiAlphaBlend@44=NtGdiAlphaBlend@44 +GdiAlphaBlend@44 GdiArtificialDecrementDriver@8 GdiCleanCacheDC@4 GdiComment@12 diff --git a/reactos/dll/win32/gdi32/misc/misc.c b/reactos/dll/win32/gdi32/misc/misc.c index 4058df8ef1d..ebb22c51f99 100644 --- a/reactos/dll/win32/gdi32/misc/misc.c +++ b/reactos/dll/win32/gdi32/misc/misc.c @@ -33,6 +33,41 @@ HANDLE CurrentProcessId = NULL; DWORD GDI_BatchLimit = 1; +BOOL +STDCALL +GdiAlphaBlend( + HDC hDCDst, + int DstX, + int DstY, + int DstCx, + int DstCy, + HDC hDCSrc, + int SrcX, + int SrcY, + int SrcCx, + int SrcCy, + BLENDFUNCTION BlendFunction + ) +{ + if ( hDCSrc == NULL ) return FALSE; + + if (GDI_HANDLE_GET_TYPE(hDCSrc) == GDI_OBJECT_TYPE_METADC) return FALSE; + + return NtGdiAlphaBlend( + hDCDst, + DstX, + DstY, + DstCx, + DstCy, + hDCSrc, + SrcX, + SrcY, + SrcCx, + SrcCy, + BlendFunction, + 0 ); +} + /* * @implemented */ diff --git a/reactos/include/psdk/ntgdi.h b/reactos/include/psdk/ntgdi.h index 7bf8b013550..bd90fe814a9 100644 --- a/reactos/include/psdk/ntgdi.h +++ b/reactos/include/psdk/ntgdi.h @@ -1097,7 +1097,8 @@ NtGdiAlphaBlend( IN LONG SrcY, IN LONG SrcCx, IN LONG SrcCy, - IN BLENDFUNCTION BlendFunction + IN BLENDFUNCTION BlendFunction, + IN HANDLE hcmXform ); W32KAPI diff --git a/reactos/include/reactos/win32k/ntgdibad.h b/reactos/include/reactos/win32k/ntgdibad.h index 9ee57998394..5c704b8a652 100644 --- a/reactos/include/reactos/win32k/ntgdibad.h +++ b/reactos/include/reactos/win32k/ntgdibad.h @@ -748,12 +748,6 @@ NtGdiSetGraphicsMode ( int Mode ); -/* Use NtGdiSetIcmMode. */ -INT -STDCALL -NtGdiSetICMMode(HDC hDC, - INT EnableICM); - /* Should be done in user-mode. */ BOOL STDCALL diff --git a/reactos/subsystems/win32/win32k/ntuser/cursoricon.c b/reactos/subsystems/win32/win32k/ntuser/cursoricon.c index fd17499def5..c391709321e 100644 --- a/reactos/subsystems/win32/win32k/ntuser/cursoricon.c +++ b/reactos/subsystems/win32/win32k/ntuser/cursoricon.c @@ -1592,7 +1592,7 @@ UserDrawIconEx( BlendFunc.AlphaFormat = AC_SRC_ALPHA; NtGdiAlphaBlend(hDc, xLeft, yTop, cxWidth, cyHeight, - hdcOff, 0, 0, cxWidth, cyHeight, BlendFunc); + hdcOff, 0, 0, cxWidth, cyHeight, BlendFunc, 0); } else { diff --git a/reactos/subsystems/win32/win32k/objects/bitmaps.c b/reactos/subsystems/win32/win32k/objects/bitmaps.c index a56f56dcb83..164cc98f8c2 100644 --- a/reactos/subsystems/win32/win32k/objects/bitmaps.c +++ b/reactos/subsystems/win32/win32k/objects/bitmaps.c @@ -1394,7 +1394,8 @@ NtGdiAlphaBlend( LONG YOriginSrc, LONG WidthSrc, LONG HeightSrc, - BLENDFUNCTION BlendFunc) + BLENDFUNCTION BlendFunc, + HANDLE hcmXform) { PDC DCDest = NULL; PDC DCSrc = NULL; diff --git a/reactos/subsystems/win32/win32k/objects/icm.c b/reactos/subsystems/win32/win32k/objects/icm.c index e49c28894ce..03e1489ec4f 100644 --- a/reactos/subsystems/win32/win32k/objects/icm.c +++ b/reactos/subsystems/win32/win32k/objects/icm.c @@ -123,8 +123,9 @@ NtGdiSetDeviceGammaRamp(HDC hDC, INT STDCALL -NtGdiSetICMMode(HDC hDC, - INT EnableICM) +NtGdiSetIcmMode(HDC hDC, + ULONG nCommand, + ULONG EnableICM) // ulMode { /* FIXME: this should be coded someday */ if (EnableICM == ICM_OFF) diff --git a/reactos/subsystems/win32/win32k/w32ksvc.db b/reactos/subsystems/win32/win32k/w32ksvc.db index b3c1612f5eb..a8494733ce0 100644 --- a/reactos/subsystems/win32/win32k/w32ksvc.db +++ b/reactos/subsystems/win32/win32k/w32ksvc.db @@ -13,7 +13,7 @@ NtGdiAbortPath 1 # NtGdiAddFontMemResourceEx 5 # NtGdiRemoveMergeFont 2 # NtGdiAddRemoteMMInstanceToDC 3 -# NtGdiAlphaBlend 12 Wrong number of param ? +NtGdiAlphaBlend 12 NtGdiAngleArc 6 # NtGdiAnyLinkedFonts 0 # NtGdiFontIsLinked 1 @@ -280,7 +280,7 @@ NtGdiSetDeviceGammaRamp 2 # NtGdiSetDIBitsToDeviceInternal 16 # NtGdiSetFontEnumeration 1 # NtGdiSetFontXform 3 -# NtGdiSetIcmMode 3 Wrong number of param ? +NtGdiSetIcmMode 3 # NtGdiSetLinkedUFIs 3 # NtGdiSetMagicColors 3 NtGdiSetMetaRgn 1 @@ -676,7 +676,6 @@ NtGdiEngAlphaBlend 7 # # # Wrong number of param ? -NtGdiSetICMMode 2 NtUserCreateWindowEx 14 NtUserCreateWindowStation 6 NtUserEnumDisplayMonitors 5 @@ -691,7 +690,6 @@ NtUserSetCursorIconData 6 NtUserSetWinEventHook 8 NtUserUnregisterClass 2 NtUserValidateHandleSecure 1 -NtGdiAlphaBlend 11 # #ReactOS specify syscall NtGdiSelectObject 2