/////////////////////////////////////////////////////////////////////////////
// Name: wx/dfb/dcclient.h
-// Purpose: wxWindowDC, wxClientDC and wxPaintDC
+// Purpose: wxWindowDCImpl, wxClientDCImpl and wxPaintDCImpl
// Author: Vaclav Slavik
// Created: 2006-08-10
// RCS-ID: $Id$
#ifndef _WX_DFB_DCCLIENT_H_
#define _WX_DFB_DCCLIENT_H_
-#include "wx/dc.h"
+#include "wx/dfb/dc.h"
-class WXDLLIMPEXP_CORE wxWindow;
+class WXDLLIMPEXP_FWD_CORE wxWindow;
//-----------------------------------------------------------------------------
-// wxWindowDC
+// wxWindowDCImpl
//-----------------------------------------------------------------------------
-class WXDLLIMPEXP_CORE wxWindowDC : public wxDC
+class WXDLLIMPEXP_CORE wxWindowDCImpl : public wxDFBDCImpl
{
public:
- wxWindowDC() {}
- wxWindowDC(wxWindow *win);
+ wxWindowDCImpl(wxDC *owner) : wxDFBDCImpl(owner), m_shouldFlip(false) { }
+ wxWindowDCImpl(wxDC *owner, wxWindow *win);
+ virtual ~wxWindowDCImpl();
+
+ virtual wxWindow *GetWindow() const { return m_win; }
protected:
- void InitForWin(wxWindow *win);
+ // initializes the DC for painting on given window; if rect!=NULL, then
+ // for painting only on the given region of the window
+ void InitForWin(wxWindow *win, const wxRect *rect);
- DECLARE_DYNAMIC_CLASS(wxWindowDC)
- DECLARE_NO_COPY_CLASS(wxWindowDC)
-};
+private:
+ wxWindow *m_win;
+ wxRect m_winRect; // rectangle of the window being painted
-//-----------------------------------------------------------------------------
-// base class for wxClientDC and wxPaintDC
-//-----------------------------------------------------------------------------
+ bool m_shouldFlip; // flip the surface when done?
-class WXDLLIMPEXP_CORE wxClientDCBase : public wxWindowDC
-{
-public:
- wxClientDCBase() {}
- wxClientDCBase(wxWindow *win);
+ friend class wxOverlayImpl; // for m_shouldFlip;
+
+ DECLARE_DYNAMIC_CLASS(wxWindowDCImpl)
+ DECLARE_NO_COPY_CLASS(wxWindowDCImpl)
};
//-----------------------------------------------------------------------------
-// wxClientDC
+// wxClientDCImpl
//-----------------------------------------------------------------------------
-class WXDLLIMPEXP_CORE wxClientDC : public wxClientDCBase
+class WXDLLIMPEXP_CORE wxClientDCImpl : public wxWindowDCImpl
{
public:
- wxClientDC() {}
- wxClientDC(wxWindow *win) : wxClientDCBase(win) {}
- ~wxClientDC();
+ wxClientDCImpl(wxDC *owner) : wxWindowDCImpl(owner) { }
+ wxClientDCImpl(wxDC *owner, wxWindow *win);
- DECLARE_DYNAMIC_CLASS(wxClientDC)
- DECLARE_NO_COPY_CLASS(wxClientDC)
+ DECLARE_DYNAMIC_CLASS(wxClientDCImpl)
+ DECLARE_NO_COPY_CLASS(wxClientDCImpl)
};
//-----------------------------------------------------------------------------
-// wxPaintDC
+// wxPaintDCImpl
//-----------------------------------------------------------------------------
-class WXDLLIMPEXP_CORE wxPaintDC : public wxClientDCBase
+class WXDLLIMPEXP_CORE wxPaintDCImpl : public wxClientDCImpl
{
public:
- wxPaintDC() {}
- wxPaintDC(wxWindow *win) : wxClientDCBase(win) {}
- ~wxPaintDC();
+ wxPaintDCImpl(wxDC *owner) : wxClientDCImpl(owner) { }
+ wxPaintDCImpl(wxDC *owner, wxWindow *win) : wxClientDCImpl(owner, win) { }
- DECLARE_DYNAMIC_CLASS(wxPaintDC)
- DECLARE_NO_COPY_CLASS(wxPaintDC)
+ DECLARE_DYNAMIC_CLASS(wxPaintDCImpl)
+ DECLARE_NO_COPY_CLASS(wxPaintDCImpl)
};
#endif // _WX_DFB_DCCLIENT_H_