X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6eb280e9561bc6c392a22cd456b0a0509fa280f4..d949570b6673dadd764686213afb89bddb6f19da:/src/os2/font.cpp diff --git a/src/os2/font.cpp b/src/os2/font.cpp index 4937df9fd1..4ed240007c 100644 --- a/src/os2/font.cpp +++ b/src/os2/font.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: font.cpp +// Name: src/os2/font.cpp // Purpose: wxFont class // Author: David Webster // Modified by: @@ -9,6 +9,9 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + // ============================================================================ // declarations // ============================================================================ @@ -17,17 +20,13 @@ // headers // ---------------------------------------------------------------------------- - #include -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" +#include "wx/font.h" #ifndef WX_PRECOMP #include - #include "wx/setup.h" #include "wx/list.h" #include "wx/utils.h" #include "wx/app.h" - #include "wx/font.h" #include "wx/log.h" #endif // WX_PRECOMP @@ -35,9 +34,12 @@ #include "wx/fontutil.h" #include "wx/fontmap.h" +#include "wx/encinfo.h" #include "wx/tokenzr.h" +#include + IMPLEMENT_DYNAMIC_CLASS(wxFont, wxGDIObject) // ---------------------------------------------------------------------------- @@ -49,8 +51,8 @@ class WXDLLEXPORT wxFontRefData: public wxGDIRefData public: wxFontRefData() { - Init(-1, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, FALSE, - "", wxFONTENCODING_DEFAULT); + Init(-1, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, + wxEmptyString, wxFONTENCODING_DEFAULT); } wxFontRefData( int nSize @@ -194,12 +196,13 @@ public: m_nWeight = nWeight; } - inline void SetFaceName(const wxString& sFaceName) + inline bool SetFaceName(const wxString& sFaceName) { if (m_bNativeFontInfoOk) - m_vNativeFontInfo.SetFaceName(sFaceName); + return m_vNativeFontInfo.SetFaceName(sFaceName); else m_sFaceName = sFaceName; + return true; } inline void SetUnderlined(bool bUnderlined) @@ -259,7 +262,7 @@ protected: ,WXHANDLE hPS = 0 ); // - // If TRUE, the pointer to the actual font is temporary and SHOULD NOT BE + // If true, the pointer to the actual font is temporary and SHOULD NOT BE // DELETED by destructor // bool m_bTemporary; @@ -294,6 +297,8 @@ protected: bool m_bInternalPS; // Internally generated PS? }; // end of CLASS wxFontRefData +#define M_FONTDATA ((wxFontRefData*)m_refData) + // ============================================================================ // implementation // ============================================================================ @@ -322,10 +327,10 @@ void wxFontRefData::Init( m_vEncoding = vEncoding; m_hFont = 0; - m_bNativeFontInfoOk = FALSE; + m_bNativeFontInfoOk = false; m_nFontId = 0; - m_bTemporary = FALSE; + m_bTemporary = false; m_pFM = (PFONTMETRICS)NULL; m_hPS = NULLHANDLE; m_nNumFonts = 0; @@ -346,19 +351,19 @@ void wxFontRefData::Init( m_hFont = hFont; m_nFontId = (int)hFont; - m_bNativeFontInfoOk = TRUE; + m_bNativeFontInfoOk = true; m_vNativeFontInfo = rInfo; if (hPS == NULLHANDLE) { m_hPS = ::WinGetPS(HWND_DESKTOP); - m_bInternalPS = TRUE; + m_bInternalPS = true; } else m_hPS = (HPS)hPS; m_nFontId = 0; - m_bTemporary = FALSE; + m_bTemporary = false; m_pFM = (PFONTMETRICS)NULL; m_nNumFonts = 0; } // end of wxFontRefData::Init @@ -368,15 +373,11 @@ wxFontRefData::~wxFontRefData() Free(); } -bool wxFontRefData::Alloc( - wxFont* pFont -) +bool wxFontRefData::Alloc( wxFont* pFont ) { wxString sFaceName; long flId = m_hFont; long lRc; - short nIndex = 0; - PFONTMETRICS pFM = NULL; ERRORID vError; wxString sError; @@ -390,7 +391,7 @@ bool wxFontRefData::Alloc( ,sFaceName ,pFont ); - m_bNativeFontInfoOk = TRUE; + m_bNativeFontInfoOk = true; } else { @@ -414,7 +415,7 @@ bool wxFontRefData::Alloc( { vError = ::WinGetLastError(vHabmain); sError = wxPMErrorToStr(vError); - wxLogLastError("CreateFont"); + wxLogLastError(wxT("CreateFont")); } ::GpiSetCharSet(m_hPS, flId); // sets font for presentation space @@ -495,7 +496,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); // @@ -515,7 +516,7 @@ bool wxFontRefData::Alloc( // Select the font into the Presentation space // ::GpiSetCharSet(m_hPS, flId); // sets font for presentation space - return TRUE; + return true; } // end of wxFontRefData::Alloc void wxFontRefData::Free() @@ -583,7 +584,7 @@ bool wxNativeFontInfo::GetUnderlined() const wxString wxNativeFontInfo::GetFaceName() const { - return fm.szFacename; + return (wxChar*)fm.szFacename; } // end of wxNativeFontInfo::GetFaceName wxFontFamily wxNativeFontInfo::GetFamily() const @@ -692,11 +693,12 @@ void wxNativeFontInfo::SetUnderlined( fa.fsSelection |= FATTR_SEL_UNDERSCORE; } // end of wxNativeFontInfo::SetUnderlined -void wxNativeFontInfo::SetFaceName( - wxString sFacename +bool wxNativeFontInfo::SetFaceName( + const wxString& sFacename ) { - wxStrncpy(fa.szFacename, sFacename, WXSIZEOF(fa.szFacename)); + wxStrncpy((wxChar*)fa.szFacename, sFacename, WXSIZEOF(fa.szFacename)); + return true; } // end of wxNativeFontInfo::SetFaceName void wxNativeFontInfo::SetFamily( @@ -736,15 +738,13 @@ void wxNativeFontInfo::SetFamily( sFacename = wxT("System VIO") ; } - if (!wxStrlen(fa.szFacename) ) + if (!wxStrlen((wxChar*)fa.szFacename) ) { SetFaceName(sFacename); } } // end of wxNativeFontInfo::SetFamily -void wxNativeFontInfo::SetEncoding( - wxFontEncoding eEncoding -) +void wxNativeFontInfo::SetEncoding( wxFontEncoding eEncoding ) { wxNativeEncodingInfo vInfo; @@ -772,12 +772,10 @@ void wxNativeFontInfo::SetEncoding( vInfo.charset = 850; } } - fa.usCodePage = vInfo.charset; + fa.usCodePage = (USHORT)vInfo.charset; } // end of wxNativeFontInfo::SetFaceName -bool wxNativeFontInfo::FromString( - const wxString& rsStr -) +bool wxNativeFontInfo::FromString( const wxString& rsStr ) { long lVal; @@ -789,58 +787,58 @@ bool wxNativeFontInfo::FromString( wxString sToken = vTokenizer.GetNextToken(); if (sToken != _T('0')) - return FALSE; + return false; sToken = vTokenizer.GetNextToken(); if (!sToken.ToLong(&lVal)) - return FALSE; + return false; fm.lEmHeight = lVal; sToken = vTokenizer.GetNextToken(); if (!sToken.ToLong(&lVal)) - return FALSE; + return false; fa.lAveCharWidth = lVal; sToken = vTokenizer.GetNextToken(); if (!sToken.ToLong(&lVal)) - return FALSE; + return false; fa.fsSelection = (USHORT)lVal; sToken = vTokenizer.GetNextToken(); if (!sToken.ToLong(&lVal)) - return FALSE; + return false; fa.fsType = (USHORT)lVal; sToken = vTokenizer.GetNextToken(); if (!sToken.ToLong(&lVal)) - return FALSE; + return false; fa.fsFontUse = (USHORT)lVal; sToken = vTokenizer.GetNextToken(); if (!sToken.ToLong(&lVal)) - return FALSE; + return false; fa.idRegistry = (USHORT)lVal; sToken = vTokenizer.GetNextToken(); if (!sToken.ToLong(&lVal)) - return FALSE; + return false; fa.usCodePage = (USHORT)lVal; sToken = vTokenizer.GetNextToken(); if (!sToken.ToLong(&lVal)) - return FALSE; + return false; fa.lMatch = lVal; sToken = vTokenizer.GetNextToken(); if (!sToken.ToLong(&lVal)) - return FALSE; + return false; fn.usWeightClass = (USHORT)lVal; sToken = vTokenizer.GetNextToken(); if(!sToken) - return FALSE; - wxStrcpy(fa.szFacename, sToken.c_str()); - return TRUE; + return false; + wxStrcpy((wxChar*)fa.szFacename, sToken.c_str()); + return true; } // end of wxNativeFontInfo::FromString wxString wxNativeFontInfo::ToString() const @@ -859,7 +857,7 @@ wxString wxNativeFontInfo::ToString() const fa.usCodePage, fa.lMatch, fn.usWeightClass, - fa.szFacename); + (char *)fa.szFacename); return sStr; } // end of wxNativeFontInfo::ToString @@ -867,21 +865,15 @@ wxString wxNativeFontInfo::ToString() const // wxFont // ---------------------------------------------------------------------------- -void wxFont::Init() -{ -} // end of wxFont::Init - -bool wxFont::Create( - const wxNativeFontInfo& rInfo -, WXHFONT hFont -) +bool wxFont::Create( const wxNativeFontInfo& rInfo, + WXHFONT hFont ) { UnRef(); m_refData = new wxFontRefData( rInfo ,hFont ); RealizeResource(); - return TRUE; + return true; } // end of wxFont::Create wxFont::wxFont( @@ -898,15 +890,13 @@ wxFont::wxFont( // Constructor for a font. Note that the real construction is done // in wxDC::SetFont, when information is available about scaling etc. // ---------------------------------------------------------------------------- -bool wxFont::Create( - int nPointSize -, int nFamily -, int nStyle -, int nWeight -, bool bUnderlined -, const wxString& rsFaceName -, wxFontEncoding vEncoding -) +bool wxFont::Create( int nPointSize, + int nFamily, + int nStyle, + int nWeight, + bool bUnderlined, + const wxString& rsFaceName, + wxFontEncoding vEncoding ) { UnRef(); @@ -927,7 +917,7 @@ bool wxFont::Create( ,vEncoding ); RealizeResource(); - return TRUE; + return true; } // end of wxFont::Create wxFont::~wxFont() @@ -945,24 +935,22 @@ bool wxFont::RealizeResource() { if ( GetResourceHandle() ) { - return TRUE; + return true; } return M_FONTDATA->Alloc(this); } // end of wxFont::RealizeResource -bool wxFont::FreeResource( - bool bForce -) +bool wxFont::FreeResource( bool WXUNUSED(bForce) ) { if (GetResourceHandle()) { M_FONTDATA->Free(); - return TRUE; + return true; } - return FALSE; + return false; } // end of wxFont::FreeResource -WXHANDLE wxFont::GetResourceHandle() +WXHANDLE wxFont::GetResourceHandle() const { return GetHFONT(); } // end of wxFont::GetResourceHandle @@ -1040,15 +1028,17 @@ void wxFont::SetWeight( RealizeResource(); } // end of wxFont::SetWeight -void wxFont::SetFaceName( +bool wxFont::SetFaceName( const wxString& rsFaceName ) { Unshare(); - M_FONTDATA->SetFaceName(rsFaceName); + bool refdataok = M_FONTDATA->SetFaceName(rsFaceName); RealizeResource(); + + return refdataok && wxFontBase::SetFaceName(rsFaceName); } // end of wxFont::SetFaceName void wxFont::SetUnderlined( @@ -1073,7 +1063,7 @@ void wxFont::SetEncoding( RealizeResource(); } // end of wxFont::SetEncoding -void wxFont::SetNativeFontInfo( +void wxFont::DoSetNativeFontInfo( const wxNativeFontInfo& rInfo ) { @@ -1120,14 +1110,14 @@ int wxFont::GetWeight() const bool wxFont::GetUnderlined() const { - wxCHECK_MSG( Ok(), FALSE, wxT("invalid font") ); + wxCHECK_MSG( Ok(), false, wxT("invalid font") ); return M_FONTDATA->GetUnderlined(); } // end of wxFont::GetUnderlined wxString wxFont::GetFaceName() const { - wxCHECK_MSG( Ok(), wxT(""), wxT("invalid font") ); + wxCHECK_MSG( Ok(), wxEmptyString, wxT("invalid font") ); return M_FONTDATA->GetFaceName(); } // end of wxFont::GetFaceName @@ -1139,29 +1129,23 @@ 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 // // Internal use only method to set the FONTMETRICS array // -void wxFont::SetFM( - PFONTMETRICS pFM -, int nNumFonts -) +void wxFont::SetFM( PFONTMETRICS pFM, int nNumFonts ) { M_FONTDATA->SetFM(pFM); M_FONTDATA->SetNumFonts(nNumFonts); } // end of wxFont::SetFM -void wxFont::SetPS( - HPS hPS -) +void wxFont::SetPS( HPS hPS ) { Unshare(); @@ -1169,4 +1153,3 @@ void wxFont::SetPS( RealizeResource(); } // end of wxFont::SetPS -