X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/213ad8e72cb6e838d15bf54145d661b081dca308..e3141a349e438c71338085ea2e713e716ca2c613:/include/wx/dc.h diff --git a/include/wx/dc.h b/include/wx/dc.h index e7683753d5..668140b758 100644 --- a/include/wx/dc.h +++ b/include/wx/dc.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: dc.h +// Name: wx/dc.h // Purpose: wxDC class // Author: Vadim Zeitlin // Modified by: @@ -93,8 +93,6 @@ protected: // global variables // --------------------------------------------------------------------------- -extern WXDLLEXPORT_DATA(int) wxPageNumber; - // --------------------------------------------------------------------------- // wxDC is the device context - object on which any drawing is done // --------------------------------------------------------------------------- @@ -161,20 +159,20 @@ public: // fill the area specified by rect with a radial gradient, starting from // initialColour in the centre of the cercle and fading to destColour. void GradientFillConcentric(const wxRect& rect, - const wxColour& initialColour, + const wxColour& initialColour, const wxColour& destColour) { GradientFillConcentric(rect, initialColour, destColour, wxPoint(rect.GetWidth() / 2, rect.GetHeight() / 2)); } void GradientFillConcentric(const wxRect& rect, - const wxColour& initialColour, + const wxColour& initialColour, const wxColour& destColour, const wxPoint& circleCenter); // fill the area specified by rect with a linear gradient void GradientFillLinear(const wxRect& rect, - const wxColour& initialColour, + const wxColour& initialColour, const wxColour& destColour, wxDirection nDirection = wxEAST) { DoGradientFillLinear(rect, initialColour, destColour, nDirection); } @@ -650,17 +648,6 @@ public: if (h) *h = hh; } - // Reserved for future use - virtual void ReservedDCFunc1() {} - virtual void ReservedDCFunc2() {} - virtual void ReservedDCFunc3() {} - virtual void ReservedDCFunc4() {} - virtual void ReservedDCFunc5() {} - virtual void ReservedDCFunc6() {} - virtual void ReservedDCFunc7() {} - virtual void ReservedDCFunc8() {} - virtual void ReservedDCFunc9() {} - protected: // the pure virtual functions which should be implemented by wxDC virtual bool DoFloodFill(wxCoord x, wxCoord y, const wxColour& col, @@ -670,7 +657,7 @@ protected: const wxColour& initialColour, const wxColour& destColour, wxDirection nDirection = wxEAST); - + virtual bool DoGetPixel(wxCoord x, wxCoord y, wxColour *col) const = 0; virtual void DoDrawPoint(wxCoord x, wxCoord y) = 0; @@ -840,6 +827,8 @@ private: #include "wx/x11/dc.h" #elif defined(__WXMGL__) #include "wx/mgl/dc.h" +#elif defined(__WXDFB__) + #include "wx/dfb/dc.h" #elif defined(__WXMAC__) #include "wx/mac/dc.h" #elif defined(__WXCOCOA__) @@ -879,6 +868,60 @@ private: DECLARE_NO_COPY_CLASS(wxDCTextColourChanger) }; +// ---------------------------------------------------------------------------- +// helper class: you can use it to temporarily change the DC pen and +// restore it automatically when the object goes out of scope +// ---------------------------------------------------------------------------- + +class WXDLLEXPORT wxDCPenChanger +{ +public: + wxDCPenChanger(wxDC& dc, const wxPen& pen) : m_dc(dc), m_penOld(dc.GetPen()) + { + m_dc.SetPen(pen); + } + + ~wxDCPenChanger() + { + if ( m_penOld.Ok() ) + m_dc.SetPen(m_penOld); + } + +private: + wxDC& m_dc; + + wxPen m_penOld; + + DECLARE_NO_COPY_CLASS(wxDCPenChanger) +}; + +// ---------------------------------------------------------------------------- +// helper class: you can use it to temporarily change the DC brush and +// restore it automatically when the object goes out of scope +// ---------------------------------------------------------------------------- + +class WXDLLEXPORT wxDCBrushChanger +{ +public: + wxDCBrushChanger(wxDC& dc, const wxBrush& brush) : m_dc(dc), m_brushOld(dc.GetBrush()) + { + m_dc.SetBrush(brush); + } + + ~wxDCBrushChanger() + { + if ( m_brushOld.Ok() ) + m_dc.SetBrush(m_brushOld); + } + +private: + wxDC& m_dc; + + wxBrush m_brushOld; + + DECLARE_NO_COPY_CLASS(wxDCBrushChanger) +}; + // ---------------------------------------------------------------------------- // another small helper class: sets the clipping region in its ctor and // destroys it in the dtor @@ -887,6 +930,8 @@ private: class WXDLLEXPORT wxDCClipper { public: + wxDCClipper(wxDC& dc, const wxRegion& r) : m_dc(dc) + { dc.SetClippingRegion(r); } wxDCClipper(wxDC& dc, const wxRect& r) : m_dc(dc) { dc.SetClippingRegion(r.x, r.y, r.width, r.height); } wxDCClipper(wxDC& dc, wxCoord x, wxCoord y, wxCoord w, wxCoord h) : m_dc(dc)