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;
 | 
			
		||||
#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
 | 
			
		||||
// ----------------------------------------------------------------------------
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user