]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/fontutil.cpp
Make Home and End keys work as expected in wxGrid.
[wxWidgets.git] / src / os2 / fontutil.cpp
index ed91187204010ed5564f10045202a08c8b34d07a..ad94caff32f80917789f33328b32c1264a3e2aa3 100644 (file)
 // headers
 // ----------------------------------------------------------------------------
 
-#ifdef __GNUG__
-    #pragma implementation "fontutil.h"
-#endif
-
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
@@ -59,7 +55,7 @@
 
 bool wxNativeEncodingInfo::FromString( const wxString& rsStr )
 {
-    wxStringTokenizer               vTokenizer(rsStr, _T(";"));
+    wxStringTokenizer               vTokenizer(rsStr, wxT(";"));
     wxString                        sEncid = vTokenizer.GetNextToken();
     long                            lEnc;
 
@@ -78,7 +74,7 @@ bool wxNativeEncodingInfo::FromString( const wxString& rsStr )
     }
     else
     {
-        if ( wxSscanf(sTmp, _T("%u"), &charset) != 1 )
+        if ( wxSscanf(sTmp, wxT("%u"), &charset) != 1 )
         {
             // should be a number!
             return FALSE;
@@ -91,11 +87,11 @@ wxString wxNativeEncodingInfo::ToString() const
 {
     wxString                        sStr;
 
-    sStr << (long)encoding << _T(';') << facename;
+    sStr << (long)encoding << wxT(';') << facename;
 
     if (charset != 850)
     {
-        sStr << _T(';') << charset;
+        sStr << wxT(';') << charset;
     }
     return sStr;
 } // end of wxNativeEncodingInfo::ToString
@@ -107,7 +103,7 @@ wxString wxNativeEncodingInfo::ToString() const
 bool wxGetNativeFontEncoding( wxFontEncoding vEncoding,
                               wxNativeEncodingInfo* pInfo )
 {
-    wxCHECK_MSG(pInfo, FALSE, _T("bad pointer in wxGetNativeFontEncoding") );
+    wxCHECK_MSG(pInfo, FALSE, wxT("bad pointer in wxGetNativeFontEncoding") );
     if (vEncoding == wxFONTENCODING_DEFAULT)
     {
         vEncoding = wxFont::GetDefaultEncoding();
@@ -237,7 +233,7 @@ bool wxTestFontEncoding( const wxNativeEncodingInfo& rInfo )
     vLogFont.fsFontUse = FATTR_FONTUSE_OUTLINE |      // only outline fonts allowed
                          FATTR_FONTUSE_TRANSFORMABLE; // may be transformed
 
-    wxStrncpy((wxChar*)vLogFont.szFacename, rInfo.facename.c_str(), WXSIZEOF(vLogFont.szFacename));
+    wxStrlcpy((wxChar*)vLogFont.szFacename, rInfo.facename.c_str(), WXSIZEOF(vLogFont.szFacename));
 
     if (!::GpiCreateLogFont( hPS
                             ,NULL
@@ -285,11 +281,16 @@ void wxConvertVectorFontSize(
     //   NOTE: 1 point == 1/72 of an inch.
     //
 
-    vSizef.cx = (FIXED)(((fxPointSize) / 72 ) * lXFontResolution );
-    vSizef.cy = (FIXED)(((fxPointSize) / 72 ) * lYFontResolution );
+    // multiply first to avoid getting vSizef.cx,cy = 0 since fxPointSize
+    // is normally < 72 and FontResolution is typically ca. 100
+    vSizef.cx = (FIXED)( (fxPointSize * lXFontResolution) / 72 );
+    vSizef.cy = (FIXED)( (fxPointSize * lYFontResolution) / 72 );
 
-    pFattrs->lMaxBaselineExt = MAKELONG( HIUSHORT( vSizef.cy ), 0 );
-    pFattrs->lAveCharWidth   = MAKELONG( HIUSHORT( vSizef.cx ), 0 );
+    if (pFattrs)
+    {
+        pFattrs->lMaxBaselineExt = MAKELONG( HIUSHORT( vSizef.cy ), 0 );
+        pFattrs->lAveCharWidth   = MAKELONG( HIUSHORT( vSizef.cx ), 0 );
+    }
     WinReleasePS(hPS);
 
 } // end of wxConvertVectorPointSize
@@ -508,7 +509,7 @@ void wxOS2SelectMatchingFontByName(
     switch (pFont->GetWeight())
     {
         default:
-            wxFAIL_MSG(_T("unknown font weight"));
+            wxFAIL_MSG(wxT("unknown font weight"));
             // fall through
             usWeightClass = FWEIGHT_DONT_CARE;
             break;
@@ -548,7 +549,7 @@ void wxOS2SelectMatchingFontByName(
             break;
     }
 
-    wxStrncpy(zFontFaceName, sFaceName.c_str(), WXSIZEOF(zFontFaceName));
+    wxStrlcpy(zFontFaceName, sFaceName.c_str(), WXSIZEOF(zFontFaceName));
     nPointSize = pFont->GetPointSize();
 
     //