]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/font.cpp
Blind fix for bug #1209944, wxFileConfig constructor corrupts the stack
[wxWidgets.git] / src / os2 / font.cpp
index de67ef42113f8a0b491f60db2d25fe9066836bec..dfa8111a51959434c5477941dd3f28e7a092bde6 100644 (file)
     #include "wx/utils.h"
     #include "wx/app.h"
     #include "wx/font.h"
+    #include "wx/log.h"
 #endif // WX_PRECOMP
 
 #include "wx/os2/private.h"
 
 #include "wx/fontutil.h"
 #include "wx/fontmap.h"
+#include "wx/encinfo.h"
 
 #include "wx/tokenzr.h"
 
@@ -49,7 +51,7 @@ public:
     wxFontRefData()
     {
         Init(-1, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, FALSE,
-             "", wxFONTENCODING_DEFAULT);
+             wxEmptyString, wxFONTENCODING_DEFAULT);
     }
 
     wxFontRefData( int             nSize
@@ -374,8 +376,6 @@ bool wxFontRefData::Alloc(
     wxString                        sFaceName;
     long                            flId = m_hFont;
     long                            lRc;
-    short                           nIndex = 0;
-    PFONTMETRICS                    pFM = NULL;
     ERRORID                         vError;
     wxString                        sError;
 
@@ -441,7 +441,7 @@ bool wxFontRefData::Alloc(
         m_nFamily = wxROMAN;
     else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "WarpSans") == 0)
         m_nFamily = wxDECORATIVE;
-    else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "Helvitica") == 0)
+    else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "Helvetica") == 0)
         m_nFamily = wxSWISS;
     else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "Helv") == 0)
         m_nFamily = wxSWISS;
@@ -454,11 +454,13 @@ bool wxFontRefData::Alloc(
     else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "System Monospaced") == 0)
         m_nFamily = wxTELETYPE;
     else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "System VIO") == 0)
-        m_nFamily = wxDEFAULT;
+        m_nFamily = wxMODERN;
     else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "System Proportional") == 0)
         m_nFamily = wxMODERN;
     else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "Arial") == 0)
         m_nFamily = wxSWISS;
+    else if (strcmp(m_vNativeFontInfo.fm.szFamilyname, "Swiss") == 0)
+        m_nFamily = wxSWISS;
     else
         m_nFamily = wxSWISS;
 
@@ -492,7 +494,7 @@ bool wxFontRefData::Alloc(
             m_nWeight = wxFONTWEIGHT_NORMAL;
     }
     m_bUnderlined = ((m_vNativeFontInfo.fa.fsSelection & FATTR_SEL_UNDERSCORE) != 0);
-    m_sFaceName = m_vNativeFontInfo.fa.szFacename;
+    m_sFaceName = (wxChar*)m_vNativeFontInfo.fa.szFacename;
     m_vEncoding = wxGetFontEncFromCharSet(m_vNativeFontInfo.fa.usCodePage);
 
     //
@@ -580,7 +582,7 @@ bool wxNativeFontInfo::GetUnderlined() const
 
 wxString wxNativeFontInfo::GetFaceName() const
 {
-    return fm.szFacename;
+    return (wxChar*)fm.szFacename;
 } // end of wxNativeFontInfo::GetFaceName
 
 wxFontFamily wxNativeFontInfo::GetFamily() const
@@ -600,7 +602,7 @@ wxFontFamily wxNativeFontInfo::GetFamily() const
         nFamily = wxROMAN;
     else if (strcmp(fm.szFamilyname, "WarpSans") == 0)
         nFamily = wxDECORATIVE;
-    else if (strcmp(fm.szFamilyname, "Helvitica") == 0)
+    else if (strcmp(fm.szFamilyname, "Helvetica") == 0)
         nFamily = wxSWISS;
     else if (strcmp(fm.szFamilyname, "Helv") == 0)
         nFamily = wxSWISS;
