added wxDIB(HBITMAP) ctor and corresponding Create(); made GetData() return uchar * and not void *

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28390 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2004-07-22 11:43:57 +00:00
parent 0ca3b64f14
commit dd779a9e66
2 changed files with 29 additions and 10 deletions

View File

@@ -151,10 +151,18 @@ bool wxDIB::Create(const wxBitmap& bmp)
{
wxCHECK_MSG( bmp.Ok(), false, _T("wxDIB::Create(): invalid bitmap") );
if ( !Create(GetHbitmapOf(bmp)) )
return false;
m_hasAlpha = bmp.HasAlpha();
return true;
}
bool wxDIB::Create(HBITMAP hbmp)
{
// this bitmap could already be a DIB section in which case we don't need
// to convert it to DIB
HBITMAP hbmp = GetHbitmapOf(bmp);
DIBSECTION ds;
if ( GetDIBSection(hbmp, &ds) )
{
@@ -172,18 +180,23 @@ bool wxDIB::Create(const wxBitmap& bmp)
}
else // no, it's a DDB -- convert it to DIB
{
const int w = bmp.GetWidth();
const int h = bmp.GetHeight();
int d = bmp.GetDepth();
// prepare all the info we need
BITMAP bm;
if ( !::GetObject(hbmp, sizeof(bm), &bm) )
{
wxLogLastError(wxT("GetObject(bitmap)"));
return false;
}
int d = bm.bmBitsPixel;
if ( d <= 0 )
d = wxDisplayDepth();
if ( !Create(w, h, d) || !CopyFromDDB(hbmp) )
if ( !Create(bm.bmWidth, bm.bmHeight, d) || !CopyFromDDB(hbmp) )
return false;
}
m_hasAlpha = bmp.HasAlpha();
return true;
}