// delete the old one now as we don't need it any more
::DeleteObject(iconInfo.hbmMask);
-#if WXWIN_COMPATIBILITY_2
- refData->m_ok = TRUE;
-#endif // WXWIN_COMPATIBILITY_2
-
return TRUE;
#else
return FALSE;
if ( !cursor.Ok() )
return FALSE;
-#ifdef __WIN16__
- wxFAIL_MSG( _T("don't know how to convert cursor to bitmap") );
-
- return FALSE;
-#else
return CopyFromIconOrCursor(cursor);
-#endif // Win16
}
bool wxBitmap::CopyFromIcon(const wxIcon& icon)
if ( !icon.Ok() )
return FALSE;
- // GetIconInfo() doesn't exist under Win16 and I don't know any other way
- // to create a bitmap from icon there - but using this way we won't have
- // the mask (FIXME)
-#ifdef __WIN16__
- int width = icon.GetWidth(),
- height = icon.GetHeight();
-
- // copy the icon to the bitmap
- ScreenHDC hdcScreen;
- HDC hdc = ::CreateCompatibleDC(hdcScreen);
- HBITMAP hbitmap = ::CreateCompatibleBitmap(hdcScreen, width, height);
- HBITMAP hbmpOld = (HBITMAP)::SelectObject(hdc, hbitmap);
-
- ::DrawIcon(hdc, 0, 0, GetHiconOf(icon));
-
- ::SelectObject(hdc, hbmpOld);
- ::DeleteDC(hdc);
-
- wxBitmapRefData *refData = new wxBitmapRefData;
- m_refData = refData;
-
- refData->m_width = width;
- refData->m_height = height;
- refData->m_depth = wxDisplayDepth();
-
- refData->m_hBitmap = (WXHBITMAP)hbitmap;
-
-#if WXWIN_COMPATIBILITY_2
- refData->m_ok = TRUE;
-#endif // WXWIN_COMPATIBILITY_2
-
- return TRUE;
-#else // Win32
return CopyFromIconOrCursor(icon);
-#endif // Win16/Win32
}
#if wxUSE_WXDIB
}
// Create from XPM data
+#if wxUSE_IMAGE && wxUSE_XPM
bool wxBitmap::CreateFromXpm(const char **data)
+#else
+bool wxBitmap::CreateFromXpm(const char **WXUNUSED(data))
+#endif
{
#if wxUSE_IMAGE && wxUSE_XPM
Init();
else // create a DDB
#endif
{
- if ( d == -1 )
- d = wxDisplayDepth();
-
- GetBitmapData()->m_depth = d;
#ifndef __WXMICROWIN__
if ( d > 0 )
SetHBITMAP((WXHBITMAP)hbmp);
-#if WXWIN_COMPATIBILITY_2
- GetBitmapData()->m_ok = hbmp != 0;
-#endif // WXWIN_COMPATIBILITY_2
-
return Ok();
}
SetPalette(image.GetPalette());
#endif // wxUSE_PALETTE
-#if WXWIN_COMPATIBILITY_2
- // check the wxBitmap object
- GetBitmapData()->SetOk();
-#endif // WXWIN_COMPATIBILITY_2
-
return TRUE;
}
// validate this object
SetHBITMAP((WXHBITMAP)hbitmap);
-#if WXWIN_COMPATIBILITY_2
- m_refData->m_ok = TRUE;
-#endif // WXWIN_COMPATIBILITY_2
-
// finally also set the mask if we have one
if ( image.HasMask() )
{
GetBitmapData()->SetMask(mask);
}
-#if WXWIN_COMPATIBILITY_2
-
-void wxBitmap::SetOk(bool isOk)
-{
- EnsureHasData();
-
- GetBitmapData()->m_ok = isOk;
-}
-
-#endif // WXWIN_COMPATIBILITY_2
-
#if WXWIN_COMPATIBILITY_2_4
void wxBitmap::SetQuality(int WXUNUSED(quality))
p = rowStart;
p.OffsetY(data, 1);
}
+ }
- // if we're a DDB we need to convert DIB back to DDB now to make the
- // changes made via raw bitmap access effective
- if ( !GetBitmapData()->m_isDIB )
- {
- wxDIB *dib = GetBitmapData()->m_dib;
- GetBitmapData()->m_dib = NULL;
+ // if we're a DDB we need to convert DIB back to DDB now to make the
+ // changes made via raw bitmap access effective
+ if ( !GetBitmapData()->m_isDIB )
+ {
+ wxDIB *dib = GetBitmapData()->m_dib;
+ GetBitmapData()->m_dib = NULL;
- // TODO: convert
+ // TODO: convert
- delete dib;
- }
+ delete dib;
}
-#endif
+#endif // wxUSE_WXDIB
}
#endif // #ifdef wxHAVE_RAW_BITMAP
HPALETTE hPal, LPBITMAPINFO* lpDIBHeader)
{
unsigned long i, headerSize;
- LPBITMAPINFO lpDIBheader = NULL;
- LPPALETTEENTRY lpPe = NULL;
-
// Allocate space for a DIB header
headerSize = (sizeof(BITMAPINFOHEADER) + (256 * sizeof(PALETTEENTRY)));
- lpDIBheader = (BITMAPINFO *) malloc(headerSize);
- lpPe = (PALETTEENTRY *)((BYTE*)lpDIBheader + sizeof(BITMAPINFOHEADER));
+ LPBITMAPINFO lpDIBheader = (BITMAPINFO *) malloc(headerSize);
+ LPPALETTEENTRY lpPe = (PALETTEENTRY *)((BYTE*)lpDIBheader + sizeof(BITMAPINFOHEADER));
GetPaletteEntries(hPal, 0, 256, lpPe);
wxLogLastError(wxT("CreateBitmap"));
}
- ::SelectObject(hdcSrc, hbmpMask);
- ::SelectObject(hdcDst, hbmpInvMask);
+ HGDIOBJ srcTmp = ::SelectObject(hdcSrc, hbmpMask);
+ HGDIOBJ dstTmp = ::SelectObject(hdcDst, hbmpInvMask);
if ( !::BitBlt(hdcDst, 0, 0, w, h,
hdcSrc, 0, 0,
NOTSRCCOPY) )
wxLogLastError(wxT("BitBlt"));
}
+ // Deselect objects
+ SelectObject(hdcSrc,srcTmp);
+ SelectObject(hdcDst,dstTmp);
+
::DeleteDC(hdcSrc);
::DeleteDC(hdcDst);