From 8403b79ad71693cbff3e8c5005fee33cafb48eff Mon Sep 17 00:00:00 2001 From: Artur Wieczorek Date: Thu, 29 Aug 2019 20:00:03 +0200 Subject: [PATCH] Fix colours of mask bitmap Monochrome mask bitmap should have white pixels in the unmasked area and black pixels in the masked area, quite the opposite to what is implemented now. Closes #10098. --- src/osx/core/bitmap.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/osx/core/bitmap.cpp b/src/osx/core/bitmap.cpp index 88e327a64b..e26efbe973 100644 --- a/src/osx/core/bitmap.cpp +++ b/src/osx/core/bitmap.cpp @@ -1621,10 +1621,9 @@ bool wxMask::InitFromMonoBitmap(const wxBitmap& bitmap) unsigned char *destdata = destdatabase ; for ( int x = 0 ; x < m_width ; ++x, ++p ) { - if ( ( p.Red() + p.Green() + p.Blue() ) > 0x10 ) - *destdata++ = 0xFF ; - else - *destdata++ = 0x00 ; + int v = p.Red() + p.Green() + p.Blue(); + wxASSERT_MSG( v == 0 || v == 3*0xFF, "Non-monochrome bitmap supplied" ); + *destdata++ = v < (3 * 0xFF) / 2 ? 0xFF : 0; } p = rowStart; p.OffsetY(data, 1); @@ -1698,7 +1697,7 @@ wxBitmap wxMask::GetBitmap() const { const unsigned char byte = *src; wxASSERT( byte == 0 || byte == 0xFF ); - p.Red() = p.Green() = p.Blue() = byte; + p.Red() = p.Green() = p.Blue() = ~byte; } p = rowStart; p.OffsetY(data, 1);