Add support for stricken-through fonts.

Support stricken-through fonts in wxMSW and wxGTK (including special support
in wxStaticText and wxTextCtrl).

Closes #9907.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70446 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2012-01-23 11:28:28 +00:00
parent 0634700a96
commit c7a49742ec
18 changed files with 361 additions and 101 deletions

View File

@@ -63,7 +63,7 @@ public:
wxFontRefData()
{
Init(-1, wxSize(0,0), false, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL,
wxFONTWEIGHT_NORMAL, false, wxEmptyString,
wxFONTWEIGHT_NORMAL, false, false, wxEmptyString,
wxFONTENCODING_DEFAULT);
}
@@ -74,11 +74,12 @@ public:
wxFontStyle style,
wxFontWeight weight,
bool underlined,
bool strikethrough,
const wxString& faceName,
wxFontEncoding encoding)
{
Init(size, pixelSize, sizeUsingPixels, family, style, weight,
underlined, faceName, encoding);
underlined, strikethrough, faceName, encoding);
}
wxFontRefData(const wxNativeFontInfo& info, WXHFONT hFont = 0)
@@ -134,6 +135,11 @@ public:
return m_nativeFontInfo.GetUnderlined();
}
bool GetStrikethrough() const
{
return m_nativeFontInfo.GetStrikethrough();
}
wxString GetFaceName() const
{
wxString facename = m_nativeFontInfo.GetFaceName();
@@ -225,6 +231,13 @@ public:
m_nativeFontInfo.SetUnderlined(underlined);
}
void SetStrikethrough(bool strikethrough)
{
Free();
m_nativeFontInfo.SetStrikethrough(strikethrough);
}
void SetEncoding(wxFontEncoding encoding)
{
Free();
@@ -262,6 +275,7 @@ protected:
wxFontStyle style,
wxFontWeight weight,
bool underlined,
bool strikethrough,
const wxString& faceName,
wxFontEncoding encoding);
@@ -336,6 +350,7 @@ void wxFontRefData::Init(int pointSize,
wxFontStyle style,
wxFontWeight weight,
bool underlined,
bool strikethrough,
const wxString& faceName,
wxFontEncoding encoding)
{
@@ -350,6 +365,7 @@ void wxFontRefData::Init(int pointSize,
SetStyle(style);
SetWeight(weight);
SetUnderlined(underlined);
SetStrikethrough(strikethrough);
// set the family/facename
SetFamily(family);
@@ -463,6 +479,11 @@ bool wxNativeFontInfo::GetUnderlined() const
return lf.lfUnderline != 0;
}
bool wxNativeFontInfo::GetStrikethrough() const
{
return lf.lfStrikeOut != 0;
}
wxString wxNativeFontInfo::GetFaceName() const
{
return lf.lfFaceName;
@@ -583,6 +604,11 @@ void wxNativeFontInfo::SetUnderlined(bool underlined)
lf.lfUnderline = underlined;
}
void wxNativeFontInfo::SetStrikethrough(bool strikethrough)
{
lf.lfStrikeOut = strikethrough;
}
bool wxNativeFontInfo::SetFaceName(const wxString& facename)
{
wxStrlcpy(lf.lfFaceName, facename.c_str(), WXSIZEOF(lf.lfFaceName));
@@ -789,7 +815,7 @@ wxFont::wxFont(int pointSize,
GetStyleFromFlags(flags),
GetWeightFromFlags(flags),
GetUnderlinedFromFlags(flags),
face, encoding);
false, face, encoding);
}
bool wxFont::Create(const wxNativeFontInfo& info, WXHFONT hFont)
@@ -822,7 +848,7 @@ bool wxFont::DoCreate(int pointSize,
m_refData = new wxFontRefData(pointSize, pixelSize, sizeUsingPixels,
family, style, weight,
underlined, faceName, encoding);
underlined, false, faceName, encoding);
return RealizeResource();
}
@@ -944,6 +970,13 @@ void wxFont::SetUnderlined(bool underlined)
M_FONTDATA->SetUnderlined(underlined);
}
void wxFont::SetStrikethrough(bool strikethrough)
{
AllocExclusive();
M_FONTDATA->SetStrikethrough(strikethrough);
}
void wxFont::SetEncoding(wxFontEncoding encoding)
{
AllocExclusive();
@@ -1009,6 +1042,13 @@ bool wxFont::GetUnderlined() const
return M_FONTDATA->GetUnderlined();
}
bool wxFont::GetStrikethrough() const
{
wxCHECK_MSG( IsOk(), false, wxT("invalid font") );
return M_FONTDATA->GetStrikethrough();
}
wxString wxFont::GetFaceName() const
{
wxCHECK_MSG( IsOk(), wxEmptyString, wxT("invalid font") );