X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/cd7ff8087b7c08f0cbece41a5a23d114d2c69eb6..18caa1e963269d02499b327bb4e7cc2ac48fd67e:/src/os2/bitmap.cpp diff --git a/src/os2/bitmap.cpp b/src/os2/bitmap.cpp index 899777b119..a565c74f17 100644 --- a/src/os2/bitmap.cpp +++ b/src/os2/bitmap.cpp @@ -27,6 +27,7 @@ #include "wx/image.h" #endif +#include "wx/os2/dc.h" #include "wx/os2/private.h" #include "wx/xpmdecod.h" @@ -67,8 +68,7 @@ wxBitmapRefData::wxBitmapRefData(const wxBitmapRefData &tocopy) if (tocopy.m_pBitmapMask) m_pBitmapMask = new wxMask(*tocopy.m_pBitmapMask); - // TODO: how to copy an HBITMAP? - m_hBitmap = tocopy.m_hBitmap; + m_hBitmap = wxCopyBmp(tocopy.m_hBitmap); } void wxBitmapRefData::Free() @@ -95,12 +95,7 @@ void wxBitmapRefData::Free() // wxBitmap creation // ---------------------------------------------------------------------------- -wxObjectRefData* wxBitmap::CreateRefData() const -{ - return new wxBitmapRefData; -} - -wxObjectRefData* wxBitmap::CloneRefData(const wxObjectRefData* data) const +wxGDIRefData* wxBitmap::CloneGDIRefData(const wxGDIRefData* data) const { return new wxBitmapRefData(*wx_static_cast(const wxBitmapRefData *, data)); } @@ -934,9 +929,12 @@ wxImage wxBitmap::ConvertToImage() const // // May already be selected into a PS // - if ((pDC = GetSelectedInto()) != NULL) + pDC = GetSelectedInto(); + const wxPMDCImpl *impl; + if (pDC != NULL && + (impl = wxDynamicCast( pDC->GetImpl(), wxPMDCImpl )) != NULL) { - hPSMem = pDC->GetHPS(); + hPSMem = impl->GetHPS(); } else { @@ -1222,8 +1220,7 @@ wxMask::wxMask() wxMask::wxMask(const wxMask& tocopy) { - // TODO: how to copy a WXHBITMAP? - m_hMaskBitmap = tocopy.m_hMaskBitmap; + m_hMaskBitmap = wxCopyBmp(tocopy.m_hMaskBitmap); } // end of wxMask::wxMask // Construct a mask from a bitmap and a colour indicating @@ -1628,9 +1625,9 @@ HBITMAP wxInvertMask( return hBmpInvMask; } // end of WxWinGdi_InvertMask -HBITMAP wxFlipBmp( HBITMAP hBmp, int nWidth, int nHeight ) +HBITMAP wxCopyBmp( HBITMAP hBmp, bool flip, int nWidth, int nHeight ) { - wxCHECK_MSG( hBmp, 0, _T("invalid bitmap in wxFlipBmp") ); + wxCHECK_MSG( hBmp, 0, _T("invalid bitmap in wxCopyBmp") ); // // Get width/height from the bitmap if not given @@ -1673,7 +1670,11 @@ HBITMAP wxFlipBmp( HBITMAP hBmp, int nWidth, int nHeight ) {nWidth, 0}, {0, 0}, {nWidth, nHeight} }; - + if (!flip) + { + vPoint[0].y = 0; + vPoint[1].y = nHeight; + } memset(&vBmih, '\0', 16); vBmih.cbFix = 16; vBmih.cx = nWidth;