X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/04ab8b6ddfa26fbabeadad36966a21a42fe649b1..5e9b921dc6b84d9d4beb1a5bbd2380910073c7ae:/include/wx/msw/dc.h diff --git a/include/wx/msw/dc.h b/include/wx/msw/dc.h index 7f2abb4bf6..9933e88db0 100644 --- a/include/wx/msw/dc.h +++ b/include/wx/msw/dc.h @@ -13,6 +13,7 @@ #define _WX_MSW_DC_H_ #include "wx/defs.h" +#include "wx/dc.h" // --------------------------------------------------------------------------- // macros @@ -42,11 +43,11 @@ public: // this is an ABC: use one of the derived classes to create a DC associated // with a window, screen, printer and so on -class WXDLLEXPORT wxDC : public wxDCBase +class WXDLLEXPORT wxMSWDCImpl: public wxDCImpl { public: - wxDC(WXHDC hDC) { Init(); m_hDC = hDC; } - virtual ~wxDC(); + wxMSWDCImpl(wxDC *owner, WXHDC hDC); + virtual ~wxMSWDCImpl(); // implement base class pure virtuals // ---------------------------------- @@ -85,7 +86,7 @@ public: virtual void SetLogicalOrigin(wxCoord x, wxCoord y); virtual void SetDeviceOrigin(wxCoord x, wxCoord y); virtual void SetAxisOrientation(bool xLeftRight, bool yBottomUp); - + virtual void SetLogicalFunction(int function); // implementation from now on @@ -94,10 +95,9 @@ public: virtual void SetRop(WXHDC cdc); virtual void SelectOldObjects(WXHDC dc); - wxWindow *GetWindow() const { return m_canvas; } void SetWindow(wxWindow *win) { - m_canvas = win; + m_window = win; #if wxUSE_PALETTE // if we have palettes use the correct one for this window @@ -145,7 +145,6 @@ public: protected: void Init() { - m_canvas = NULL; m_bOwnsDC = false; m_hDC = NULL; @@ -161,7 +160,7 @@ protected: // create an uninitialized DC: this should be only used by the derived // classes - wxDC() { Init(); } + wxMSWDCImpl( wxDC *owner ) : wxDCImpl( owner ) { Init(); } void RealizeScaleAndOrigin(); @@ -200,7 +199,7 @@ protected: virtual void DoDrawEllipse(wxCoord x, wxCoord y, wxCoord width, wxCoord height); #if wxUSE_SPLINES - virtual void DoDrawSpline(wxList *points); + virtual void DoDrawSpline(const wxPointList *points); #endif virtual void DoCrossHair(wxCoord x, wxCoord y); @@ -243,8 +242,11 @@ protected: virtual void DoDrawPolyPolygon(int n, int count[], wxPoint points[], wxCoord xoffset, wxCoord yoffset, int fillStyle = wxODDEVEN_RULE); - virtual wxBitmap DoGetAsBitmap(const wxRect *subrect) const - { return subrect == NULL ? GetSelectedBitmap() : GetSelectedBitmap().GetSubBitmap(*subrect); } + virtual wxBitmap DoGetAsBitmap(const wxRect *subrect) const + { + return subrect == NULL ? GetSelectedBitmap() + : GetSelectedBitmap().GetSubBitmap(*subrect); + } #if wxUSE_PALETTE @@ -302,12 +304,12 @@ protected: #endif // wxUSE_PALETTE #if wxUSE_DC_CACHEING - static wxList sm_bitmapCache; - static wxList sm_dcCache; + static wxObjectList sm_bitmapCache; + static wxObjectList sm_dcCache; #endif - DECLARE_DYNAMIC_CLASS(wxDC) - DECLARE_NO_COPY_CLASS(wxDC) + DECLARE_CLASS(wxMSWDCImpl) + DECLARE_NO_COPY_CLASS(wxMSWDCImpl) }; // ---------------------------------------------------------------------------- @@ -315,18 +317,18 @@ protected: // only/mainly) // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxDCTemp : public wxDC +class WXDLLEXPORT wxDCTempImpl : public wxMSWDCImpl { public: // construct a temporary DC with the specified HDC and size (it should be // specified whenever we know it for this HDC) - wxDCTemp(WXHDC hdc, const wxSize& size = wxDefaultSize) - : wxDC(hdc), + wxDCTempImpl(wxDC *owner, WXHDC hdc, const wxSize& size ) + : wxMSWDCImpl( owner, hdc ), m_size(size) { } - virtual ~wxDCTemp() + virtual ~wxDCTempImpl() { // prevent base class dtor from freeing it SetHDC((WXHDC)NULL); @@ -349,7 +351,16 @@ private: // find it ourselves const wxSize m_size; - DECLARE_NO_COPY_CLASS(wxDCTemp) + DECLARE_NO_COPY_CLASS(wxDCTempImpl) +}; + +class WXDLLEXPORT wxDCTemp : public wxDC +{ +public: + wxDCTemp(WXHDC hdc, const wxSize& size = wxDefaultSize) + : wxDC(new wxDCTempImpl(this, hdc, size)) + { + } }; #endif // _WX_MSW_DC_H_