#ifndef WX_PRECOMP
#include "wx/utils.h"
+ #include "wx/settings.h"
#endif
-#include "wx/settings.h"
-
#include "wx/x11/private.h"
+#include "wx/x11/dcmemory.h"
-IMPLEMENT_DYNAMIC_CLASS(wxMemoryDC,wxWindowDC)
+IMPLEMENT_ABSTRACT_CLASS(wxMemoryDCImpl,wxWindowDCImpl)
-wxMemoryDC::wxMemoryDC() : wxWindowDC()
+wxMemoryDCImpl::wxMemoryDCImpl( wxDC *owner )
+ : wxWindowDCImpl( owner )
{
- m_ok = false;
+ Init();
+}
- m_display = (WXDisplay *) wxGlobalDisplay();
+wxMemoryDCImpl::wxMemoryDCImpl( wxDC *owner, wxBitmap& bitmap )
+ : wxWindowDCImpl( owner )
+{
+ Init();
+ DoSelect(bitmap);
+}
- int screen = DefaultScreen( wxGlobalDisplay() );
- m_cmap = (WXColormap) DefaultColormap( wxGlobalDisplay(), screen );
+wxMemoryDCImpl::wxMemoryDCImpl( wxDC* owner, wxDC *WXUNUSED(dc) )
+ : wxWindowDCImpl( owner )
+{
+ Init();
}
-wxMemoryDC::wxMemoryDC( wxDC *WXUNUSED(dc) )
- : wxWindowDC()
+void wxMemoryDCImpl::Init()
{
m_ok = false;
m_cmap = (WXColormap) DefaultColormap( wxGlobalDisplay(), screen );
}
-wxMemoryDC::~wxMemoryDC()
+wxMemoryDCImpl::~wxMemoryDCImpl()
{
}
-void wxMemoryDC::SelectObject( const wxBitmap& bitmap )
+void wxMemoryDCImpl::DoSelect( const wxBitmap& bitmap )
{
Destroy();
m_selected = bitmap;
- if (m_selected.Ok())
+ if (m_selected.IsOk())
{
if (m_selected.GetPixmap())
{
- m_window = (WXWindow) m_selected.GetPixmap();
+ m_x11window = (WXWindow) m_selected.GetPixmap();
}
else
{
- m_window = m_selected.GetBitmap();
+ m_x11window = m_selected.GetBitmap();
}
m_isMemDC = true;
else
{
m_ok = false;
- m_window = NULL;
+ m_x11window = NULL;
}
}
-void wxMemoryDC::DoGetSize( int *width, int *height ) const
+void wxMemoryDCImpl::DoGetSize( int *width, int *height ) const
{
- if (m_selected.Ok())
+ if (m_selected.IsOk())
{
if (width) (*width) = m_selected.GetWidth();
if (height) (*height) = m_selected.GetHeight();
if (height) (*height) = 0;
}
}
+
+const wxBitmap& wxMemoryDCImpl::GetSelectedBitmap() const
+{
+ return m_selected;
+}
+
+wxBitmap& wxMemoryDCImpl::GetSelectedBitmap()
+{
+ return m_selected;
+}