X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/29172908bf90ddd8b70c5195b870745b5af3b7a3..e9f3277455eb805ab88305bef8468d50926b7882:/src/os2/bitmap.cpp diff --git a/src/os2/bitmap.cpp b/src/os2/bitmap.cpp index 944dc33188..92ca4c551e 100644 --- a/src/os2/bitmap.cpp +++ b/src/os2/bitmap.cpp @@ -87,6 +87,9 @@ void wxBitmapRefData::Free() void wxBitmap::Init() { m_bIsMono = FALSE; + // + // True for all bitmaps created from bits, wxImages, Xpms + // } // end of wxBitmap::Init bool wxBitmap::CopyFromIconOrCursor( @@ -265,7 +268,6 @@ wxBitmap::wxBitmap( ) { Init(); - (void)Create( nW ,nH ,nD @@ -296,7 +298,6 @@ wxBitmap::wxBitmap( ) { Init(); - LoadFile( rFilename ,(int)lType ); @@ -322,8 +323,6 @@ bool wxBitmap::Create( // Xpms and bitmaps from other images can also be mono's, but only // mono's need help changing their colors with MemDC changes // - if (nD == 1) - m_bIsMono = TRUE; if (nD > 0) { DEVOPENSTRUC vDop = {0L, "DISPLAY", NULL, 0L, 0L, 0L, 0L, 0L, 0L}; @@ -331,6 +330,8 @@ bool wxBitmap::Create( HDC hDC = ::DevOpenDC(vHabmain, OD_MEMORY, "*", 5L, (PDEVOPENDATA)&vDop, NULLHANDLE); HPS hPS = ::GpiCreatePS(vHabmain, hDC, &vSize, PU_PELS | GPIA_ASSOC); + if (nD == 1) + m_bIsMono = TRUE; memset(&vHeader, '\0', 16); vHeader.cbFix = 16; vHeader.cx = nW; @@ -523,7 +524,6 @@ bool wxBitmap::CreateFromImage ( wxCHECK_MSG(rImage.Ok(), FALSE, wxT("invalid image")); m_refData = new wxBitmapRefData(); - int nSizeLimit = 1024 * 768 * 3; int nWidth = rImage.GetWidth(); int nBmpHeight = rImage.GetHeight(); @@ -561,6 +561,10 @@ bool wxBitmap::CreateFromImage ( wxCHECK_MSG(rImage.Ok(), FALSE, wxT("invalid image")); SetWidth(nWidth); SetHeight(nBmpHeight); + if (nDepth == 1) + m_bIsMono = TRUE; + else + m_bIsMono = FALSE; if (nDepth == -1) nDepth = wxDisplayDepth(); SetDepth(nDepth); @@ -697,10 +701,6 @@ bool wxBitmap::CreateFromImage ( vError = ::WinGetLastError(vHabmain); sError = wxPMErrorToStr(vError); } - // - // Debug stuff - // - hPSScreen = ::GpiCreatePS( vHabmain ,hDCScreen ,&vSize @@ -770,6 +770,7 @@ bool wxBitmap::CreateFromImage ( // nHeight = nHRemain; vHeader.cy = (DWORD)(nHeight); + vHeader.cbImage = nBytePerLine * nHeight; } ptbits = pucBits; for (int j = 0; j < nHeight; j++) @@ -1127,7 +1128,7 @@ wxBitmap wxBitmap::GetSubBitmap( vBmih.cx = rRect.width; vBmih.cy = rRect.height; vBmih.cPlanes = 1; - vBmih.cBitCount = 1; + vBmih.cBitCount = 24; HBITMAP hBmpMask = ::GpiCreateBitmap( hPSDst ,&vBmih @@ -1292,7 +1293,7 @@ bool wxMask::Create( vBmih.cx = rBitmap.GetWidth(); vBmih.cy = rBitmap.GetHeight(); vBmih.cPlanes = 1; - vBmih.cBitCount = 1; + vBmih.cBitCount = 24; m_hMaskBitmap = ::GpiCreateBitmap( hPSDst ,&vBmih @@ -1586,12 +1587,12 @@ HBITMAP wxInvertMask( 0, 0, nWidth, nHeight }; - memset(&vBmih, '\0', sizeof(BITMAPINFOHEADER2)); - vBmih.cbFix = sizeof(BITMAPINFOHEADER2); + memset(&vBmih, '\0', 16); + vBmih.cbFix = 16; vBmih.cx = nWidth; vBmih.cy = nHeight; vBmih.cPlanes = 1; - vBmih.cBitCount = 1; + vBmih.cBitCount = 24; hBmpInvMask = ::GpiCreateBitmap( hPSDst ,&vBmih