mirror of
https://github.com/reactos/reactos.git
synced 2024-10-15 13:45:58 +00:00
[GDI32]
- Remove the old SetDIBBits, it severed us well.... Hold on to the win32k call. - Tested, Area.exe, wine gdi32 bitmaps test, AbiWord 2.8.6, OOo 2.4.3, SM 2.0.11 and ReactOS applications. - Aimp 2.61.583 (FULL, pinted okay), CoolPlayer 219, winamp 0.98d and winamp 2.95 (not FUll). The rest have drawing issue with DIB. See bug 5886. svn path=/trunk/; revision=50987
This commit is contained in:
parent
d53444e50b
commit
b84b85e485
|
@ -531,7 +531,6 @@ CreateDIBitmap( HDC hDC,
|
||||||
return hBmp;
|
return hBmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0 // FIXME!!! This is a victim of the Win32k Initialization BUG!!!!!
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
|
@ -623,60 +622,6 @@ SetDIBits(HDC hDC,
|
||||||
|
|
||||||
return LinesCopied;
|
return LinesCopied;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
INT
|
|
||||||
WINAPI
|
|
||||||
SetDIBits(HDC hdc,
|
|
||||||
HBITMAP hbmp,
|
|
||||||
UINT uStartScan,
|
|
||||||
UINT cScanLines,
|
|
||||||
CONST VOID *lpvBits,
|
|
||||||
CONST BITMAPINFO *lpbmi,
|
|
||||||
UINT fuColorUse)
|
|
||||||
{
|
|
||||||
PBITMAPINFO pConvertedInfo;
|
|
||||||
UINT ConvertedInfoSize;
|
|
||||||
INT LinesCopied = 0;
|
|
||||||
UINT cjBmpScanSize = 0;
|
|
||||||
PVOID pvSafeBits = (PVOID)lpvBits;
|
|
||||||
|
|
||||||
// This needs to be almost the sames as SetDIBitsToDevice
|
|
||||||
|
|
||||||
if ( !cScanLines || !lpbmi || !lpvBits || (GDI_HANDLE_GET_TYPE(hbmp) != GDI_OBJECT_TYPE_BITMAP))
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if ( fuColorUse && fuColorUse != DIB_PAL_COLORS && fuColorUse != DIB_PAL_COLORS+1 )
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
pConvertedInfo = ConvertBitmapInfo(lpbmi, fuColorUse,
|
|
||||||
&ConvertedInfoSize, FALSE);
|
|
||||||
if (!pConvertedInfo)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
cjBmpScanSize = DIB_BitmapMaxBitsSize((LPBITMAPINFO)lpbmi, cScanLines);
|
|
||||||
|
|
||||||
if ( lpvBits )
|
|
||||||
{
|
|
||||||
pvSafeBits = RtlAllocateHeap(GetProcessHeap(), 0, cjBmpScanSize);
|
|
||||||
if (pvSafeBits)
|
|
||||||
RtlCopyMemory( pvSafeBits, lpvBits, cjBmpScanSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
LinesCopied = NtGdiSetDIBits( hdc,
|
|
||||||
hbmp,
|
|
||||||
uStartScan,
|
|
||||||
cScanLines,
|
|
||||||
pvSafeBits,
|
|
||||||
pConvertedInfo,
|
|
||||||
fuColorUse);
|
|
||||||
|
|
||||||
if ( lpvBits != pvSafeBits)
|
|
||||||
RtlFreeHeap(RtlGetProcessHeap(), 0, pvSafeBits);
|
|
||||||
if (lpbmi != pConvertedInfo)
|
|
||||||
RtlFreeHeap(RtlGetProcessHeap(), 0, pConvertedInfo);
|
|
||||||
return LinesCopied;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
|
|
Loading…
Reference in a new issue