wxFont::wxFont(const wxFontInfo& info) { m_refData = new wxFontRefData(info.GetPointSize(), info.GetFamily(), info.GetStyle(), info.GetWeight(), info.IsUnderlined(), info.IsStrikethrough(), info.GetFaceName(), info.GetEncoding()); wxSize pixelSize = info.GetPixelSize(); if ( pixelSize != wxDefaultSize ) SetPixelSize(pixelSize); }
wxFontRefData(const wxFontInfo& info) { if ( info.HasFaceName() ) m_nativeFontInfo.SetFaceName(info.GetFaceName()); else m_nativeFontInfo.SetFamily(info.GetFamily()); if ( info.IsUsingSizeInPixels() ) m_nativeFontInfo.SetPixelSize(info.GetPixelSize()); else m_nativeFontInfo.SetFractionalPointSize(info.GetFractionalPointSize()); m_nativeFontInfo.SetStyle(info.GetStyle()); m_nativeFontInfo.SetWeight(info.GetWeight()); m_nativeFontInfo.SetUnderlined(info.IsUnderlined()); m_nativeFontInfo.SetStrikethrough(info.IsStrikethrough()); }
void TextDrawingContext::SetFont(wxFontInfo &font, const xlColor &color) { if (gc != nullptr) { int style = wxFONTFLAG_NOT_ANTIALIASED; if (font.GetWeight() == wxFONTWEIGHT_BOLD) { style |= wxFONTFLAG_BOLD; } if (font.GetWeight() == wxFONTWEIGHT_LIGHT) { style |= wxFONTFLAG_LIGHT; } if (font.GetStyle() == wxFONTSTYLE_ITALIC) { style |= wxFONTFLAG_ITALIC; } if (font.GetStyle() == wxFONTSTYLE_SLANT) { style |= wxFONTFLAG_SLANT; } if (font.IsUnderlined()) { style |= wxFONTFLAG_UNDERLINED; } if (font.IsStrikethrough()) { style |= wxFONTFLAG_STRIKETHROUGH; } if (style != fontStyle || font.GetPixelSize().y != fontSize || font.GetFaceName() != fontName || color != fontColor) { this->font = gc->CreateFont(font.GetPixelSize().y, font.GetFaceName(), style, color.asWxColor()); fontStyle = style; fontSize = font.GetPixelSize().y; fontName = font.GetFaceName(); fontColor = color; } gc->SetFont(this->font); } else { wxFont f(font); #ifdef __WXMSW__ /* Here is the format for NativeFontInfo on Windows (taken from the source) We want to change lfQuality from 2 to 3 - this disables antialiasing s.Printf(wxS("%d;%ld;%ld;%ld;%ld;%ld;%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);*/ wxString s = f.GetNativeFontInfoDesc(); s.Replace(";2;",";3;",false); f.SetNativeFontInfo(s); #endif dc->SetFont(f); dc->SetTextForeground(color.asWxColor()); } }