From e21ccdffe26aa7427dc52c1d9fda35f490bb990e Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sat, 25 Apr 2015 12:04:21 +0000 Subject: [PATCH] [UXTHEME] Apply Wine commit c6b4b4b by Mark Harmstone: Fix colour errors in UXTHEME_StretchBlt. svn path=/trunk/; revision=67405 --- reactos/dll/win32/uxtheme/draw.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/reactos/dll/win32/uxtheme/draw.c b/reactos/dll/win32/uxtheme/draw.c index a7838e34d35..abc4153c1cf 100644 --- a/reactos/dll/win32/uxtheme/draw.c +++ b/reactos/dll/win32/uxtheme/draw.c @@ -274,22 +274,33 @@ static inline BOOL UXTHEME_StretchBlt(HDC hdcDst, int nXOriginDst, int nYOriginD 255, /* SourceConstantAlpha */ AC_SRC_ALPHA /* AlphaFormat */ }; + + BOOL ret = TRUE; + int old_stretch_mode; + POINT old_brush_org; + + old_stretch_mode = SetStretchBltMode(hdcDst, HALFTONE); + SetBrushOrgEx(hdcDst, nXOriginDst, nYOriginDst, &old_brush_org); + if (transparent == ALPHABLEND_BINARY) { /* Ensure we don't pass any negative values to TransparentBlt */ - return TransparentBlt(hdcDst, nXOriginDst, nYOriginDst, abs(nWidthDst), abs(nHeightDst), + ret = TransparentBlt(hdcDst, nXOriginDst, nYOriginDst, abs(nWidthDst), abs(nHeightDst), hdcSrc, nXOriginSrc, nYOriginSrc, abs(nWidthSrc), abs(nHeightSrc), transcolor); - } - if ((transparent == ALPHABLEND_NONE) || + } else if ((transparent == ALPHABLEND_NONE) || !AlphaBlend(hdcDst, nXOriginDst, nYOriginDst, nWidthDst, nHeightDst, hdcSrc, nXOriginSrc, nYOriginSrc, nWidthSrc, nHeightSrc, blendFunc)) { - return StretchBlt(hdcDst, nXOriginDst, nYOriginDst, nWidthDst, nHeightDst, + ret = StretchBlt(hdcDst, nXOriginDst, nYOriginDst, nWidthDst, nHeightDst, hdcSrc, nXOriginSrc, nYOriginSrc, nWidthSrc, nHeightSrc, SRCCOPY); } - return TRUE; + + SetBrushOrgEx(hdcDst, old_brush_org.x, old_brush_org.y, NULL); + SetStretchBltMode(hdcDst, old_stretch_mode); + + return ret; } /***********************************************************************