X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0fba44b4103530bd7904c4b5720b7568b753daec..5b05d3ee52cb31caa856c9982eaeb2fcf5b5f78e:/src/os2/fontutil.cpp diff --git a/src/os2/fontutil.cpp b/src/os2/fontutil.cpp index aac250ae03..8883b7305c 100644 --- a/src/os2/fontutil.cpp +++ b/src/os2/fontutil.cpp @@ -8,10 +8,6 @@ // Copyright: (c) 1999 Vadim Zeitlin // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// -#define DEBUG_PRINTF(NAME) { static int raz=0; \ - printf( #NAME " %i\n",raz); fflush(stdout); \ - raz++; \ - } // ============================================================================ // declarations @@ -21,13 +17,16 @@ // headers // ---------------------------------------------------------------------------- -#ifdef __GNUG__ - #pragma implementation "fontutil.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" +#define DEBUG_PRINTF(NAME) \ + { \ + static int raz=0; \ + printf( #NAME " %i\n",raz); fflush(stdout); \ + raz++; \ + } + #ifndef WX_PRECOMP #include "wx/app.h" #include "wx/string.h" @@ -54,9 +53,7 @@ // convert to/from the string representation: format is // encodingid;facename[;charset] -bool wxNativeEncodingInfo::FromString( - const wxString& rsStr -) +bool wxNativeEncodingInfo::FromString( const wxString& rsStr ) { wxStringTokenizer vTokenizer(rsStr, _T(";")); wxString sEncid = vTokenizer.GetNextToken(); @@ -83,7 +80,7 @@ bool wxNativeEncodingInfo::FromString( return FALSE; } } - return TRUE; + return true; } // end of wxNativeEncodingInfo::FromString wxString wxNativeEncodingInfo::ToString() const @@ -103,10 +100,8 @@ wxString wxNativeEncodingInfo::ToString() const // helper functions // ---------------------------------------------------------------------------- -bool wxGetNativeFontEncoding( - wxFontEncoding vEncoding -, wxNativeEncodingInfo* pInfo -) +bool wxGetNativeFontEncoding( wxFontEncoding vEncoding, + wxNativeEncodingInfo* pInfo ) { wxCHECK_MSG(pInfo, FALSE, _T("bad pointer in wxGetNativeFontEncoding") ); if (vEncoding == wxFONTENCODING_DEFAULT) @@ -168,7 +163,7 @@ bool wxGetNativeFontEncoding( pInfo->charset = 850; break; } - return TRUE; + return true; } // end of wxGetNativeFontEncoding wxFontEncoding wxGetFontEncFromCharSet( @@ -223,24 +218,22 @@ wxFontEncoding wxGetFontEncFromCharSet( return eFontEncoding; } // end of wxGetNativeFontEncoding -bool wxTestFontEncoding( - const wxNativeEncodingInfo& rInfo -) +bool wxTestFontEncoding( const wxNativeEncodingInfo& rInfo ) { - FATTRS vLogFont; - HPS hPS; + FATTRS vLogFont; + HPS hPS; hPS = ::WinGetPS(HWND_DESKTOP); memset(&vLogFont, '\0', sizeof(FATTRS)); // all default values vLogFont.usRecordLength = sizeof(FATTRS); - vLogFont.usCodePage = rInfo.charset; + vLogFont.usCodePage = (USHORT)rInfo.charset; vLogFont.lMaxBaselineExt = 0L; // Outline fonts should use 0 vLogFont.lAveCharWidth = 0L; // Outline fonts should use 0 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 @@ -252,7 +245,7 @@ bool wxTestFontEncoding( return FALSE; } ::WinReleasePS(hPS); - return TRUE; + return true; } // end of wxTestFontEncoding // ---------------------------------------------------------------------------- @@ -288,30 +281,33 @@ 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 -void wxFillLogFont( - LOGFONT* pFattrs // OS2 GPI FATTRS -, PFACENAMEDESC pFaceName -, HPS* phPS -, bool* pbInternalPS -, long* pflId -, wxString& sFaceName -, wxFont* pFont -) +void wxFillLogFont( LOGFONT* pFattrs, // OS2 GPI FATTRS + PFACENAMEDESC pFaceName, + HPS* phPS, + bool* pbInternalPS, + long* pflId, + wxString& sFaceName, + wxFont* pFont ) { - LONG lNumFonts = 0L; // For system font count - ERRORID vError; // For logging API errors - LONG lTemp = 0L; - bool bInternalPS = FALSE; // if we have to create one - PFONTMETRICS pFM = NULL; + LONG lNumFonts = 0L; // For system font count + ERRORID vError; // For logging API errors + LONG lTemp = 0L; + bool bInternalPS = false; // if we have to create one + PFONTMETRICS pFM = NULL; // // Initial house cleaning to free data buffers and ensure we have a @@ -320,7 +316,7 @@ void wxFillLogFont( if (!*phPS) { *phPS = ::WinGetPS(HWND_DESKTOP); - bInternalPS = TRUE; + bInternalPS = true; } // @@ -553,7 +549,7 @@ void wxOS2SelectMatchingFontByName( break; } - wxStrncpy(zFontFaceName, sFaceName.c_str(), WXSIZEOF(zFontFaceName)); + wxStrlcpy(zFontFaceName, sFaceName.c_str(), WXSIZEOF(zFontFaceName)); nPointSize = pFont->GetPointSize(); // @@ -712,4 +708,3 @@ int wxGpiStrcmp( } return rc; } -