X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/792339b9639e9b42ce9c3af13244ab6b0f282ba1..ad653fa23069c5d9378247084f03c9a718c3ad62:/src/msw/font.cpp diff --git a/src/msw/font.cpp b/src/msw/font.cpp index 376b8b3b87..ddeef61886 100644 --- a/src/msw/font.cpp +++ b/src/msw/font.cpp @@ -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)); @@ -778,6 +804,20 @@ wxFont::wxFont(const wxString& fontdesc) (void)Create(info); } +wxFont::wxFont(const wxFontInfo& info) +{ + m_refData = new wxFontRefData(info.GetPointSize(), + info.GetPixelSize(), + info.IsUsingSizeInPixels(), + info.GetFamily(), + info.GetStyle(), + info.GetWeight(), + info.IsUnderlined(), + info.IsStrikethrough(), + info.GetFaceName(), + info.GetEncoding()); +} + bool wxFont::Create(const wxNativeFontInfo& info, WXHFONT hFont) { UnRef(); @@ -801,14 +841,14 @@ bool wxFont::DoCreate(int pointSize, // wxDEFAULT is a valid value for the font size too so we must treat it // specially here (otherwise the size would be 70 == wxDEFAULT value) - if ( pointSize == wxDEFAULT ) + if ( pointSize == wxDEFAULT || pointSize == -1 ) { pointSize = wxNORMAL_FONT->GetPointSize(); } m_refData = new wxFontRefData(pointSize, pixelSize, sizeUsingPixels, family, style, weight, - underlined, faceName, encoding); + underlined, false, faceName, encoding); return RealizeResource(); } @@ -930,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(); @@ -995,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") );