X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e765d7ee7309149e8be24e29466a2b2c8ff7b3ae..7198c3368055d88249a338eb33b21f051f674806:/src/common/fontcmn.cpp diff --git a/src/common/fontcmn.cpp b/src/common/fontcmn.cpp index 01587a796f..d54521c449 100644 --- a/src/common/fontcmn.cpp +++ b/src/common/fontcmn.cpp @@ -29,6 +29,7 @@ #ifndef WX_PRECOMP #include "wx/dc.h" #include "wx/intl.h" + #include "wx/math.h" #include "wx/dcscreen.h" #include "wx/log.h" #include "wx/gdicmn.h" @@ -491,6 +492,29 @@ bool wxFontBase::SetFaceName(const wxString& facename) return true; } +void wxFontBase::SetSymbolicSize(wxFontSymbolicSize size) +{ + SetSymbolicSizeRelativeTo(size, wxNORMAL_FONT->GetPointSize()); +} + +/* static */ +int wxFontBase::AdjustToSymbolicSize(wxFontSymbolicSize size, int base) +{ + // Using a fixed factor (1.2, from CSS2) is a bad idea as explained at + // http://www.w3.org/TR/CSS21/fonts.html#font-size-props so use the values + // from http://style.cleverchimp.com/font_size_intervals/altintervals.html + // instead. + static const float factors[] = { 0.60f, 0.75f, 0.89f, 1.f, 1.2f, 1.5f, 2.f }; + + wxCOMPILE_TIME_ASSERT + ( + WXSIZEOF(factors) == wxFONTSIZE_XX_LARGE - wxFONTSIZE_XX_SMALL + 1, + WrongFontSizeFactorsSize + ); + + return wxRound(factors[size - wxFONTSIZE_XX_SMALL]*base); +} + wxFont& wxFont::MakeBold() { SetWeight(wxFONTWEIGHT_BOLD); @@ -513,7 +537,20 @@ wxFont& wxFont::MakeItalic() wxFont wxFont::Italic() const { wxFont font(*this); - font.SetStyle(wxFONTSTYLE_ITALIC); + font.MakeItalic(); + return font; +} + +wxFont& wxFont::MakeUnderlined() +{ + SetUnderlined(true); + return *this; +} + +wxFont wxFont::Underlined() const +{ + wxFont font(*this); + font.MakeUnderlined(); return font; } @@ -984,7 +1021,7 @@ bool wxNativeFontInfo::FromUserString(const wxString& s) SetFamily(family); } // NB: the check on the facename is implemented in wxFontBase::SetFaceName - // and not in wxNativeFontInfo::SetFaceName thus we need to explicitely + // and not in wxNativeFontInfo::SetFaceName thus we need to explicitly // call here wxFontEnumerator::IsValidFacename else if ( #if wxUSE_FONTENUM @@ -1003,7 +1040,7 @@ bool wxNativeFontInfo::FromUserString(const wxString& s) if ( !face.empty() ) { // NB: the check on the facename is implemented in wxFontBase::SetFaceName - // and not in wxNativeFontInfo::SetFaceName thus we need to explicitely + // and not in wxNativeFontInfo::SetFaceName thus we need to explicitly // call here wxFontEnumerator::IsValidFacename if ( #if wxUSE_FONTENUM