X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1759c4913394381b22d14e78275d3a6f4a0d18e2..222702b112dcc7bebe018d6f4d66fe469fefd02c:/src/os2/bitmap.cpp?ds=inline diff --git a/src/os2/bitmap.cpp b/src/os2/bitmap.cpp index 2a88e27107..46b88b5eb8 100644 --- a/src/os2/bitmap.cpp +++ b/src/os2/bitmap.cpp @@ -58,7 +58,7 @@ wxBitmapRefData::wxBitmapRefData() m_pSelectedInto = NULL; m_nNumColors = 0; m_pBitmapMask = NULL; - m_hBitmap = (WXHBITMAP) NULL; + m_hBitmap = (WXHBITMAP) NULL; } // end of wxBitmapRefData::wxBitmapRefData void wxBitmapRefData::Free() @@ -74,9 +74,11 @@ void wxBitmapRefData::Free() wxLogLastError("GpiDeleteBitmap(hbitmap)"); } } - - delete m_pBitmapMask; - m_pBitmapMask = NULL; + if (m_pBitmapMask) + { + delete m_pBitmapMask; + m_pBitmapMask = NULL; + } } // end of wxBitmapRefData::Free // ---------------------------------------------------------------------------- @@ -90,7 +92,6 @@ void wxBitmap::Init() // // True for all bitmaps created from bits, wxImages, Xpms // - m_bFlip = TRUE; } // end of wxBitmap::Init bool wxBitmap::CopyFromIconOrCursor( @@ -193,7 +194,7 @@ wxBitmap::wxBitmap( // // We assume that it is in XBM format which is not quite the same as // the format CreateBitmap() wants because the order of bytes in the - // line is inversed! + // line is reversed! // const size_t nBytesPerLine = (nWidth + 7) / 8; const size_t nPadding = nBytesPerLine % 2; @@ -269,7 +270,6 @@ wxBitmap::wxBitmap( ) { Init(); - m_bFlip = FALSE; (void)Create( nW ,nH ,nD @@ -295,15 +295,15 @@ wxBitmap::wxBitmap( } // end of wxBitmap::wxBitmap wxBitmap::wxBitmap( - const wxString& rFilename + int nId , long lType ) { Init(); - m_bFlip = FALSE; - LoadFile( rFilename + LoadFile( nId ,(int)lType ); + SetId(nId); } // end of wxBitmap::wxBitmap bool wxBitmap::Create( @@ -326,8 +326,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}; @@ -335,6 +333,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; @@ -383,10 +383,6 @@ bool wxBitmap::Create( } SetHBITMAP((WXHBITMAP)hBmp); -#if WXWIN_COMPATIBILITY_2 - GetBitmapData()->m_bOk = hBmp != 0; -#endif // WXWIN_COMPATIBILITY_2 - return Ok(); } // end of wxBitmap::Create @@ -412,12 +408,10 @@ bool wxBitmap::CreateFromXpm( } // end of wxBitmap::CreateFromXpm bool wxBitmap::LoadFile( - const wxString& rFilename + int nId , long lType ) { - HPS hPs = NULLHANDLE; - UnRef(); wxBitmapHandler* pHandler = wxDynamicCast( FindHandler(lType) @@ -429,8 +423,7 @@ bool wxBitmap::LoadFile( m_refData = new wxBitmapRefData; return(pHandler->LoadFile( this - ,rFilename - ,hPs + ,nId ,lType , -1 , -1 @@ -438,14 +431,7 @@ bool wxBitmap::LoadFile( } else { - wxImage vImage; - - if (!vImage.LoadFile(rFilename, lType) || !vImage.Ok() ) - return(FALSE); - - *this = wxBitmap(vImage); - - return(TRUE); + return(FALSE); } } // end of wxBitmap::LoadFile @@ -465,8 +451,7 @@ bool wxBitmap::Create( if (!pHandler) { - wxLogDebug(wxT("Failed to create bitmap: no bitmap handler for " - "type %d defined."), lType); + wxLogDebug(wxT("Failed to create bitmap: no bitmap handler for type %ld defined."), lType); return(FALSE); } @@ -516,7 +501,7 @@ bool wxBitmap::SaveFile( // ---------------------------------------------------------------------------- -// wxImage-wxBitmap convertion +// wxImage-wxBitmap conversion // ---------------------------------------------------------------------------- bool wxBitmap::CreateFromImage ( @@ -526,7 +511,6 @@ bool wxBitmap::CreateFromImage ( { wxCHECK_MSG(rImage.Ok(), FALSE, wxT("invalid image")); m_refData = new wxBitmapRefData(); - m_bFlip = TRUE; int nSizeLimit = 1024 * 768 * 3; int nWidth = rImage.GetWidth(); @@ -565,6 +549,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); @@ -707,9 +695,9 @@ bool wxBitmap::CreateFromImage ( ,PU_PELS | GPIA_ASSOC ); - POINTL vPoint[4] = { 0, nOrigin, - nWidth, nHeight, - 0, 0, nWidth, nHeight + POINTL vPoint[4] = { {0, nOrigin}, + {nWidth, nHeight}, + {0, 0}, {nWidth, nHeight} }; @@ -770,6 +758,7 @@ bool wxBitmap::CreateFromImage ( // nHeight = nHRemain; vHeader.cy = (DWORD)(nHeight); + vHeader.cbImage = nBytePerLine * nHeight; } ptbits = pucBits; for (int j = 0; j < nHeight; j++) @@ -807,9 +796,9 @@ bool wxBitmap::CreateFromImage ( ,&vSize ,PU_PELS | GPIA_ASSOC ); - POINTL vPoint2[4] = { 0, nOrigin, - nWidth, nHeight, - 0, 0, nWidth, nHeight + POINTL vPoint2[4] = { {0, nOrigin}, + {nWidth, nHeight}, + {0, 0}, {nWidth, nHeight} }; ::GpiBitBlt( hPSScreen ,hPS @@ -867,12 +856,11 @@ wxImage wxBitmap::ConvertToImage() const BITMAPINFOHEADER2 vDIBh; BITMAPINFO2 vDIBInfo; HPS hPSMem; - HPS hPS; HBITMAP hBitmap; HBITMAP hOldBitmap; DEVOPENSTRUC vDop = {0L, "DISPLAY", NULL, 0L, 0L, 0L, 0L, 0L, 0L}; SIZEL vSizlPage = {0,0}; - HDC hDCMem; + HDC hDCMem = NULLHANDLE;; vImage.Create( nWidth ,nHeight @@ -1100,9 +1088,9 @@ wxBitmap wxBitmap::GetSubBitmap( HDC hDCDst = ::DevOpenDC(vHabmain, OD_MEMORY, "*", 5L, (PDEVOPENDATA)&vDop, NULLHANDLE); HPS hPSSrc = ::GpiCreatePS(vHabmain, hDCSrc, &vSize, PU_PELS | GPIA_ASSOC); HPS hPSDst = ::GpiCreatePS(vHabmain, hDCDst, &vSize, PU_PELS | GPIA_ASSOC); - POINTL vPoint[4] = { 0, 0, rRect.width, rRect.height, - rRect.x, rRect.y, - rRect.x + rRect.width, rRect.y + rRect.height + POINTL vPoint[4] = { {0, 0}, {rRect.width, rRect.height}, + {rRect.x, rRect.y}, + {rRect.x + rRect.width, rRect.y + rRect.height} }; ::GpiSetBitmap(hPSSrc, (HBITMAP) GetHBITMAP()); @@ -1175,17 +1163,6 @@ void wxBitmap::SetQuality( GetBitmapData()->m_nQuality = nQ; } // end of wxBitmap::SetQuality -#if WXWIN_COMPATIBILITY_2 -void wxBitmap::SetOk( - bool bOk -) -{ - EnsureHasData(); - - GetBitmapData()->m_bOk = bOk; -} // end of wxBitmap::SetOk -#endif // WXWIN_COMPATIBILITY_2 - void wxBitmap::SetPalette( const wxPalette& rPalette ) @@ -1273,8 +1250,8 @@ bool wxMask::Create( HDC hDCDst = ::DevOpenDC(vHabmain, OD_MEMORY, "*", 5L, (PDEVOPENDATA)&vDop, NULLHANDLE); HPS hPSSrc = ::GpiCreatePS(vHabmain, hDCSrc, &vSize, PU_PELS | GPIA_ASSOC); HPS hPSDst = ::GpiCreatePS(vHabmain, hDCDst, &vSize, PU_PELS | GPIA_ASSOC); - POINTL vPoint[4] = { 0 ,0, rBitmap.GetWidth(), rBitmap.GetHeight(), - 0, 0, rBitmap.GetWidth(), rBitmap.GetHeight() + POINTL vPoint[4] = { {0 ,0}, {rBitmap.GetWidth(), rBitmap.GetHeight()}, + {0, 0}, {rBitmap.GetWidth(), rBitmap.GetHeight()} }; if (m_hMaskBitmap) @@ -1374,9 +1351,6 @@ bool wxMask::Create( HDC hDCDst = ::DevOpenDC(vHabmain, OD_MEMORY, "*", 5L, (PDEVOPENDATA)&vDop, NULLHANDLE); HPS hPSSrc = ::GpiCreatePS(vHabmain, hDCSrc, &vSize, PU_PELS | GPIA_ASSOC); HPS hPSDst = ::GpiCreatePS(vHabmain, hDCDst, &vSize, PU_PELS | GPIA_ASSOC); - POINTL vPoint[4] = { 0 ,0, rBitmap.GetWidth(), rBitmap.GetHeight(), - 0, 0, rBitmap.GetWidth(), rBitmap.GetHeight() - }; if (m_hMaskBitmap) { @@ -1478,8 +1452,7 @@ bool wxBitmapHandler::Create( bool wxBitmapHandler::Load( wxGDIImage* pImage -, const wxString& rName -, HPS hPs +, int nId , long lFlags , int nWidth , int nHeight @@ -1490,8 +1463,7 @@ bool wxBitmapHandler::Load( ); return(pBitmap ? LoadFile( pBitmap - ,rName - ,hPs + ,nId ,lFlags ,nWidth ,nHeight @@ -1528,8 +1500,7 @@ bool wxBitmapHandler::Create( bool wxBitmapHandler::LoadFile( wxBitmap* WXUNUSED(pBitmap) -, const wxString& WXUNUSED(rName) -, HPS WXUNUSED(hPs) +, int WXUNUSED(nId) , long WXUNUSED(lType) , int WXUNUSED(nDesiredWidth) , int WXUNUSED(nDesiredHeight) @@ -1582,8 +1553,8 @@ HBITMAP wxInvertMask( HDC hDCDst = ::DevOpenDC(vHabmain, OD_MEMORY, "*", 5L, (PDEVOPENDATA)&vDop, NULLHANDLE); HPS hPSSrc = ::GpiCreatePS(vHabmain, hDCSrc, &vSize, PU_PELS | GPIA_ASSOC); HPS hPSDst = ::GpiCreatePS(vHabmain, hDCDst, &vSize, PU_PELS | GPIA_ASSOC); - POINTL vPoint[4] = { 0 ,0, nWidth, nHeight, - 0, 0, nWidth, nHeight + POINTL vPoint[4] = { {0 ,0}, {nWidth, nHeight}, + {0, 0}, {nWidth, nHeight} }; memset(&vBmih, '\0', 16);