X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/fc298ea7815b9467dea52b4353dfe0926176c9b7..851b88c310ac064e826dfd011d02c6dc5301fc35:/include/wx/dc.h diff --git a/include/wx/dc.h b/include/wx/dc.h index af5ebf4501..84cd83b9b4 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: @@ -161,20 +161,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); } @@ -659,7 +659,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; @@ -868,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