// Get attributes from font. bool wxTextAttr::GetFontAttributes(const wxFont& font, int flags) { if (!font.Ok()) return false; if (flags & wxTEXT_ATTR_FONT_SIZE) m_fontSize = font.GetPointSize(); if (flags & wxTEXT_ATTR_FONT_ITALIC) m_fontStyle = font.GetStyle(); if (flags & wxTEXT_ATTR_FONT_WEIGHT) m_fontWeight = font.GetWeight(); if (flags & wxTEXT_ATTR_FONT_UNDERLINE) m_fontUnderlined = font.GetUnderlined(); if (flags & wxTEXT_ATTR_FONT_FACE) m_fontFaceName = font.GetFaceName(); if (flags & wxTEXT_ATTR_FONT_ENCODING) m_fontEncoding = font.GetEncoding(); if (flags & wxTEXT_ATTR_FONT_FAMILY) m_fontFamily = font.GetFamily(); m_flags |= flags; return true; }
void MyFrame::DoChangeFont(const wxFont& font, const wxColour& col) { m_canvas->SetTextFont(font); if ( col.IsOk() ) m_canvas->SetColour(col); m_canvas->Refresh(); m_textctrl->SetFont(font); if ( col.IsOk() ) m_textctrl->SetForegroundColour(col); m_textctrl->Refresh(); // update the state of the bold/italic/underlined menu items wxMenuBar *mbar = GetMenuBar(); if ( mbar ) { mbar->Check(Font_Light, font.GetWeight() == wxFONTWEIGHT_LIGHT); mbar->Check(Font_Bold, font.GetWeight() == wxFONTWEIGHT_BOLD); mbar->Check(Font_Italic, font.GetStyle() == wxFONTSTYLE_ITALIC); #ifndef __WXMSW__ mbar->Check(Font_Slant, font.GetStyle() == wxFONTSTYLE_SLANT); #endif mbar->Check(Font_Underlined, font.GetUnderlined()); mbar->Check(Font_Strikethrough, font.GetStrikethrough()); } }
void wxExStyle::Set(const wxXmlNode* node, const wxString& macro) { SetNo( wxExLexers::Get()->ApplyMacro(node->GetAttribute("no", "0"), macro), macro); m_Value = node->GetNodeContent().Strip(wxString::both); #ifdef wxExUSE_CPP0X const auto it = wxExLexers::Get()->GetThemeMacros().find(m_Value); #else std::map<wxString, wxString>::const_iterator it = wxExLexers::Get()->GetThemeMacros().find(m_Value); #endif if (it != wxExLexers::Get()->GetThemeMacros().end()) { wxString value = it->second; if (value.Contains("default-font")) { const wxFont font(wxConfigBase::Get()->ReadObject(_("Default font"), wxSystemSettings::GetFont(wxSYS_OEM_FIXED_FONT))); value.Replace("default-font", wxString::Format("face:%s,size:%d", font.GetFaceName().c_str(), font.GetPointSize())); const wxFontStyle style = font.GetStyle(); if (style == wxFONTSTYLE_ITALIC || style == wxFONTSTYLE_SLANT) { value += ",italic"; } if (font.GetWeight() == wxFONTWEIGHT_BOLD) { value += ",bold"; } if (font.GetUnderlined()) { value += ",underline"; } } m_Value = value; } if (!IsOk()) { wxLogError(_("Illegal style: %s on line: %d"), m_Value.c_str(), node->GetLineNumber()); } }
void ColoursAndFontsManager::SetGlobalFont(const wxFont& font) { this->m_globalFont = font; // Loop for every lexer and update the font per style std::for_each(m_allLexers.begin(), m_allLexers.end(), [&](LexerConf::Ptr_t lexer) { StyleProperty::Map_t& props = lexer->GetLexerProperties(); StyleProperty::Map_t::iterator iter = props.begin(); for(; iter != props.end(); ++iter) { StyleProperty& sp = iter->second; sp.SetFaceName(font.GetFaceName()); sp.SetFontSize(font.GetPointSize()); sp.SetBold(font.GetWeight() == wxFONTWEIGHT_BOLD); sp.SetItalic(font.GetStyle() == wxFONTSTYLE_ITALIC); sp.SetUnderlined(font.GetUnderlined()); } }); }
bool wxWindowSettings::SaveFont(wxConfigBase& config, const wxString& windowName, const wxFont& font) { if (!font.Ok()) return FALSE; wxString pathBase(wxT("/Fonts/")); pathBase += windowName; pathBase += wxT("/"); config.Write(pathBase + wxT("PointSize"), (long) font.GetPointSize()); config.Write(pathBase + wxT("Family"), (long) font.GetFamily()); config.Write(pathBase + wxT("Style"), (long) font.GetStyle()); config.Write(pathBase + wxT("Weight"), (long) font.GetWeight()); config.Write(pathBase + wxT("Underlined"), (long) font.GetUnderlined()); config.Write(pathBase + wxT("FaceName"), font.GetFaceName()); return TRUE; }
// Get attributes from font. bool wxTextAttr::GetFontAttributes(const wxFont& font, int flags) { if (!font.IsOk()) return false; if (flags & wxTEXT_ATTR_FONT_SIZE) m_fontSize = font.GetPointSize(); if (flags & wxTEXT_ATTR_FONT_ITALIC) m_fontStyle = font.GetStyle(); if (flags & wxTEXT_ATTR_FONT_WEIGHT) m_fontWeight = font.GetWeight(); if (flags & wxTEXT_ATTR_FONT_UNDERLINE) m_fontUnderlined = font.GetUnderlined(); if (flags & wxTEXT_ATTR_FONT_STRIKETHROUGH) m_fontStrikethrough = font.GetStrikethrough(); if (flags & wxTEXT_ATTR_FONT_FACE) m_fontFaceName = font.GetFaceName(); if (flags & wxTEXT_ATTR_FONT_ENCODING) m_fontEncoding = font.GetEncoding(); if (flags & wxTEXT_ATTR_FONT_FAMILY) { // wxFont might not know its family, avoid setting m_fontFamily to an // invalid value and rather pretend that we don't have any font family // information at all in this case const wxFontFamily fontFamily = font.GetFamily(); if ( fontFamily == wxFONTFAMILY_UNKNOWN ) flags &= ~wxTEXT_ATTR_FONT_FAMILY; else m_fontFamily = fontFamily; } m_flags |= flags; return true; }
bool wxFontBase::operator==(const wxFont& font) const { // either it is the same font, i.e. they share the same common data or they // have different ref datas but still describe the same font return IsSameAs(font) || ( IsOk() == font.IsOk() && GetPointSize() == font.GetPointSize() && // in wxGTK1 GetPixelSize() calls GetInternalFont() which uses // operator==() resulting in infinite recursion so we can't use it // in that port #if !defined(__WXGTK__) || defined(__WXGTK20__) GetPixelSize() == font.GetPixelSize() && #endif GetFamily() == font.GetFamily() && GetStyle() == font.GetStyle() && GetWeight() == font.GetWeight() && GetUnderlined() == font.GetUnderlined() && GetFaceName().IsSameAs(font.GetFaceName(), false) && GetEncoding() == font.GetEncoding() ); }
bool wxStaticText::SetFont( const wxFont &font ) { const bool wasUnderlined = GetFont().GetUnderlined(); bool ret = wxControl::SetFont(font); if ( font.GetUnderlined() != wasUnderlined ) { // the underlines for mnemonics are incompatible with using attributes // so turn them off when setting underlined font and restore them when // unsetting it gtk_label_set_use_underline(GTK_LABEL(m_widget), wasUnderlined); if ( wasUnderlined ) { // it's not underlined any more, remove the attributes we set gtk_label_set_attributes(GTK_LABEL(m_widget), NULL); } else // the text is underlined now { PangoAttrList *attrs = pango_attr_list_new(); PangoAttribute *a = pango_attr_underline_new(PANGO_UNDERLINE_SINGLE); a->start_index = 0; a->end_index = (guint)-1; pango_attr_list_insert(attrs, a); gtk_label_set_attributes(GTK_LABEL(m_widget), attrs); pango_attr_list_unref(attrs); } } // adjust the label size to the new label unless disabled if (!HasFlag(wxST_NO_AUTORESIZE)) { SetSize( GetBestSize() ); } return ret; }
// Get attributes from font. bool wxTextAttr::GetFontAttributes(const wxFont& font, int flags) { if (!font.IsOk()) return false; // If we pass both pixel and point size attributes, this is an indication // to choose the most appropriate units. if ((flags & wxTEXT_ATTR_FONT) == wxTEXT_ATTR_FONT) { if (font.IsUsingSizeInPixels()) { m_fontSize = font.GetPixelSize().y; flags &= ~wxTEXT_ATTR_FONT_POINT_SIZE; } else { m_fontSize = font.GetPointSize(); flags &= ~wxTEXT_ATTR_FONT_PIXEL_SIZE; } } else if (flags & wxTEXT_ATTR_FONT_POINT_SIZE) { m_fontSize = font.GetPointSize(); flags &= ~wxTEXT_ATTR_FONT_PIXEL_SIZE; } else if (flags & wxTEXT_ATTR_FONT_PIXEL_SIZE) { m_fontSize = font.GetPixelSize().y; } if (flags & wxTEXT_ATTR_FONT_ITALIC) m_fontStyle = font.GetStyle(); if (flags & wxTEXT_ATTR_FONT_WEIGHT) m_fontWeight = font.GetWeight(); if (flags & wxTEXT_ATTR_FONT_UNDERLINE) m_fontUnderlined = font.GetUnderlined(); if (flags & wxTEXT_ATTR_FONT_STRIKETHROUGH) m_fontStrikethrough = font.GetStrikethrough(); if (flags & wxTEXT_ATTR_FONT_FACE) m_fontFaceName = font.GetFaceName(); if (flags & wxTEXT_ATTR_FONT_ENCODING) m_fontEncoding = font.GetEncoding(); if (flags & wxTEXT_ATTR_FONT_FAMILY) { // wxFont might not know its family, avoid setting m_fontFamily to an // invalid value and rather pretend that we don't have any font family // information at all in this case const wxFontFamily fontFamily = font.GetFamily(); if ( fontFamily == wxFONTFAMILY_UNKNOWN ) flags &= ~wxTEXT_ATTR_FONT_FAMILY; else m_fontFamily = fontFamily; } m_flags |= flags; return true; }