X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/452418c4b0763eb611432e84f077c9766e282057..ec5006bdc630dd6b3d4cad1a3b572ab4c695a029:/src/os2/bitmap.cpp?ds=sidebyside diff --git a/src/os2/bitmap.cpp b/src/os2/bitmap.cpp index c1bbb3e002..068ccb0294 100644 --- a/src/os2/bitmap.cpp +++ b/src/os2/bitmap.cpp @@ -57,6 +57,19 @@ wxBitmapRefData::wxBitmapRefData() m_hBitmap = (WXHBITMAP) NULL; } // end of wxBitmapRefData::wxBitmapRefData +wxBitmapRefData::wxBitmapRefData(const wxBitmapRefData &tocopy) +{ + m_nQuality = tocopy.m_nQuality; + m_pSelectedInto = NULL; // don't copy this + m_nNumColors = tocopy.m_nNumColors; + + // copy the mask + if (tocopy.m_pBitmapMask) + m_pBitmapMask = new wxMask(*tocopy.m_pBitmapMask); + + m_hBitmap = wxCopyBmp(tocopy.m_hBitmap); +} + void wxBitmapRefData::Free() { if ( m_pSelectedInto ) @@ -81,6 +94,16 @@ void wxBitmapRefData::Free() // wxBitmap creation // ---------------------------------------------------------------------------- +wxObjectRefData* wxBitmap::CreateRefData() const +{ + return new wxBitmapRefData; +} + +wxObjectRefData* wxBitmap::CloneRefData(const wxObjectRefData* data) const +{ + return new wxBitmapRefData(*wx_static_cast(const wxBitmapRefData *, data)); +} + // this function should be called from all wxBitmap ctors void wxBitmap::Init() { @@ -1196,6 +1219,11 @@ wxMask::wxMask() m_hMaskBitmap = 0; } // end of wxMask::wxMask +wxMask::wxMask(const wxMask& tocopy) +{ + m_hMaskBitmap = wxCopyBmp(tocopy.m_hMaskBitmap); +} // end of wxMask::wxMask + // Construct a mask from a bitmap and a colour indicating // the transparent area wxMask::wxMask( @@ -1598,9 +1626,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 @@ -1643,7 +1671,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;