X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/33ac7e6f01acbac1cff0ad400d8ea7f0bfd0a62f..29149a64916d6fdc53e445adca9ef83bc58fb6c3:/src/msw/font.cpp?ds=sidebyside diff --git a/src/msw/font.cpp b/src/msw/font.cpp index cd97c822e5..a2a73706ed 100644 --- a/src/msw/font.cpp +++ b/src/msw/font.cpp @@ -41,6 +41,7 @@ #include "wx/tokenzr.h" #include "wx/msw/private.h" +#include "wx/tokenzr.h" IMPLEMENT_DYNAMIC_CLASS(wxFont, wxGDIObject) @@ -644,11 +645,115 @@ wxFontEncoding wxFont::GetEncoding() const return M_FONTDATA->m_encoding; } -wxNativeFontInfo *wxFont::GetNativeFontInfo() const +// ---------------------------------------------------------------------------- +// wxNativeFontInfo +// ---------------------------------------------------------------------------- + +bool wxNativeFontInfo::FromString(const wxString& s) { - if( M_FONTDATA->m_nativeFontInfoOk ) - return new wxNativeFontInfo(M_FONTDATA->m_nativeFontInfo); + long l; + + wxStringTokenizer tokenizer(s, _T(";")); + + wxString token = tokenizer.GetNextToken(); + // + // Ignore the version for now + // - return 0; + token = tokenizer.GetNextToken(); + if ( !token.ToLong(&l) ) + return FALSE; + lf.lfHeight = l; + + token = tokenizer.GetNextToken(); + if ( !token.ToLong(&l) ) + return FALSE; + lf.lfWidth = l; + + token = tokenizer.GetNextToken(); + if ( !token.ToLong(&l) ) + return FALSE; + lf.lfEscapement = l; + + token = tokenizer.GetNextToken(); + if ( !token.ToLong(&l) ) + return FALSE; + lf.lfOrientation = l; + + token = tokenizer.GetNextToken(); + if ( !token.ToLong(&l) ) + return FALSE; + lf.lfWeight = l; + + token = tokenizer.GetNextToken(); + if ( !token.ToLong(&l) ) + return FALSE; + lf.lfItalic = (BYTE)l; + + token = tokenizer.GetNextToken(); + if ( !token.ToLong(&l) ) + return FALSE; + lf.lfUnderline = (BYTE)l; + + token = tokenizer.GetNextToken(); + if ( !token.ToLong(&l) ) + return FALSE; + lf.lfStrikeOut = (BYTE)l; + + token = tokenizer.GetNextToken(); + if ( !token.ToLong(&l) ) + return FALSE; + lf.lfCharSet = (BYTE)l; + + token = tokenizer.GetNextToken(); + if ( !token.ToLong(&l) ) + return FALSE; + lf.lfOutPrecision = (BYTE)l; + + token = tokenizer.GetNextToken(); + if ( !token.ToLong(&l) ) + return FALSE; + lf.lfClipPrecision = (BYTE)l; + + token = tokenizer.GetNextToken(); + if ( !token.ToLong(&l) ) + return FALSE; + lf.lfQuality = (BYTE)l; + + token = tokenizer.GetNextToken(); + if ( !token.ToLong(&l) ) + return FALSE; + lf.lfPitchAndFamily = (BYTE)l; + + token = tokenizer.GetNextToken(); + if(!token) + return FALSE; + wxStrcpy(lf.lfFaceName, token.c_str()); + + return TRUE; +} + +wxString wxNativeFontInfo::ToString() const +{ + wxString s; + + s.Printf(_T("%d;%d;%d;%d;%d;%d;%d;%d;%d;%d;%d;%d;%d;%d;%s"), + 0, // version, in case we want to change the format later + lf.lfHeight, + lf.lfWidth, + lf.lfEscapement, + lf.lfOrientation, + lf.lfWeight, + lf.lfItalic, + lf.lfUnderline, + lf.lfStrikeOut, + lf.lfCharSet, + lf.lfOutPrecision, + lf.lfClipPrecision, + lf.lfQuality, + lf.lfPitchAndFamily, + lf.lfFaceName); + + return s; }