From: Robert Roebling Date: Wed, 18 Oct 2006 17:06:11 +0000 (+0000) Subject: [ 1579793 ] numerous bug fixes when mask is used X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/dcc36b34be1e1492894a5be7a027d99d3e74ebd9 [ 1579793 ] numerous bug fixes when mask is used Corrects PNG handling and wxImage::Paste() git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42092 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/common/image.cpp b/src/common/image.cpp index ff8169fff3..a2674529de 100644 --- a/src/common/image.cpp +++ b/src/common/image.cpp @@ -1311,8 +1311,8 @@ void wxImage::Paste( const wxImage &image, int x, int y ) { for (int i = 0; i < width; i+=3) { - if ((source_data[i] != r) && - (source_data[i+1] != g) && + if ((source_data[i] != r) || + (source_data[i+1] != g) || (source_data[i+2] != b)) { memcpy( target_data+i, source_data+i, 3 ); diff --git a/src/common/imagpng.cpp b/src/common/imagpng.cpp index da38225970..009f133de9 100644 --- a/src/common/imagpng.cpp +++ b/src/common/imagpng.cpp @@ -279,6 +279,7 @@ FindMaskColour(unsigned char **lines, png_uint_32 width, png_uint_32 height, r2 = *p++; g2 = *p++; b2 = *p++; + ++p; // jump over alpha wxImageHistogramEntry& entry = h[wxImageHistogram:: MakeKey(r2, g2, b2)]; @@ -384,8 +385,8 @@ void CopyDataFromPNG(wxImage *image, if ( IsTransparent(a) ) { *ptrDst++ = rMask; - *ptrDst++ = bMask; *ptrDst++ = gMask; + *ptrDst++ = bMask; break; } // else: !transparent @@ -452,8 +453,8 @@ void CopyDataFromPNG(wxImage *image, if ( IsTransparent(a) ) { *ptrDst++ = rMask; - *ptrDst++ = bMask; *ptrDst++ = gMask; + *ptrDst++ = bMask; break; } else // !transparent