Use a local copy of the old wxBufferedDC classes until the ones in the

C++ library are fixed again.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25889 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn 2004-02-21 01:53:46 +00:00
parent d11c3d6484
commit ef22e3d35e
2 changed files with 92 additions and 2 deletions

View File

@ -24,7 +24,6 @@
#include <wx/colordlg.h>
#include <wx/config.h>
#include <wx/cshelp.h>
#include <wx/dcbuffer.h>
#include <wx/dcmirror.h>
#include <wx/dcps.h>
#include <wx/dirctrl.h>

View File

@ -570,6 +570,97 @@ public:
%newgroup
%{
//-=-=-=-=-=-=-=-=-=-=-
#if 0
#include <wx/dcbuffer.h>
#else
// Temporarily put a set of classes here similar to the old buffered DC
// classes until the real ones can be fixed to work "correctly" again.
class wxBufferedDC : public wxMemoryDC
{
private:
wxDC *m_dc;
wxBitmap m_buffer;
public:
wxBufferedDC() : m_dc( 0 ) {}
wxBufferedDC( wxDC *dc, const wxBitmap &buffer )
: m_dc( dc ), m_buffer( buffer )
{
SelectObject( m_buffer );
}
wxBufferedDC( wxDC *dc, const wxSize &area )
: m_dc( dc ), m_buffer( area.GetWidth(), area.GetHeight() )
{
SelectObject( m_buffer );
}
~wxBufferedDC() {
if( m_dc != 0 )
UnMask();
}
void Init( wxDC *dc, const wxBitmap &buffer ) {
wxASSERT_MSG( m_dc == 0 && m_buffer == wxNullBitmap,
_T("wxBufferedDC already initialised") );
m_dc = dc;
m_buffer = buffer;
SelectObject( m_buffer );
}
void Init( wxDC *dc, const wxSize &area ) {
wxASSERT_MSG( m_dc == 0 && m_buffer == wxNullBitmap,
_T("wxBufferedDC already initialised") );
m_dc = dc;
m_buffer = wxBitmap( area.GetWidth(), area.GetHeight() );
SelectObject( m_buffer );
}
void UnMask() {
wxASSERT_MSG( m_dc != 0, _T("No low level DC associated with buffer (anymore)") );
m_dc->Blit( 0, 0, m_buffer.GetWidth(), m_buffer.GetHeight(), this, 0, 0 );
m_dc = 0;
}
};
class wxBufferedPaintDC : public wxBufferedDC
{
private:
wxPaintDC m_paintdc;
public:
wxBufferedPaintDC( wxWindow *window, const wxBitmap &buffer = wxNullBitmap )
: m_paintdc( window )
{
window->PrepareDC( m_paintdc );
if( buffer != wxNullBitmap )
Init( &m_paintdc, buffer );
else
Init( &m_paintdc, window->GetClientSize() );
}
~wxBufferedPaintDC() {
UnMask();
}
};
#endif
//-=-=-=-=-=-=-=-=-=-=-
%}
class wxBufferedDC : public wxMemoryDC
{
public:
@ -614,7 +705,7 @@ class wxBufferedPaintDC : public wxBufferedDC
{
public:
// If no bitmap is supplied by the user, a temporary one wil; be created.
// If no bitmap is supplied by the user, a temporary one will be created.
wxBufferedPaintDC( wxWindow *window, const wxBitmap &buffer = wxNullBitmap );
};