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:
@@ -179,20 +179,6 @@ public:
|
|||||||
wxDC *GetSelectedInto() const;
|
wxDC *GetSelectedInto() const;
|
||||||
#endif // __WXDEBUG__
|
#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:
|
protected:
|
||||||
// common part of all ctors
|
// common part of all ctors
|
||||||
void Init();
|
void Init();
|
||||||
|
@@ -191,11 +191,6 @@ inline wxDIB::~wxDIB()
|
|||||||
// wxFreeDIB), from dib.cpp and from dataobj.cpp - surely there is some
|
// wxFreeDIB), from dib.cpp and from dataobj.cpp - surely there is some
|
||||||
// redundancy between them? (FIXME)
|
// 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
|
// defined in ole/dataobj.cpp
|
||||||
extern WXDLLEXPORT size_t wxConvertBitmapToDIB(LPBITMAPINFO pbi, const wxBitmap& bitmap);
|
extern WXDLLEXPORT size_t wxConvertBitmapToDIB(LPBITMAPINFO pbi, const wxBitmap& bitmap);
|
||||||
extern WXDLLEXPORT wxBitmap wxConvertDIBToBitmap(const LPBITMAPINFO pbi);
|
extern WXDLLEXPORT wxBitmap wxConvertDIBToBitmap(const LPBITMAPINFO pbi);
|
||||||
|
@@ -1193,70 +1193,6 @@ bool wxBitmap::GetRawData(wxRawBitmapData *data)
|
|||||||
return TRUE;
|
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
|
// wxMask
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
Reference in New Issue
Block a user