]> git.saurik.com Git - wxWidgets.git/commitdiff
Added wxDCFontChanger ctor not changing font.
authorVadim Zeitlin <vadim@wxwidgets.org>
Mon, 12 Oct 2009 13:59:13 +0000 (13:59 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Mon, 12 Oct 2009 13:59:13 +0000 (13:59 +0000)
This is similar to the existing wxDCTextColourChanger ctor not changing colour
and is useful in the same kind of situations: when the font may or not be
changed.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62382 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/dc.h
interface/wx/dc.h

index 4981bda64adbe6e15d105183db90e4650a78abe4..82f4848adf17d3b93427d37c88e2e7e574aaba12 100644 (file)
@@ -1377,8 +1377,21 @@ private:
 class WXDLLIMPEXP_CORE wxDCFontChanger
 {
 public:
-    wxDCFontChanger(wxDC& dc, const wxFont& font) : m_dc(dc), m_fontOld(dc.GetFont())
+    wxDCFontChanger(wxDC& dc)
+        : m_dc(dc), m_fontOld()
     {
+    }
+
+    wxDCFontChanger(wxDC& dc, const wxFont& font)
+        : m_dc(dc), m_fontOld(dc.GetFont())
+    {
+        m_dc.SetFont(font);
+    }
+
+    void Set(const wxFont& font)
+    {
+        if ( !m_fontOld.Ok() )
+            m_fontOld = m_dc.GetFont();
         m_dc.SetFont(font);
     }
 
index 704e5b06a4c1521bb4de88ea0efa8e1b53b31174..4e75b0ee3eadebd5296a4d198e68de0036bb4f74 100644 (file)
@@ -1493,6 +1493,18 @@ public:
 class wxDCFontChanger
 {
 public:
+    /**
+        Trivial constructor not changing anything.
+
+        This constructor is useful if you don't know beforehand if the font
+        needs to be changed or not. It simply creates the object which won't do
+        anything in its destructor unless Set() is called -- in which case it
+        would reset the previous font.
+
+        @since 2.9.1
+     */
+    wxDCFontChanger(wxDC& dc);
+
     /**
         Sets @a font on the given @a dc, storing the old one.
 
@@ -1504,7 +1516,18 @@ public:
     wxDCFontChanger(wxDC& dc, const wxFont& font);
 
     /**
-        Restores the colour originally selected in the DC passed to the ctor.
+        Set the font to use.
+
+        This method is meant to be called once only and only on the objects
+        created with the constructor overload not taking wxColour argument and
+        has the same effect as the other constructor, i.e. sets the font to
+        the given @a font and ensures that the old value is restored when this
+        object is destroyed.
+     */
+    void Set(const wxFont& font);
+
+    /**
+        Restores the font originally selected in the DC passed to the ctor.
     */
     ~wxDCFontChanger();
 };