X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1d0edc0f7306aac10a75c545f9cace25d3cee83d..9fd9e47a93dfcdd99c2722e288a0f28a51ce6f5f:/src/os2/dc.cpp diff --git a/src/os2/dc.cpp b/src/os2/dc.cpp index 0d89f00d9f..9a58657da1 100644 --- a/src/os2/dc.cpp +++ b/src/os2/dc.cpp @@ -1043,12 +1043,49 @@ void wxDC::DoDrawRectangle( // // Debug testing: // - for (int i = 0; i < vHeight; i++) + if (m_vSelectedBitmap != wxNullBitmap) { - for (int j = 0; j < vHeight; j++) + BITMAPINFOHEADER2 vHeader; + BITMAPINFO2 vInfo; + + vHeader.cbFix = 16L; + if (::GpiQueryBitmapInfoHeader(m_hPS, &vHeader)) { - vPoint[0].x = j; vPoint[0].y = i; - lColor = ::GpiQueryPel(m_hPS, &vPoint[0]); + int nBytesPerLine = vHeader.cBitCount/8; + unsigned char* pucData = NULL; + unsigned char* pucBits; + LONG lScans = 0L; + + vInfo.cbFix = 16; + vInfo.cx = vHeader.cx; + vInfo.cy = vHeader.cy; + vInfo.cPlanes = vHeader.cPlanes; + vInfo.cBitCount = vHeader.cBitCount; + pucData = (unsigned char*)malloc(nBytesPerLine * vHeight); + pucBits = pucData; + for (int i = 0; i < vHeight; i++) + { + if (i <= m_vSelectedBitmap.GetHeight()) + { + for (int j = 0; j < vWidth; j++) + { + if (j <= m_vSelectedBitmap.GetWidth()) + { + vPoint[0].x = j; vPoint[0].y = i; + lColor = ::GpiQueryPel(m_hPS, &vPoint[0]); + *(pucBits++) = lColor >> 24; + *(pucBits++) = lColor >> 16; + *(pucBits++) = lColor >> 8; + } + } + } + } + lScans = ::GpiSetBitmapBits( m_hPS + ,0 // Start at the bottom + ,(LONG)vHeight // One line per scan + ,(PBYTE)pucData + ,&vInfo + ); } } }