]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/font.cpp
Update copyright year in the version information resource.
[wxWidgets.git] / src / msw / font.cpp
index d995db91ac7e54cd9f4fc5851f517a4aa55447f3..ddeef618865a8356c1dfede35e8db16f2798c8e4 100644 (file)
@@ -63,7 +63,7 @@ public:
     wxFontRefData()
     {
         Init(-1, wxSize(0,0), false, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL,
-             wxFONTWEIGHT_NORMAL, false, wxEmptyString,
+             wxFONTWEIGHT_NORMAL, false, false, wxEmptyString,
              wxFONTENCODING_DEFAULT);
     }
 
@@ -74,11 +74,12 @@ public:
                   wxFontStyle style,
                   wxFontWeight weight,
                   bool underlined,
+                  bool strikethrough,
                   const wxString& faceName,
                   wxFontEncoding encoding)
     {
         Init(size, pixelSize, sizeUsingPixels, family, style, weight,
-             underlined, faceName, encoding);
+             underlined, strikethrough, faceName, encoding);
     }
 
     wxFontRefData(const wxNativeFontInfo& info, WXHFONT hFont = 0)
@@ -134,6 +135,11 @@ public:
         return m_nativeFontInfo.GetUnderlined();
     }
 
+    bool GetStrikethrough() const
+    {
+        return m_nativeFontInfo.GetStrikethrough();
+    }
+
     wxString GetFaceName() const
     {
         wxString facename = m_nativeFontInfo.GetFaceName();
@@ -225,6 +231,13 @@ public:
         m_nativeFontInfo.SetUnderlined(underlined);
     }
 
+    void SetStrikethrough(bool strikethrough)
+    {
+        Free();
+
+        m_nativeFontInfo.SetStrikethrough(strikethrough);
+    }
+
     void SetEncoding(wxFontEncoding encoding)
     {
         Free();
@@ -262,6 +275,7 @@ protected:
               wxFontStyle style,
               wxFontWeight weight,
               bool underlined,
+              bool strikethrough,
               const wxString& faceName,
               wxFontEncoding encoding);
 
@@ -279,7 +293,7 @@ protected:
     wxString GetMSWFaceName() const
     {
         ScreenHDC hdc;
-        SelectInHDC selectFont(hdc, m_hFont);
+        SelectInHDC selectFont(hdc, (HFONT)GetHFONT());
 
         UINT otmSize = GetOutlineTextMetrics(hdc, 0, NULL);
         if ( !otmSize )
@@ -336,6 +350,7 @@ void wxFontRefData::Init(int pointSize,
                          wxFontStyle style,
                          wxFontWeight weight,
                          bool underlined,
+                         bool strikethrough,
                          const wxString& faceName,
                          wxFontEncoding encoding)
 {
@@ -350,6 +365,7 @@ void wxFontRefData::Init(int pointSize,
     SetStyle(style);
     SetWeight(weight);
     SetUnderlined(underlined);
+    SetStrikethrough(strikethrough);
 
     // set the family/facename
     SetFamily(family);
@@ -463,6 +479,11 @@ bool wxNativeFontInfo::GetUnderlined() const
     return lf.lfUnderline != 0;
 }
 
+bool wxNativeFontInfo::GetStrikethrough() const
+{
+    return lf.lfStrikeOut != 0;
+}
+
 wxString wxNativeFontInfo::GetFaceName() const
 {
     return lf.lfFaceName;
@@ -583,6 +604,11 @@ void wxNativeFontInfo::SetUnderlined(bool underlined)
     lf.lfUnderline = underlined;
 }
 
+void wxNativeFontInfo::SetStrikethrough(bool strikethrough)
+{
+    lf.lfStrikeOut = strikethrough;
+}
+
 bool wxNativeFontInfo::SetFaceName(const wxString& facename)
 {
     wxStrlcpy(lf.lfFaceName, facename.c_str(), WXSIZEOF(lf.lfFaceName));
@@ -778,6 +804,20 @@ wxFont::wxFont(const wxString& fontdesc)
         (void)Create(info);
 }
 
+wxFont::wxFont(const wxFontInfo& info)
+{
+    m_refData = new wxFontRefData(info.GetPointSize(),
+                                  info.GetPixelSize(),
+                                  info.IsUsingSizeInPixels(),
+                                  info.GetFamily(),
+                                  info.GetStyle(),
+                                  info.GetWeight(),
+                                  info.IsUnderlined(),
+                                  info.IsStrikethrough(),
+                                  info.GetFaceName(),
+                                  info.GetEncoding());
+}
+
 bool wxFont::Create(const wxNativeFontInfo& info, WXHFONT hFont)
 {
     UnRef();
@@ -801,14 +841,14 @@ bool wxFont::DoCreate(int pointSize,
 
     // wxDEFAULT is a valid value for the font size too so we must treat it
     // specially here (otherwise the size would be 70 == wxDEFAULT value)
-    if ( pointSize == wxDEFAULT )
+    if ( pointSize == wxDEFAULT || pointSize == -1 )
     {
         pointSize = wxNORMAL_FONT->GetPointSize();
     }
 
     m_refData = new wxFontRefData(pointSize, pixelSize, sizeUsingPixels,
                                   family, style, weight,
-                                  underlined, faceName, encoding);
+                                  underlined, false, faceName, encoding);
 
     return RealizeResource();
 }
@@ -930,6 +970,13 @@ void wxFont::SetUnderlined(bool underlined)
     M_FONTDATA->SetUnderlined(underlined);
 }
 
+void wxFont::SetStrikethrough(bool strikethrough)
+{
+    AllocExclusive();
+
+    M_FONTDATA->SetStrikethrough(strikethrough);
+}
+
 void wxFont::SetEncoding(wxFontEncoding encoding)
 {
     AllocExclusive();
@@ -995,6 +1042,13 @@ bool wxFont::GetUnderlined() const
     return M_FONTDATA->GetUnderlined();
 }
 
+bool wxFont::GetStrikethrough() const
+{
+    wxCHECK_MSG( IsOk(), false, wxT("invalid font") );
+
+    return M_FONTDATA->GetStrikethrough();
+}
+
 wxString wxFont::GetFaceName() const
 {
     wxCHECK_MSG( IsOk(), wxEmptyString, wxT("invalid font") );