@@ -613,11 +615,13 @@ wxFontFamily wxNativeFontInfo::GetFamily() const
     else if (strcmp(fm.szFamilyname, "System Monospaced") == 0)
         nFamily = wxTELETYPE;
     else if (strcmp(fm.szFamilyname, "System VIO") == 0)
-        nFamily = wxDEFAULT;
+        nFamily = wxMODERN;
     else if (strcmp(fm.szFamilyname, "System Proportional") == 0)
         nFamily = wxMODERN;
     else if (strcmp(fm.szFamilyname, "Arial") == 0)
         nFamily = wxSWISS;
+    else if (strcmp(fm.szFamilyname, "Swiss") == 0)
+        nFamily = wxSWISS;
     else
         nFamily = wxSWISS;
     return (wxFontFamily)nFamily;
@@ -691,7 +695,7 @@ void wxNativeFontInfo::SetFaceName(
   wxString                          sFacename
 )
 {
-    wxStrncpy(fa.szFacename, sFacename, WXSIZEOF(fa.szFacename));
+    wxStrncpy((wxChar*)fa.szFacename, sFacename, WXSIZEOF(fa.szFacename));
 } // end of wxNativeFontInfo::SetFaceName
 
 void wxNativeFontInfo::SetFamily(
@@ -703,7 +707,7 @@ void wxNativeFontInfo::SetFamily(
     switch (eFamily)
     {
         case wxSCRIPT:
-            sFacename = wxT("Script");
+            sFacename = wxT("Tms Rmn");
             break;
 
         case wxDECORATIVE:
@@ -711,15 +715,15 @@ void wxNativeFontInfo::SetFamily(
             break;
 
         case wxROMAN:
-            sFacename = wxT("Times New Roman");
+            sFacename = wxT("Tms Rmn");
             break;
 
         case wxTELETYPE:
-            sFacename = wxT("Courier New") ;
+            sFacename = wxT("Courier") ;
             break;
 
         case wxMODERN:
-            sFacename = wxT("Courier New") ;
+            sFacename = wxT("System VIO") ;
             break;
 
         case wxSWISS:
@@ -731,7 +735,7 @@ void wxNativeFontInfo::SetFamily(
             sFacename = wxT("System VIO") ;
     }
 
-    if (!wxStrlen(fa.szFacename) )
+    if (!wxStrlen((wxChar*)fa.szFacename) )
     {
         SetFaceName(sFacename);
     }
@@ -834,7 +838,7 @@ bool wxNativeFontInfo::FromString(
     sToken = vTokenizer.GetNextToken();
     if(!sToken)
         return FALSE;
-    wxStrcpy(fa.szFacename, sToken.c_str());
+    wxStrcpy((wxChar*)fa.szFacename, sToken.c_str());
     return TRUE;
 } // end of wxNativeFontInfo::FromString
 
@@ -1068,7 +1072,7 @@ void wxFont::SetEncoding(
     RealizeResource();
 } // end of wxFont::SetEncoding
 
-void wxFont::SetNativeFontInfo(
+void wxFont::DoSetNativeFontInfo(
   const wxNativeFontInfo&           rInfo
 )
 {
@@ -1134,11 +1138,10 @@ wxFontEncoding wxFont::GetEncoding() const
     return M_FONTDATA->GetEncoding();
 } // end of wxFont::GetEncoding
 
-wxNativeFontInfo* wxFont::GetNativeFontInfo() const
+const wxNativeFontInfo* wxFont::GetNativeFontInfo() const
 {
-    if (M_FONTDATA->HasNativeFontInfo())
-        return new wxNativeFontInfo(M_FONTDATA->GetNativeFontInfo());
-    return 0;
+    return M_FONTDATA->HasNativeFontInfo() ? &(M_FONTDATA->GetNativeFontInfo())
+                                           : NULL;
 } // end of wxFont::GetNativeFontInfo
 
 //