[Bug 412] Changed - Win32 API CreateDIBSection for 4bpp yields wrong result
wine-bugs at winehq.com
wine-bugs at winehq.com
Mon May 20 09:06:55 CDT 2002
http://bugs.winehq.com/show_bug.cgi?id=412
*** shadow/412 Sun Jan 27 05:51:19 2002
--- shadow/412.tmp.22974 Mon May 20 09:06:55 2002
***************
*** 7,16 ****
| Severity: normal OS/Version: All |
| Priority: P1 Component: wine-gdi |
+----------------------------------------------------------------------------+
! | Assigned To: bugs at codeweavers.com |
| Reported By: ye_zong_hui at yahoo.com.cn |
| CC list: Cc: |
+----------------------------------------------------------------------------+
| URL: |
+============================================================================+
| DESCRIPTION |
--- 7,17 ----
| Severity: normal OS/Version: All |
| Priority: P1 Component: wine-gdi |
+----------------------------------------------------------------------------+
! | Assigned To: wine-bugs at winehq.com |
| Reported By: ye_zong_hui at yahoo.com.cn |
| CC list: Cc: |
+----------------------------------------------------------------------------+
+ | Milestone: TargetMilestone: --- |
| URL: |
+============================================================================+
| DESCRIPTION |
***************
*** 243,245 ****
--- 244,272 ----
------- Additional Comments From ye_zong_hui at yahoo.com.cn 2002-01-27 05:50 -------
*** This bug has been confirmed by popular vote. ***
+
+ ------- Additional Comments From bon at elektron.ikp.physik.tu-darmstadt.de 2002-05-20 09:06 -------
+ The Helio Emulator emulator (source is available) uses the depreciate
+ SetBitmapBits() function, what probably exposes an error in our DIB handling.
+
+ First a 4 bit DIBSection is created:
+ lpbi->bmiHeader.biPlanes = 1;
+ lpbi->bmiHeader.biBitCount = 4;
+ ..
+ PVOID pvBits;
+ m_hbmLCD = CreateDIBSection(hdc, lpbi, DIB_RGB_COLORS, &pvBits, NULL, 0 );
+
+ Later the real data is set:
+ HDC hdcLCD = CreateCompatibleDC(hdc);
+ HBITMAP hbmOld = (HBITMAP) SelectObject(hdcLCD, m_hbmLCD);
+ SetBitmapBits(m_hbmLCD, LCD_WIDTH*LCD_HEIGHT/2, m_abLCDBits);
+ StretchBlt(hdc, m_rcScrn.left, m_rcScrn.top, cxScrn, cyScrn, hdcLCD, 0, 0,
+ LCD_WIDTH, LCD_HEIGHT, SRCCOPY);
+ SelectObject(hdcLCD, hbmOld);
+ DeleteDC(hdcLCD);
+
+ Now the four bit data given is handled as 24 bit data which was used for the
+ bitmap during CreateDIBSection and the display is wrong. I think we need to use
+ SetDIBits somehow, but I don't know how.
+
+ Bye
\ No newline at end of file
More information about the wine-bugs
mailing list