Author: khornicek Date: Thu May 22 09:33:29 2014 New Revision: 63404
URL: http://svn.reactos.org/svn/reactos?rev=63404&view=rev Log: [WIN32K] - make DIB_XXBPP_StretchBlt work with top down bitmaps - fixes missing icons in the taskbar in explorer new (32bpp)
Modified: trunk/reactos/win32ss/gdi/dib/stretchblt.c
Modified: trunk/reactos/win32ss/gdi/dib/stretchblt.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/gdi/dib/stretchblt.... ============================================================================== --- trunk/reactos/win32ss/gdi/dib/stretchblt.c [iso-8859-1] (original) +++ trunk/reactos/win32ss/gdi/dib/stretchblt.c [iso-8859-1] Thu May 22 09:33:29 2014 @@ -29,6 +29,8 @@ LONG DstWidth; LONG SrcHeight; LONG SrcWidth; + LONG MaskCy; + LONG SourceCy;
ULONG Color; ULONG Dest, Source = 0, Pattern = 0; @@ -56,6 +58,7 @@
if (UsesSource) { + SourceCy = abs(SourceSurf->sizlBitmap.cy); fnSource_GetPixel = DibFunctionsForBitmapFormat[SourceSurf->iBitmapFormat].DIB_GetPixel; DPRINT("Source BPP: %u, srcRect: (%d,%d)-(%d,%d)\n", BitsPerFormat(SourceSurf->iBitmapFormat), SourceRect->left, SourceRect->top, SourceRect->right, SourceRect->bottom); @@ -64,6 +67,7 @@ if (MaskSurf) { fnMask_GetPixel = DibFunctionsForBitmapFormat[MaskSurf->iBitmapFormat].DIB_GetPixel; + MaskCy = abs(MaskSurf->sizlBitmap.cy); }
DstHeight = DestRect->bottom - DestRect->top; @@ -124,7 +128,7 @@ { sx = SourceRect->left+(DesX - DestRect->left) * SrcWidth / DstWidth; if (sx < 0 || sy < 0 || - MaskSurf->sizlBitmap.cx < sx || MaskSurf->sizlBitmap.cy < sy || + MaskSurf->sizlBitmap.cx < sx || MaskCy < sy || fnMask_GetPixel(MaskSurf, sx, sy) != 0) { CanDraw = FALSE; @@ -135,7 +139,7 @@ { sx = SourceRect->left+(DesX - DestRect->left) * SrcWidth / DstWidth; if (sx >= 0 && sy >= 0 && - SourceSurf->sizlBitmap.cx > sx && SourceSurf->sizlBitmap.cy > sy) + SourceSurf->sizlBitmap.cx > sx && SourceCy > sy) { Source = XLATEOBJ_iXlate(ColorTranslation, fnSource_GetPixel(SourceSurf, sx, sy)); }