[ 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
This commit is contained in:
Robert Roebling
2006-10-18 17:06:11 +00:00
parent 17b5a3eccb
commit dcc36b34be
2 changed files with 5 additions and 4 deletions

View File

@@ -1311,8 +1311,8 @@ void wxImage::Paste( const wxImage &image, int x, int y )
{ {
for (int i = 0; i < width; i+=3) for (int i = 0; i < width; i+=3)
{ {
if ((source_data[i] != r) && if ((source_data[i] != r) ||
(source_data[i+1] != g) && (source_data[i+1] != g) ||
(source_data[i+2] != b)) (source_data[i+2] != b))
{ {
memcpy( target_data+i, source_data+i, 3 ); memcpy( target_data+i, source_data+i, 3 );

View File

@@ -279,6 +279,7 @@ FindMaskColour(unsigned char **lines, png_uint_32 width, png_uint_32 height,
r2 = *p++; r2 = *p++;
g2 = *p++; g2 = *p++;
b2 = *p++; b2 = *p++;
++p; // jump over alpha
wxImageHistogramEntry& wxImageHistogramEntry&
entry = h[wxImageHistogram:: MakeKey(r2, g2, b2)]; entry = h[wxImageHistogram:: MakeKey(r2, g2, b2)];
@@ -384,8 +385,8 @@ void CopyDataFromPNG(wxImage *image,
if ( IsTransparent(a) ) if ( IsTransparent(a) )
{ {
*ptrDst++ = rMask; *ptrDst++ = rMask;
*ptrDst++ = bMask;
*ptrDst++ = gMask; *ptrDst++ = gMask;
*ptrDst++ = bMask;
break; break;
} }
// else: !transparent // else: !transparent
@@ -452,8 +453,8 @@ void CopyDataFromPNG(wxImage *image,
if ( IsTransparent(a) ) if ( IsTransparent(a) )
{ {
*ptrDst++ = rMask; *ptrDst++ = rMask;
*ptrDst++ = bMask;
*ptrDst++ = gMask; *ptrDst++ = gMask;
*ptrDst++ = bMask;
break; break;
} }
else // !transparent else // !transparent