//result lines
- dst_data[0] = r1 * dy1 + r2 * dy;
- dst_data[1] = g1 * dy1 + g2 * dy;
- dst_data[2] = b1 * dy1 + b2 * dy;
+ dst_data[0] = static_cast<unsigned char>(r1 * dy1 + r2 * dy);
+ dst_data[1] = static_cast<unsigned char>(g1 * dy1 + g2 * dy);
+ dst_data[2] = static_cast<unsigned char>(b1 * dy1 + b2 * dy);
dst_data += 3;
if ( src_alpha )
- *dst_alpha++ = a1 * dy1 + a2 * dy;
+ *dst_alpha++ = static_cast<unsigned char>(a1 * dy1 + a2 * dy);
}
}
}
}
+void wxImage::ClearAlpha()
+{
+ wxCHECK_RET( HasAlpha(), wxT("image already doesn't have an alpha channel") );
+
+ if ( !M_IMGDATA->m_staticAlpha )
+ free( M_IMGDATA->m_alpha );
+
+ M_IMGDATA->m_alpha = NULL;
+}
+
+
// ----------------------------------------------------------------------------
// mask support
// ----------------------------------------------------------------------------
bool wxImage::ConvertAlphaToMask(unsigned char threshold)
{
if ( !HasAlpha() )
- return true;
+ return false;
unsigned char mr, mg, mb;
if ( !FindFirstUnusedColour(&mr, &mg, &mb) )
return false;
}
- ConvertAlphaToMask(mr, mg, mb, threshold);
- return true;
+ return ConvertAlphaToMask(mr, mg, mb, threshold);
}
-void wxImage::ConvertAlphaToMask(unsigned char mr,
+bool wxImage::ConvertAlphaToMask(unsigned char mr,
unsigned char mg,
unsigned char mb,
unsigned char threshold)
{
if ( !HasAlpha() )
- return;
+ return false;
AllocExclusive();
M_IMGDATA->m_alpha = NULL;
M_IMGDATA->m_staticAlpha = false;
+
+ return true;
}
// ----------------------------------------------------------------------------
if ( !handler )
{
- wxLogWarning(_("No image handler for type %ld defined."), type);
+ wxLogWarning(_("No image handler for type %d defined."), type);
return false;
}
}
else
{
- wxLogError(_("Image file is not of type %ld."), type);
+ wxLogError(_("Image file is not of type %d."), type);
return 0;
}
}
if ( !handler.LoadFile(this, stream, true/*verbose*/, index) )
return false;
- M_IMGDATA->m_type = handler.GetType();
-
// rescale the image to the specified size if needed
if ( maxWidth || maxHeight )
{
Rescale(width, height, wxIMAGE_QUALITY_HIGH);
}
+ // Set this after Rescale, which currently does not preserve it
+ M_IMGDATA->m_type = handler.GetType();
+
return true;
}
handler = FindHandler(type);
if ( !handler )
{
- wxLogWarning( _("No image handler for type %ld defined."), type );
+ wxLogWarning( _("No image handler for type %d defined."), type );
return false;
}
if ( stream.IsSeekable() && !handler->CanRead(stream) )
{
- wxLogError(_("Image file is not of type %ld."), type);
+ wxLogError(_("Image file is not of type %d."), type);
return false;
}