mirror of
https://github.com/reactos/reactos.git
synced 2024-11-20 14:30:57 +00:00
[WIN32K]
- make DIB_XXBPP_StretchBlt work with top down bitmaps - fixes missing icons in the taskbar in explorer new (32bpp) svn path=/trunk/; revision=63404
This commit is contained in:
parent
a5b59586d3
commit
16a52a9e08
1 changed files with 6 additions and 2 deletions
|
@ -29,6 +29,8 @@ BOOLEAN DIB_XXBPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf, SURFOBJ *Ma
|
||||||
LONG DstWidth;
|
LONG DstWidth;
|
||||||
LONG SrcHeight;
|
LONG SrcHeight;
|
||||||
LONG SrcWidth;
|
LONG SrcWidth;
|
||||||
|
LONG MaskCy;
|
||||||
|
LONG SourceCy;
|
||||||
|
|
||||||
ULONG Color;
|
ULONG Color;
|
||||||
ULONG Dest, Source = 0, Pattern = 0;
|
ULONG Dest, Source = 0, Pattern = 0;
|
||||||
|
@ -56,6 +58,7 @@ BOOLEAN DIB_XXBPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf, SURFOBJ *Ma
|
||||||
|
|
||||||
if (UsesSource)
|
if (UsesSource)
|
||||||
{
|
{
|
||||||
|
SourceCy = abs(SourceSurf->sizlBitmap.cy);
|
||||||
fnSource_GetPixel = DibFunctionsForBitmapFormat[SourceSurf->iBitmapFormat].DIB_GetPixel;
|
fnSource_GetPixel = DibFunctionsForBitmapFormat[SourceSurf->iBitmapFormat].DIB_GetPixel;
|
||||||
DPRINT("Source BPP: %u, srcRect: (%d,%d)-(%d,%d)\n",
|
DPRINT("Source BPP: %u, srcRect: (%d,%d)-(%d,%d)\n",
|
||||||
BitsPerFormat(SourceSurf->iBitmapFormat), SourceRect->left, SourceRect->top, SourceRect->right, SourceRect->bottom);
|
BitsPerFormat(SourceSurf->iBitmapFormat), SourceRect->left, SourceRect->top, SourceRect->right, SourceRect->bottom);
|
||||||
|
@ -64,6 +67,7 @@ BOOLEAN DIB_XXBPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf, SURFOBJ *Ma
|
||||||
if (MaskSurf)
|
if (MaskSurf)
|
||||||
{
|
{
|
||||||
fnMask_GetPixel = DibFunctionsForBitmapFormat[MaskSurf->iBitmapFormat].DIB_GetPixel;
|
fnMask_GetPixel = DibFunctionsForBitmapFormat[MaskSurf->iBitmapFormat].DIB_GetPixel;
|
||||||
|
MaskCy = abs(MaskSurf->sizlBitmap.cy);
|
||||||
}
|
}
|
||||||
|
|
||||||
DstHeight = DestRect->bottom - DestRect->top;
|
DstHeight = DestRect->bottom - DestRect->top;
|
||||||
|
@ -124,7 +128,7 @@ BOOLEAN DIB_XXBPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf, SURFOBJ *Ma
|
||||||
{
|
{
|
||||||
sx = SourceRect->left+(DesX - DestRect->left) * SrcWidth / DstWidth;
|
sx = SourceRect->left+(DesX - DestRect->left) * SrcWidth / DstWidth;
|
||||||
if (sx < 0 || sy < 0 ||
|
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)
|
fnMask_GetPixel(MaskSurf, sx, sy) != 0)
|
||||||
{
|
{
|
||||||
CanDraw = FALSE;
|
CanDraw = FALSE;
|
||||||
|
@ -135,7 +139,7 @@ BOOLEAN DIB_XXBPP_StretchBlt(SURFOBJ *DestSurf, SURFOBJ *SourceSurf, SURFOBJ *Ma
|
||||||
{
|
{
|
||||||
sx = SourceRect->left+(DesX - DestRect->left) * SrcWidth / DstWidth;
|
sx = SourceRect->left+(DesX - DestRect->left) * SrcWidth / DstWidth;
|
||||||
if (sx >= 0 && sy >= 0 &&
|
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));
|
Source = XLATEOBJ_iXlate(ColorTranslation, fnSource_GetPixel(SourceSurf, sx, sy));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue