X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9928536b3a83586c473c96000c2d3a32e4c3f576..f24f65791310a4e0d1690f244658b837036aa270:/include/wx/dc.h diff --git a/include/wx/dc.h b/include/wx/dc.h index 9c8974f8ae..ab19b30997 100644 --- a/include/wx/dc.h +++ b/include/wx/dc.h @@ -1,7 +1,7 @@ ///////////////////////////////////////////////////////////////////////////// // Name: wx/dc.h // Purpose: wxDC class -// Author: Vadim Zeitlin +// Author: Vadim Zeitlin // Modified by: // Created: 05/25/99 // RCS-ID: $Id$ @@ -163,7 +163,7 @@ class WXDLLIMPEXP_CORE wxDCImpl: public wxObject { public: wxDCImpl( wxDC *owner ); - ~wxDCImpl(); + virtual ~wxDCImpl(); wxDC *GetOwner() const { return m_owner; } @@ -255,32 +255,41 @@ public: // setters and getters virtual void SetFont(const wxFont& font) = 0; - virtual const wxFont& GetFont() const { return m_font; } + virtual const wxFont& GetFont() const { return m_font; } virtual void SetPen(const wxPen& pen) = 0; - virtual const wxPen& GetPen() const { return m_pen; } + virtual const wxPen& GetPen() const { return m_pen; } virtual void SetBrush(const wxBrush& brush) = 0; - virtual const wxBrush& GetBrush() const { return m_brush; } + virtual const wxBrush& GetBrush() const { return m_brush; } virtual void SetBackground(const wxBrush& brush) = 0; - virtual const wxBrush& GetBackground() const { return m_backgroundBrush; } + virtual const wxBrush& GetBackground() const { return m_backgroundBrush; } virtual void SetBackgroundMode(int mode) = 0; virtual int GetBackgroundMode() const { return m_backgroundMode; } virtual void SetTextForeground(const wxColour& colour) { m_textForegroundColour = colour; } - virtual const wxColour& GetTextForeground() const { return m_textForegroundColour; } + virtual const wxColour& GetTextForeground() const + { return m_textForegroundColour; } virtual void SetTextBackground(const wxColour& colour) { m_textBackgroundColour = colour; } - virtual const wxColour& GetTextBackground() const { return m_textBackgroundColour; } + virtual const wxColour& GetTextBackground() const + { return m_textBackgroundColour; } #if wxUSE_PALETTE virtual void SetPalette(const wxPalette& palette) = 0; #endif // wxUSE_PALETTE + // inherit the DC attributes (font and colours) from the given window + // + // this is called automatically when a window, client or paint DC is + // created + virtual void InheritAttributes(wxWindow *win); + + // logical functions virtual void SetLogicalFunction(int function) = 0; @@ -488,10 +497,10 @@ public: // --------------------------------------------------------- // wxPrinterDC Impl API - virtual wxRect GetPaperRect() + virtual wxRect GetPaperRect() const { int w = 0; int h = 0; DoGetSize( &w, &h ); return wxRect(0,0,w,h); } - virtual int GetResolution() + virtual int GetResolution() const { return -1; } private: @@ -553,6 +562,10 @@ protected: double sa, double ea ); #endif // __WXWINCE__ + // returns adjustment factor for converting wxFont "point size"; in wx + // it is point size on screen and needs to be multiplied by this value + // for rendering on higher-resolution DCs such as printer ones + static float GetFontPointSizeAdjustment(float dpi); // window on which the DC draws or NULL wxWindow *m_window; @@ -654,7 +667,7 @@ public: wxSize GetPPI() const { return m_pimpl->GetPPI(); } - virtual int GetResolution() + virtual int GetResolution() const { return m_pimpl->GetResolution(); } // Right-To-Left (RTL) modes @@ -1108,8 +1121,12 @@ public: wxDEPRECATED( void GetLogicalOrigin(long *x, long *y) const ); wxDEPRECATED( void GetDeviceOrigin(long *x, long *y) const ); wxDEPRECATED( void GetClippingBox(long *x, long *y, long *w, long *h) const ); + #endif // WXWIN_COMPATIBILITY_2_8 +#ifdef __WXMSW__ + WXHDC GetHDC() const; +#endif // __WXMSW__ protected: // ctor takes ownership of the pointer @@ -1235,4 +1252,32 @@ private: DECLARE_NO_COPY_CLASS(wxDCClipper) }; +// ---------------------------------------------------------------------------- +// helper class: you can use it to temporarily change the DC font and +// restore it automatically when the object goes out of scope +// ---------------------------------------------------------------------------- + +class WXDLLIMPEXP_CORE wxDCFontChanger +{ +public: + wxDCFontChanger(wxDC& dc, const wxFont& font) : m_dc(dc), m_fontOld(dc.GetFont()) + { + m_dc.SetFont(font); + } + + ~wxDCFontChanger() + { + if ( m_fontOld.Ok() ) + m_dc.SetFont(m_fontOld); + } + +private: + wxDC& m_dc; + + wxFont m_fontOld; + + DECLARE_NO_COPY_CLASS(wxDCFontChanger) +}; + + #endif // _WX_DC_H_BASE_