add more methods to wxNativeFontInfo: To/FromUserString and all the
accessor methods and implemented some of them git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@13156 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -153,6 +153,91 @@ wxString wxNativeEncodingInfo::ToString() const
|
||||
return s;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxNativeFontInfo
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
void wxNativeFontInfo::Init()
|
||||
{
|
||||
xFontName.clear();
|
||||
}
|
||||
|
||||
bool wxNativeFontInfo::FromString(const wxString& s)
|
||||
{
|
||||
wxStringTokenizer tokenizer(s, _T(";"));
|
||||
|
||||
// check the version
|
||||
wxString token = tokenizer.GetNextToken();
|
||||
if ( token != _T('0') )
|
||||
return FALSE;
|
||||
|
||||
xFontName = tokenizer.GetNextToken();
|
||||
|
||||
// this should be the end
|
||||
if ( tokenizer.HasMoreTokens() )
|
||||
return FALSE;
|
||||
|
||||
return FromXFontName(xFontName);
|
||||
}
|
||||
|
||||
wxString wxNativeFontInfo::ToString() const
|
||||
{
|
||||
// 0 is the version
|
||||
return wxString::Format(_T("%d;%s"), 0, GetXFontName().c_str());
|
||||
}
|
||||
|
||||
bool wxNativeFontInfo::FromUserString(const wxString& s)
|
||||
{
|
||||
return FromXFontName(s);
|
||||
}
|
||||
|
||||
wxString wxNativeFontInfo::ToUserString() const
|
||||
{
|
||||
return GetXFontName();
|
||||
}
|
||||
|
||||
bool wxNativeFontInfo::FromXFontName(const wxString& xFontName)
|
||||
{
|
||||
// TODO: we should be able to handle the font aliases here, but how?
|
||||
wxStringTokenizer tokenizer(xFontName, _T("-"), wxTOKEN_STRTOK);
|
||||
|
||||
for ( size_t n = 0; n < WXSIZEOF(fontElements); n++ )
|
||||
{
|
||||
if ( !tokenizer.HasMoreTokens() )
|
||||
{
|
||||
// not enough elements in the XLFD - or maybe an alias
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
fontElements[n] = tokenizer.GetNextToken();
|
||||
}
|
||||
|
||||
// this should be all
|
||||
return !tokenizer.HasMoreTokens();
|
||||
}
|
||||
|
||||
wxString wxNativeFontInfo::GetXFontName() const
|
||||
{
|
||||
if ( xFontName.empty() )
|
||||
{
|
||||
for ( size_t n = 0; n < WXSIZEOF(fontElements); n++ )
|
||||
{
|
||||
// replace the non specified elements with '*' except for the
|
||||
// additional style which is usually just omitted
|
||||
wxString elt = fontElements[n];
|
||||
if ( elt.empty() && n != 5 )
|
||||
{
|
||||
elt = _T('*');
|
||||
}
|
||||
|
||||
// const_cast
|
||||
((wxNativeFontInfo *)this)->xFontName << _T('-') << elt;
|
||||
}
|
||||
}
|
||||
|
||||
return xFontName;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// common functions
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -228,7 +313,7 @@ bool wxGetNativeFontEncoding(wxFontEncoding encoding,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
info->encoding = encoding;
|
||||
info->encoding = encoding;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
Reference in New Issue
Block a user