]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/font.cpp
fix for wxSYS_COLOUR_LISTBOX representation
[wxWidgets.git] / src / msw / font.cpp
index 56778e8b8b24e87c900cb3a7b9d296e717b92bcd..a8fb8be5411b96d729878c1062e835c8981b81a6 100644 (file)
@@ -399,6 +399,45 @@ wxString wxNativeFontInfo::GetFaceName() const
     return lf.lfFaceName;
 }
 
+wxFontFamily wxNativeFontInfo::GetFamily() const
+{
+    // extract family from pitch-and-family
+    int lfFamily = lf.lfPitchAndFamily;
+    int family;
+
+    if ( lfFamily & FIXED_PITCH )
+        lfFamily -= FIXED_PITCH;
+    if ( lfFamily & VARIABLE_PITCH )
+        lfFamily -= VARIABLE_PITCH;
+
+    switch ( lfFamily )
+    {
+        case FF_ROMAN:
+            family = wxROMAN;
+            break;
+
+        case FF_SWISS:
+            family = wxSWISS;
+            break;
+
+        case FF_SCRIPT:
+            family = wxSCRIPT;
+            break;
+
+        case FF_MODERN:
+            family = wxMODERN;
+            break;
+
+        case FF_DECORATIVE:
+            family = wxDECORATIVE;
+            break;
+
+        default:
+            family = wxSWISS;
+    }
+    return (wxFontFamily)family;
+}
+
 wxFontEncoding wxNativeFontInfo::GetEncoding() const
 {
     return wxGetFontEncFromCharSet(lf.lfCharSet);
@@ -465,7 +504,7 @@ void wxNativeFontInfo::SetUnderlined(bool underlined)
 
 void wxNativeFontInfo::SetFaceName(wxString facename)
 {
-    wxStrncpy(lf.lfFaceName, facename, sizeof(lf.lfFaceName)/sizeof(WCHAR));
+    wxStrncpy(lf.lfFaceName, facename, WXSIZEOF(lf.lfFaceName));
 }
 
 void wxNativeFontInfo::SetFamily(wxFontFamily family)
@@ -521,19 +560,22 @@ void wxNativeFontInfo::SetEncoding(wxFontEncoding encoding)
     if ( !wxGetNativeFontEncoding(encoding, &info) )
     {
 #if wxUSE_FONTMAP
-        if ( !wxTheFontMapper->GetAltForEncoding(encoding, &info) )
+        if ( wxTheFontMapper->GetAltForEncoding(encoding, &info) )
+        {
+            if ( !info.facename.empty() )
+            {
+                // if we have this encoding only in some particular facename, use
+                // the facename - it is better to show the correct characters in a
+                // wrong facename than unreadable text in a correct one
+                SetFaceName(info.facename);
+            }
+        }
+        else
 #endif // wxUSE_FONTMAP
         {
             // unsupported encoding, replace with the default
             info.charset = ANSI_CHARSET;
         }
-        else if ( !info.facename.empty() )
-        {
-            // if we have this encoding only in some particular facename, use
-            // the facename - it is better to show the correct characters in a
-            // wrong facename than unreadable text in a correct one
-            SetFaceName(info.facename);
-        }
     }
 
     lf.lfCharSet = info.charset;