Remove wxDIB::m_hasAlpha from wxMSW.

This field can't be set reliably as we don't know if LoadImage() Windows
function loaded an 0RGB or an RGB bitmap so remove it completely to avoid the
risk of using it wrongly.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65899 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2010-10-24 22:40:27 +00:00
parent 254f9b4c3c
commit 20af6fd5d3
2 changed files with 5 additions and 15 deletions

View File

@@ -200,11 +200,6 @@ private:
// the case
bool m_ownsHandle;
// if true, we have alpha, if false we don't (note that we can still have
// m_depth == 32 but the last component is then simply padding and not
// alpha)
bool m_hasAlpha;
// DIBs can't be copied
wxDIB(const wxDIB&);
@@ -220,7 +215,6 @@ void wxDIB::Init()
{
m_handle = 0;
m_ownsHandle = true;
m_hasAlpha = false;
m_data = NULL;

View File

@@ -144,8 +144,6 @@ bool wxDIB::Create(const wxBitmap& bmp)
if ( !Create(GetHbitmapOf(bmp)) )
return false;
m_hasAlpha = bmp.HasAlpha();
return true;
}
@@ -677,8 +675,8 @@ bool wxDIB::Create(const wxImage& image)
// if we have alpha channel, we need to create a 32bpp RGBA DIB, otherwise
// a 24bpp RGB is sufficient
m_hasAlpha = image.HasAlpha();
const int bpp = m_hasAlpha ? 32 : 24;
const bool hasAlpha = image.HasAlpha();
const int bpp = hasAlpha ? 32 : 24;
if ( !Create(w, h, bpp) )
return false;
@@ -688,8 +686,8 @@ bool wxDIB::Create(const wxImage& image)
const int srcBytesPerLine = w * 3;
const int dstBytesPerLine = GetLineSize(w, bpp);
const unsigned char *src = image.GetData() + ((h - 1) * srcBytesPerLine);
const unsigned char *alpha = m_hasAlpha ? image.GetAlpha() + (h - 1)*w
: NULL;
const unsigned char *alpha = hasAlpha ? image.GetAlpha() + (h - 1)*w
: NULL;
unsigned char *dstLineStart = (unsigned char *)m_data;
for ( int y = 0; y < h; y++ )
{
@@ -754,9 +752,7 @@ wxImage wxDIB::ConvertToImage() const
{
// 32 bit bitmaps may be either 0RGB or ARGB and we don't know in
// advance which one do we have so suppose we have alpha of them and
// get rid of it later if it turns out we didn't (in particular, don't
// trust m_hasAlpha which is not set correctly when the image was
// loaded from file).
// get rid of it later if it turns out we didn't.
image.SetAlpha();
}