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));
}