From: James Tabor Date: Mon, 7 Mar 2011 07:24:43 +0000 (+0000) Subject: [GDI32] X-Git-Tag: ReactOS-0.3.13~56 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=b84b85e485f602343d55c7a40aa9cf1844fe999e;hp=d53444e50b8c99331c4679c37eeba96599f6c98a [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 --- diff --git a/reactos/dll/win32/gdi32/objects/bitmap.c b/reactos/dll/win32/gdi32/objects/bitmap.c index 969beb6ad44..024ac81f4cb 100644 --- a/reactos/dll/win32/gdi32/objects/bitmap.c +++ b/reactos/dll/win32/gdi32/objects/bitmap.c @@ -531,7 +531,6 @@ CreateDIBitmap( HDC hDC, return hBmp; } -#if 0 // FIXME!!! This is a victim of the Win32k Initialization BUG!!!!! /* * @implemented */ @@ -623,60 +622,6 @@ SetDIBits(HDC hDC, 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