removed GetBitmapForDC() and supporting functions
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@19724 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
0b2e45b162
commit
f2bb16493d
@ -179,20 +179,6 @@ public:
|
||||
wxDC *GetSelectedInto() const;
|
||||
#endif // __WXDEBUG__
|
||||
|
||||
// Creates a bitmap that matches the device context's depth, from an
|
||||
// arbitray bitmap. At present, the original bitmap must have an associated
|
||||
// palette. (TODO: use a default palette if no palette exists.) This
|
||||
// function is necessary for you to Blit an arbitrary bitmap (which may
|
||||
// have the wrong depth). wxDC::SelectObject will compare the depth of the
|
||||
// bitmap with the DC's depth, and create a new bitmap if the depths
|
||||
// differ. Eventually we should perhaps make this a public API function so
|
||||
// that an app can efficiently produce bitmaps of the correct depth. The
|
||||
// Windows solution is to use SetDibBits to blit an arbotrary DIB directly
|
||||
// to a DC, but this is too Windows-specific, hence this solution of
|
||||
// quietly converting the wxBitmap. Contributed by Frederic Villeneuve
|
||||
// <frederic.villeneuve@natinst.com>
|
||||
wxBitmap GetBitmapForDC(wxDC& dc) const;
|
||||
|
||||
protected:
|
||||
// common part of all ctors
|
||||
void Init();
|
||||
|
@ -191,11 +191,6 @@ inline wxDIB::~wxDIB()
|
||||
// wxFreeDIB), from dib.cpp and from dataobj.cpp - surely there is some
|
||||
// redundancy between them? (FIXME)
|
||||
|
||||
// defined in bitmap.cpp
|
||||
extern bool wxCreateDIB(long xSize, long ySize, long bitsPerPixel,
|
||||
HPALETTE hPal, LPBITMAPINFO* lpDIBHeader);
|
||||
extern void wxFreeDIB(LPBITMAPINFO lpDIBHeader);
|
||||
|
||||
// defined in ole/dataobj.cpp
|
||||
extern WXDLLEXPORT size_t wxConvertBitmapToDIB(LPBITMAPINFO pbi, const wxBitmap& bitmap);
|
||||
extern WXDLLEXPORT wxBitmap wxConvertDIBToBitmap(const LPBITMAPINFO pbi);
|
||||
|
@ -1193,70 +1193,6 @@ bool wxBitmap::GetRawData(wxRawBitmapData *data)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// TODO: to be replaced by something better
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// Creates a bitmap that matches the device context, from
|
||||
// an arbitray bitmap. At present, the original bitmap must have an
|
||||
// associated palette. TODO: use a default palette if no palette exists.
|
||||
// Contributed by Frederic Villeneuve <frederic.villeneuve@natinst.com>
|
||||
wxBitmap wxBitmap::GetBitmapForDC(wxDC& dc) const
|
||||
{
|
||||
#ifdef __WXMICROWIN__
|
||||
return *this;
|
||||
#else
|
||||
wxMemoryDC memDC;
|
||||
wxBitmap tmpBitmap(GetWidth(), GetHeight(), dc.GetDepth());
|
||||
HPALETTE hPal = (HPALETTE) NULL;
|
||||
LPBITMAPINFO lpDib;
|
||||
void *lpBits = (void*) NULL;
|
||||
|
||||
#if wxUSE_PALETTE
|
||||
if( GetPalette() && GetPalette()->Ok() )
|
||||
{
|
||||
tmpBitmap.SetPalette(*GetPalette());
|
||||
memDC.SelectObject(tmpBitmap);
|
||||
memDC.SetPalette(*GetPalette());
|
||||
hPal = (HPALETTE)GetPalette()->GetHPALETTE();
|
||||
}
|
||||
else
|
||||
{
|
||||
hPal = (HPALETTE) ::GetStockObject(DEFAULT_PALETTE);
|
||||
wxPalette palette;
|
||||
palette.SetHPALETTE( (WXHPALETTE)hPal );
|
||||
tmpBitmap.SetPalette( palette );
|
||||
memDC.SelectObject(tmpBitmap);
|
||||
memDC.SetPalette( palette );
|
||||
}
|
||||
#else // !wxUSE_PALETTE
|
||||
hPal = (HPALETTE) ::GetStockObject(DEFAULT_PALETTE);
|
||||
#endif // wxUSE_PALETTE/!wxUSE_PALETTE
|
||||
|
||||
// set the height negative because in a DIB the order of the lines is
|
||||
// reversed
|
||||
if ( !wxCreateDIB(GetWidth(), -GetHeight(), GetDepth(), hPal, &lpDib) )
|
||||
{
|
||||
return wxNullBitmap;
|
||||
}
|
||||
|
||||
lpBits = malloc(lpDib->bmiHeader.biSizeImage);
|
||||
|
||||
::GetBitmapBits(GetHbitmap(), lpDib->bmiHeader.biSizeImage, lpBits);
|
||||
|
||||
::SetDIBitsToDevice(GetHdcOf(memDC), 0, 0,
|
||||
GetWidth(), GetHeight(),
|
||||
0, 0, 0, GetHeight(),
|
||||
lpBits, lpDib, DIB_RGB_COLORS);
|
||||
|
||||
free(lpBits);
|
||||
|
||||
wxFreeDIB(lpDib);
|
||||
|
||||
return tmpBitmap;
|
||||
#endif
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxMask
|
||||
// ----------------------------------------------------------------------------
|
||||
|
Loading…
Reference in New Issue
Block a user