[ 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:
@@ -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 );
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user