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