X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/58b1642453c5858a4dd29425b065e9215cb8ec79..6342bd1ab36c1957684c00d408d09fba65d33db6:/src/os2/bitmap.cpp?ds=sidebyside diff --git a/src/os2/bitmap.cpp b/src/os2/bitmap.cpp index 8b7c34da37..2d7a3fc799 100644 --- a/src/os2/bitmap.cpp +++ b/src/os2/bitmap.cpp @@ -9,6 +9,10 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// +#ifdef __GNUG__ + #pragma implementation "bitmap.h" +#endif + // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -34,12 +38,10 @@ // macros // ---------------------------------------------------------------------------- -#if !USE_SHARED_LIBRARIES IMPLEMENT_DYNAMIC_CLASS(wxBitmap, wxGDIObject) IMPLEMENT_DYNAMIC_CLASS(wxMask, wxObject) IMPLEMENT_DYNAMIC_CLASS(wxBitmapHandler, wxObject) -#endif // ============================================================================ // implementation @@ -95,18 +97,17 @@ bool wxBitmap::CopyFromIconOrCursor( m_refData = pRefData; - refData->m_width = rIcon.GetWidth(); - refData->m_height = rIcon.GetHeight(); - refData->m_depth = wxDisplayDepth(); + pRefData->m_nWidth = rIcon.GetWidth(); + pRefData->m_nHeight = rIcon.GetHeight(); + pRefData->m_nDepth = wxDisplayDepth(); - refData->m_hBitmap = (WXHBITMAP)rIcon.GetHandle(); + pRefData->m_hBitmap = (WXHBITMAP)rIcon.GetHandle(); // no mask??? - refData->m_bitmapMask = new wxMask(); + pRefData->m_pBitmapMask = new wxMask(); #if WXWIN_COMPATIBILITY_2 - refData->m_ok = TRUE; + pRefData->m_bOk = TRUE; #endif // WXWIN_COMPATIBILITY_2 - return(TRUE); } @@ -118,7 +119,7 @@ bool wxBitmap::CopyFromCursor( if (!rCursor.Ok()) return(FALSE); - return CopyFromIconOrCursor(wxGDIImage)rCursor); + return(CopyFromIconOrCursor(rCursor)); } bool wxBitmap::CopyFromIcon( @@ -130,11 +131,7 @@ bool wxBitmap::CopyFromIcon( if (!rIcon.Ok()) return(FALSE); -#if WXWIN_COMPATIBILITY_2 - refData->m_ok = TRUE; -#endif // WXWIN_COMPATIBILITY_2 - - return CopyFromIconOrCursor(icon); + return CopyFromIconOrCursor(rIcon); } wxBitmap::~wxBitmap() @@ -157,10 +154,10 @@ wxBitmap::wxBitmap( BITMAPINFO2 vInfo; HDC hDc; HPS hPs; - DEVOPENSTRUCT vDop = { NULL, "DISPLAY", NULL, NULL, NULL, NULL, NULL, NULL, NULL }; + DEVOPENSTRUC vDop = { NULL, "DISPLAY", NULL, NULL, NULL, NULL, NULL, NULL, NULL }; SIZEL vSize = {0, 0}; - wxAssert(vHabmain != NULL); + wxASSERT(vHabmain != NULL); hDc = ::DevOpenDC(vHabmain, OD_MEMORY, (PSZ)"*", 1L, (PDEVOPENDATA)&vDop, 0L); @@ -182,29 +179,26 @@ wxBitmap::wxBitmap( vHeader.ulColorEncoding = 0; vHeader.ulIdentifier = 0; - hPs = ::GpiCreatePS(vHabMain, hdc, &vSize, GPIA_ASSOC | PU_PELS); + hPs = ::GpiCreatePS(vHabmain, hDc, &vSize, GPIA_ASSOC | PU_PELS); if (hPs == 0) { wxLogLastError("GpiCreatePS Failure"); } - m_hDc = hDc; - m_hPs = hPs; - m_refData = pRefData; - refData->m_width = nTheWidth; - refData->m_height = nTheHeight; - refData->m_depth = nNoBits; - refData->m_numColors = 0; - refData->m_selectedInto = NULL; + pRefData->m_nWidth = nTheWidth; + pRefData->m_nHeight = nTheHeight; + pRefData->m_nDepth = nNoBits; + pRefData->m_nNumColors = 0; + pRefData->m_pSelectedInto = NULL; HBITMAP hBmp = ::GpiCreateBitmap(hPs, &vHeader, 0L, NULL, &vInfo); - if ( !hbmp ) + if (!hBmp) { wxLogLastError("CreateBitmap"); } - SetHBITMAP((WXHBITMAP)hbmp); + SetHBITMAP((WXHBITMAP)hBmp); } // Create from XPM data @@ -214,7 +208,7 @@ wxBitmap::wxBitmap( { Init(); -F (void)Create( (void *)ppData + (void)Create( (void *)ppData ,wxBITMAP_TYPE_XPM_DATA ,0 ,0 @@ -277,15 +271,15 @@ bool wxBitmap::Create( BITMAPINFO2 vInfo; HPS hpsScreen; HDC hdcScreen; - DEVOPENSTRUCT vDop = { NULL, "DISPLAY", NULL, NULL, NULL, NULL, NULL, NULL, NULL }; + DEVOPENSTRUC vDop = { NULL, "DISPLAY", NULL, NULL, NULL, NULL, NULL, NULL, NULL }; SIZEL vSize = {0, 0}; LONG lBitCount; - wxAssert(vHabmain != NULL); + wxASSERT(vHabmain != NULL); hpsScreen = ::WinGetScreenPS(HWND_DESKTOP); hdcScreen = ::GpiQueryDevice(hpsScreen); - ::DevQueryCaps(hdcScreen, CAPS_COLOR_BITCOUNT, &lBitCount); + ::DevQueryCaps(hdcScreen, CAPS_COLOR_BITCOUNT, 1L, &lBitCount); vHeader.cbFix = sizeof(vHeader); vHeader.cx = (USHORT)nW; @@ -305,13 +299,12 @@ bool wxBitmap::Create( vHeader.ulColorEncoding = 0; vHeader.ulIdentifier = 0; - UnRef(); m_refData = new wxBitmapRefData; - GetBitmapData()->m_width = nW; - GetBitmapData()->m_height = nH; - GetBitmapData()->m_depth = nD; + GetBitmapData()->m_nWidth = nW; + GetBitmapData()->m_nHeight = nH; + GetBitmapData()->m_nDepth = nD; if (nD > 0) { @@ -325,13 +318,13 @@ bool wxBitmap::Create( { LONG lPlanes; - ::DevQueryCaps(hdcScreen, CAPS_COLOR_PLANES, &lPlanes); + ::DevQueryCaps(hdcScreen, CAPS_COLOR_PLANES, 1L, &lPlanes); hBmp = ::GpiCreateBitmap(hpsScreen, &vHeader, 0L, NULL, &vInfo); if (!hBmp) { wxLogLastError("CreateBitmap"); } - GetBitmapData()->m_depth = wxDisplayDepth(); + GetBitmapData()->m_nDepth = wxDisplayDepth(); } SetHBITMAP((WXHBITMAP)hBmp); @@ -347,6 +340,8 @@ bool wxBitmap::LoadFile( , long lType ) { + HPS hPs = NULLHANDLE; + UnRef(); wxBitmapHandler* pHandler = wxDynamicCast( FindHandler(lType) @@ -359,16 +354,17 @@ bool wxBitmap::LoadFile( return(pHandler->LoadFile( this ,rFilename + ,hPs ,lType , -1 , -1 - ); + )); } else { wxImage vImage; - if (!vImage.LoadFile(rFilename, lType) || !image.Ok() ) + if (!vImage.LoadFile(rFilename, lType) || !vImage.Ok() ) return(FALSE); *this = vImage.ConvertToBitmap(); @@ -394,20 +390,20 @@ bool wxBitmap::Create( if (!pHandler) { wxLogDebug(wxT("Failed to create bitmap: no bitmap handler for " - "type %d defined."), type); + "type %d defined."), lType); return(FALSE); } m_refData = new wxBitmapRefData; - return(handler->Create( this - ,pData - ,lType - ,nWidth - ,nHeight - ,nDepth - )); + return(pHandler->Create( this + ,pData + ,lType + ,nWidth + ,nHeight + ,nDepth + )); } bool wxBitmap::SaveFile( @@ -495,18 +491,19 @@ wxBitmap wxBitmap::GetBitmapForDC( ,this->GetHeight() ,rDc.GetDepth() ); + WXHBITMAP vOldBitmap; HPS hMemoryPS; HPS hPs; POINTL vPoint[4]; - SIZEL vSize = {0,0} + SIZEL vSize = {0,0}; - hMemoryPS = ::GpiCreatePS(habMain, (HDC)vMemDC.m_hDc, &vSize, PU_PELS | GPIT_MICRO | GPI_ASSOC); - hPs = ::GpiCreatePS(habMain, (HDC)rDc.m_hDc, &vSize, PU_PELS | GPIT_MICRO | GPI_ASSOC); + hMemoryPS = ::GpiCreatePS(vHabmain, (HDC)vMemDC.GetHDC(), &vSize, PU_PELS | GPIT_MICRO | GPIA_ASSOC); + hPs = ::GpiCreatePS(vHabmain, (HDC)rDc.GetHDC(), &vSize, PU_PELS | GPIT_MICRO | GPIA_ASSOC); // TODO: Set the points - rDc.m_oldBitmap = (WXHBITMAP)::GpiSetBitMap(hPs, (HBITMAP)vTmpBitmap.GetHBITMAP()); - :GpiBitBlt(hPs, hMemoryPS, 4L, vPoint, ROP_SRCCOPY | BBO_IGNORE); + vOldBitmap = (WXHBITMAP)::GpiSetBitmap(hPs, (HBITMAP)vTmpBitmap.GetHBITMAP()); + ::GpiBitBlt(hPs, hMemoryPS, 4L, vPoint, ROP_SRCCOPY, BBO_IGNORE); return(vTmpBitmap); } @@ -567,7 +564,7 @@ bool wxMask::Create( ) { BITMAPINFOHEADER2 vHeader; - DEVOPENSTRUCT vDop = { NULL, "DISPLAY", NULL, NULL, NULL, NULL, NULL, NULL, NULL }; + DEVOPENSTRUC vDop = { NULL, "DISPLAY", NULL, NULL, NULL, NULL, NULL, NULL, NULL }; SIZEL vSize = {0, 0}; POINTL vPoint[4]; @@ -598,7 +595,7 @@ bool wxMask::Create( HPS destPS = ::GpiCreatePS(vHabmain, m_hDc, &vSize, PU_PELS | GPIT_MICRO | GPIA_ASSOC); ::GpiSetBitmap(srcPS, (HBITMAP)m_hMaskBitmap); // TODO: Set the point array - :GpiBitBlt(destPs, srcPS, 4L, vPoint, ROP_SRCCOPY | BBO_IGNORE); + ::GpiBitBlt(destPS, srcPS, 4L, vPoint, ROP_SRCCOPY , BBO_IGNORE); ::GpiDestroyPS(srcPS); ::GpiDestroyPS(destPS); @@ -619,16 +616,19 @@ bool wxMask::Create( } if (rBitmap.Ok() && rBitmap.GetPalette()->Ok()) { - unsigned char red, green, blue; + unsigned char cRed; + unsigned char cGreen; + unsigned char cBlue; + if (rBitmap.GetPalette()->GetRGB( nPaletteIndex - ,&rRed - ,&rGreen - ,&rBlue + ,&cRed + ,&cGreen + ,&cBlue )) { - wxColour vTransparentColour( rRed - ,rGreen - ,rBlue + wxColour vTransparentColour( cRed + ,cGreen + ,cBlue ); return (Create( rBitmap @@ -647,7 +647,7 @@ bool wxMask::Create( ) { BITMAPINFOHEADER2 vHeader; - DEVOPENSTRUCT vDop = { NULL, "DISPLAY", NULL, NULL, NULL, NULL, NULL, NULL, NULL }; + DEVOPENSTRUC vDop = { NULL, "DISPLAY", NULL, NULL, NULL, NULL, NULL, NULL, NULL }; SIZEL vSize = {0, 0}; POINTL vPoint[4]; @@ -678,7 +678,7 @@ bool wxMask::Create( ,NULL ,NULL ); - ); + HPS srcPS = ::GpiCreatePS(vHabmain, m_hDc, &vSize, PU_PELS | GPIT_MICRO | GPIA_ASSOC); ::GpiSetBitmap(srcPS, (HBITMAP)rBitmap.GetHBITMAP()); HPS destPS = ::GpiCreatePS(vHabmain, m_hDc, &vSize, PU_PELS | GPIT_MICRO | GPIA_ASSOC); @@ -695,7 +695,7 @@ bool wxMask::Create( vPoint.x = w; vPoint.y = h; - COLORREF col = ::GpiQueryPel(srcPS, w, h); + COLORREF col = ::GpiQueryPel(srcPS, &vPoint); if (col == vMaskColour) { @@ -742,17 +742,19 @@ bool wxBitmapHandler::Create( bool wxBitmapHandler::Load( wxGDIImage* pImage , const wxString& rName +, HPS hPs , long lFlags , int nWidth , int nHeight ) { - wxBitmap* bitmap = wxDynamicCast( pImage - ,wxBitmap - ); + wxBitmap* pBitmap = wxDynamicCast( pImage + ,wxBitmap + ); return(pBitmap ? LoadFile( pBitmap ,rName + ,hPs ,lFlags ,nWidth ,nHeight @@ -790,12 +792,13 @@ bool wxBitmapHandler::Create( bool wxBitmapHandler::LoadFile( wxBitmap* WXUNUSED(pBitmap) , const wxString& WXUNUSED(rName) +, HPS WXUNUSED(hPs) , long WXUNUSED(lType) , int WXUNUSED(nDesiredWidth) , int WXUNUSED(nDesiredHeight) ) { - return(FALSE(; + return(FALSE); } bool wxBitmapHandler::SaveFile(