X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4f74e0d132e73250ef422c06175dcf7e4146ec57..d2af7584c06c501864ae0976535a7f99e91d8fd5:/src/mac/carbon/bitmap.cpp diff --git a/src/mac/carbon/bitmap.cpp b/src/mac/carbon/bitmap.cpp index 42031fe4ab..1b4dca41c7 100644 --- a/src/mac/carbon/bitmap.cpp +++ b/src/mac/carbon/bitmap.cpp @@ -153,6 +153,28 @@ void wxBitmapRefData::Init() m_hasAlpha = false; } +wxBitmapRefData::wxBitmapRefData(const wxBitmapRefData &tocopy) +{ + Init(); + Create(tocopy.m_width, tocopy.m_height, tocopy.m_depth); + + if (tocopy.m_bitmapMask) + m_bitmapMask = new wxMask(*tocopy.m_bitmapMask); + + unsigned char* dest = (unsigned char*)GetRawAccess(); + unsigned char* source = (unsigned char*)tocopy.GetRawAccess(); + size_t numbytes = tocopy.m_width * tocopy.m_height * 4; + + for (size_t i=0; iSetWidth(w); } void wxBitmap::SetHeight(int h) { - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - + AllocExclusive(); M_BITMAPDATA->SetHeight(h); } void wxBitmap::SetDepth(int d) { - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - + AllocExclusive(); M_BITMAPDATA->SetDepth(d); } void wxBitmap::SetOk(bool isOk) { - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - + AllocExclusive(); M_BITMAPDATA->SetOk(isOk); } @@ -1321,18 +1345,14 @@ wxPalette *wxBitmap::GetPalette() const void wxBitmap::SetPalette(const wxPalette& palette) { - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - + AllocExclusive(); M_BITMAPDATA->m_bitmapPalette = palette ; } #endif // wxUSE_PALETTE void wxBitmap::SetMask(wxMask *mask) { - if (!M_BITMAPDATA) - m_refData = new wxBitmapRefData; - + AllocExclusive(); // Remove existing mask if there is one. delete M_BITMAPDATA->m_bitmapMask; @@ -1353,6 +1373,26 @@ wxMask::wxMask() Init() ; } +wxMask::wxMask(const wxMask &tocopy) +{ + Init(); + + m_bytesPerRow = tocopy.m_bytesPerRow; + m_width = tocopy.m_width; + m_height = tocopy.m_height; + + size_t size = m_bytesPerRow * m_height; + unsigned char* dest = (unsigned char*)m_memBuf.GetWriteBuf( size ); + unsigned char* source = (unsigned char*)tocopy.m_memBuf.GetData(); + for (size_t i=0; i