// Remove attributes bool wxTextAttr::RemoveStyle(wxTextAttr& destStyle, const wxTextAttr& style) { int flags = style.GetFlags(); int destFlags = destStyle.GetFlags(); destStyle.SetFlags(destFlags & ~flags); return true; }
/// Split into paragraph and character styles bool wxTextAttr::SplitParaCharStyles(const wxTextAttr& style, wxTextAttr& parStyle, wxTextAttr& charStyle) { wxTextAttr defaultCharStyle1(style); wxTextAttr defaultParaStyle1(style); defaultCharStyle1.SetFlags(defaultCharStyle1.GetFlags()&wxTEXT_ATTR_CHARACTER); defaultParaStyle1.SetFlags(defaultParaStyle1.GetFlags()&wxTEXT_ATTR_PARAGRAPH); charStyle.Apply(defaultCharStyle1); parStyle.Apply(defaultParaStyle1); return true; }
TranslDlg::TranslDlg(wxWindow *parent) : wxPanel(parent) {//===================================================== int height; int width; int x,y; int font_size; int height_ph = 350; wxTextAttr attr; wxFont font = wxFont(12,wxFONTFAMILY_ROMAN,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_LIGHT,false,_T(""),wxFONTENCODING_SYSTEM); attr.SetFont(font); wxClientDisplayRect(&x,&y,&width, &height); #ifdef PLATFORM_WINDOWS if(height <= 768) height_ph = height - 416; #else if(height <= 800) height_ph = 280; #endif t_source = new wxTextCtrl(this,T_SOURCE,_T(""),wxPoint(0,4), wxSize(298,250),wxTE_MULTILINE,wxDefaultValidator,_T("Text input window")); t_source->SetDefaultStyle(attr); t_phonetic = new wxTextCtrl(this,T_PHONETIC,_T(""),wxPoint(0,262), wxSize(298,height_ph),wxTE_MULTILINE | wxTE_READONLY, wxDefaultValidator,_T("Phoneme translation window")); style_phonetic = t_phonetic->GetDefaultStyle(); font_phonetic = style_phonetic.GetFont(); font_size = font_phonetic.GetPointSize(); font_phonetic_large = font_phonetic; style_phonetic_large = style_phonetic; //font_phonetic_large.SetFamily(wxFONTFAMILY_SWISS); font_phonetic_large.SetPointSize(font_size+1); style_phonetic_large.SetFont(font_phonetic_large); y = height_ph + 270; t_translate = new wxButton(this,T_TRANSLATE,_T("Translate"),wxPoint(4,y)); t_translate = new wxButton(this,T_RULES,_T("Show Rules"),wxPoint(4,y+32)); t_translate = new wxButton(this,T_TRANSLATE_IPA,_T("Show IPA"),wxPoint(100,y+32)); t_process = new wxButton(this,T_PROCESS,_T("Speak"),wxPoint(100,y)); t_source->SetFocus(); } // end of TransDlg::TransDlg
void PrintTextAttr(wxTextAttr &textattr){ wxFont font = textattr.GetFont(); printf("TextAttr is:\n"); printf("\tName: %s\n", font.GetFaceName().ToAscii()); printf("\tSize: %d\n", font.GetPointSize()); printf("\tStyle:%s%s%s\n", font.GetWeight() == wxFONTWEIGHT_BOLD? " Bold" : "", font.GetStyle() == wxFONTSTYLE_ITALIC? " Itallic" : "", font.GetUnderlined()? " Underlined" : ""); wxColor textcolor = textattr.GetTextColour(); wxColor bgcolor = textattr.GetBackgroundColour(); printf("\ttextcolor: %02x%02x%02x\n", textcolor.Red(), textcolor.Green(), textcolor.Blue()); printf("\tbgcolor: %02x%02x%02x\n", bgcolor.Red(), bgcolor.Green(), bgcolor.Blue()); }
bool wxTextCtrl::SetStyle( long start, long end, const wxTextAttr& style ) { if ( m_windowStyle & wxTE_MULTILINE ) { if ( style.IsDefault() ) { // nothing to do return true; } // VERY dirty way to do that - removes the required text and re-adds it // with styling (FIXME) gint l = gtk_text_get_length( GTK_TEXT(m_text) ); wxCHECK_MSG( start >= 0 && end <= l, false, wxT("invalid range in wxTextCtrl::SetStyle") ); gint old_pos = gtk_editable_get_position( GTK_EDITABLE(m_text) ); char *text = gtk_editable_get_chars( GTK_EDITABLE(m_text), start, end ); wxString tmp(text,*wxConvCurrent); g_free( text ); gtk_editable_delete_text( GTK_EDITABLE(m_text), start, end ); gtk_editable_set_position( GTK_EDITABLE(m_text), start ); #if wxUSE_UNICODE wxWX2MBbuf buf = tmp.mbc_str(); const char *txt = buf; size_t txtlen = strlen(buf); #else const char *txt = tmp; size_t txtlen = tmp.length(); #endif // use the attributes from style which are set in it and fall back // first to the default style and then to the text control default // colours for the others wxGtkTextInsert(m_text, wxTextAttr::Combine(style, m_defaultStyle, this), txt, txtlen); /* does not seem to help under GTK+ 1.2 !!! gtk_editable_set_position( GTK_EDITABLE(m_text), old_pos ); */ SetInsertionPoint( old_pos ); return true; } // else single line // cannot do this for GTK+'s Entry widget return false; }
// change default text attributes bool wxTextCtrlBase::SetDefaultStyle(const wxTextAttr& style) { // keep the old attributes if the new style doesn't specify them unless the // new style is empty - then reset m_defaultStyle (as there is no other way // to do it) if ( style.IsDefault() ) m_defaultStyle = style; else m_defaultStyle = wxTextAttr::Combine(style, m_defaultStyle, this); return true; }
static void wxGtkTextInsert(GtkWidget *text, const wxTextAttr& attr, const char *txt, size_t len) { wxFont tmpFont; GdkFont *font; if (attr.HasFont()) { tmpFont = attr.GetFont(); // FIXME: if this crashes because tmpFont goes out of scope and the GdkFont is // deleted, then we need to call gdk_font_ref on font. // This is because attr.GetFont() now returns a temporary font since wxTextAttr // no longer stores a wxFont object, for efficiency. font = tmpFont.GetInternalFont(); } else font = NULL; GdkColor *colFg = attr.HasTextColour() ? attr.GetTextColour().GetColor() : NULL; GdkColor *colBg = attr.HasBackgroundColour() ? attr.GetBackgroundColour().GetColor() : NULL; gtk_text_insert( GTK_TEXT(text), font, colFg, colBg, txt, len ); }
// Remove attributes bool wxTextAttr::RemoveStyle(wxTextAttr& destStyle, const wxTextAttr& style) { int flags = style.GetFlags(); int destFlags = destStyle.GetFlags(); // We must treat text effects specially, since we must remove only some. if (style.HasTextEffects() && (style.GetTextEffectFlags() != 0)) { int newTextEffectFlags = destStyle.GetTextEffectFlags() & ~style.GetTextEffectFlags(); int newTextEffects = destStyle.GetTextEffects() & ~style.GetTextEffectFlags(); destStyle.SetTextEffects(newTextEffects); destStyle.SetTextEffectFlags(newTextEffectFlags); // Don't remove wxTEXT_ATTR_EFFECTS unless the resulting flags are zero if (newTextEffectFlags != 0) flags &= ~wxTEXT_ATTR_EFFECTS; } destStyle.SetFlags(destFlags & ~flags); return true; }
static void wxGtkTextInsert(GtkWidget *text, const wxTextAttr& attr, const char *txt, size_t len) { GdkFont *font = attr.HasFont() ? attr.GetFont().GetInternalFont() : NULL; GdkColor *colFg = attr.HasTextColour() ? attr.GetTextColour().GetColor() : NULL; GdkColor *colBg = attr.HasBackgroundColour() ? attr.GetBackgroundColour().GetColor() : NULL; gtk_text_insert( GTK_TEXT(text), font, colFg, colBg, txt, len ); }
/* static */ wxTextAttr wxTextAttr::Combine(const wxTextAttr& attr, const wxTextAttr& attrDef, const wxTextCtrlBase *text) { wxFont font; if (attr.HasFont()) font = attr.GetFont(); if ( !font.Ok() ) { if (attrDef.HasFont()) font = attrDef.GetFont(); if ( text && !font.Ok() ) font = text->GetFont(); } wxColour colFg = attr.GetTextColour(); if ( !colFg.Ok() ) { colFg = attrDef.GetTextColour(); if ( text && !colFg.Ok() ) colFg = text->GetForegroundColour(); } wxColour colBg = attr.GetBackgroundColour(); if ( !colBg.Ok() ) { colBg = attrDef.GetBackgroundColour(); if ( text && !colBg.Ok() ) colBg = text->GetBackgroundColour(); } wxTextAttr newAttr(colFg, colBg, font); if (attr.HasAlignment()) newAttr.SetAlignment(attr.GetAlignment()); else if (attrDef.HasAlignment()) newAttr.SetAlignment(attrDef.GetAlignment()); if (attr.HasTabs()) newAttr.SetTabs(attr.GetTabs()); else if (attrDef.HasTabs()) newAttr.SetTabs(attrDef.GetTabs()); if (attr.HasLeftIndent()) newAttr.SetLeftIndent(attr.GetLeftIndent(), attr.GetLeftSubIndent()); else if (attrDef.HasLeftIndent()) newAttr.SetLeftIndent(attrDef.GetLeftIndent(), attr.GetLeftSubIndent()); if (attr.HasRightIndent()) newAttr.SetRightIndent(attr.GetRightIndent()); else if (attrDef.HasRightIndent()) newAttr.SetRightIndent(attrDef.GetRightIndent()); return newAttr; }
bool wxTextAttr::Apply(const wxTextAttr& style, const wxTextAttr* compareWith) { wxTextAttr& destStyle = (*this); if (style.HasFontWeight()) { if (!(compareWith && compareWith->HasFontWeight() && compareWith->GetFontWeight() == style.GetFontWeight())) destStyle.SetFontWeight(style.GetFontWeight()); } if (style.HasFontSize()) { if (!(compareWith && compareWith->HasFontSize() && compareWith->GetFontSize() == style.GetFontSize())) destStyle.SetFontSize(style.GetFontSize()); } if (style.HasFontItalic()) { if (!(compareWith && compareWith->HasFontItalic() && compareWith->GetFontStyle() == style.GetFontStyle())) destStyle.SetFontStyle(style.GetFontStyle()); } if (style.HasFontUnderlined()) { if (!(compareWith && compareWith->HasFontUnderlined() && compareWith->GetFontUnderlined() == style.GetFontUnderlined())) destStyle.SetFontUnderlined(style.GetFontUnderlined()); } if (style.HasFontFaceName()) { if (!(compareWith && compareWith->HasFontFaceName() && compareWith->GetFontFaceName() == style.GetFontFaceName())) destStyle.SetFontFaceName(style.GetFontFaceName()); } if (style.HasFontEncoding()) { if (!(compareWith && compareWith->HasFontEncoding() && compareWith->GetFontEncoding() == style.GetFontEncoding())) destStyle.SetFontEncoding(style.GetFontEncoding()); } if (style.HasFontFamily()) { if (!(compareWith && compareWith->HasFontFamily() && compareWith->GetFontFamily() == style.GetFontFamily())) destStyle.SetFontFamily(style.GetFontFamily()); } if (style.GetTextColour().Ok() && style.HasTextColour()) { if (!(compareWith && compareWith->HasTextColour() && compareWith->GetTextColour() == style.GetTextColour())) destStyle.SetTextColour(style.GetTextColour()); } if (style.GetBackgroundColour().Ok() && style.HasBackgroundColour()) { if (!(compareWith && compareWith->HasBackgroundColour() && compareWith->GetBackgroundColour() == style.GetBackgroundColour())) destStyle.SetBackgroundColour(style.GetBackgroundColour()); } if (style.HasAlignment()) { if (!(compareWith && compareWith->HasAlignment() && compareWith->GetAlignment() == style.GetAlignment())) destStyle.SetAlignment(style.GetAlignment()); } if (style.HasTabs()) { if (!(compareWith && compareWith->HasTabs() && TabsEq(compareWith->GetTabs(), style.GetTabs()))) destStyle.SetTabs(style.GetTabs()); } if (style.HasLeftIndent()) { if (!(compareWith && compareWith->HasLeftIndent() && compareWith->GetLeftIndent() == style.GetLeftIndent() && compareWith->GetLeftSubIndent() == style.GetLeftSubIndent())) destStyle.SetLeftIndent(style.GetLeftIndent(), style.GetLeftSubIndent()); } if (style.HasRightIndent()) { if (!(compareWith && compareWith->HasRightIndent() && compareWith->GetRightIndent() == style.GetRightIndent())) destStyle.SetRightIndent(style.GetRightIndent()); } if (style.HasParagraphSpacingAfter()) { if (!(compareWith && compareWith->HasParagraphSpacingAfter() && compareWith->GetParagraphSpacingAfter() == style.GetParagraphSpacingAfter())) destStyle.SetParagraphSpacingAfter(style.GetParagraphSpacingAfter()); } if (style.HasParagraphSpacingBefore()) { if (!(compareWith && compareWith->HasParagraphSpacingBefore() && compareWith->GetParagraphSpacingBefore() == style.GetParagraphSpacingBefore())) destStyle.SetParagraphSpacingBefore(style.GetParagraphSpacingBefore()); } if (style.HasLineSpacing()) { if (!(compareWith && compareWith->HasLineSpacing() && compareWith->GetLineSpacing() == style.GetLineSpacing())) destStyle.SetLineSpacing(style.GetLineSpacing()); } if (style.HasCharacterStyleName()) { if (!(compareWith && compareWith->HasCharacterStyleName() && compareWith->GetCharacterStyleName() == style.GetCharacterStyleName())) destStyle.SetCharacterStyleName(style.GetCharacterStyleName()); } if (style.HasParagraphStyleName()) { if (!(compareWith && compareWith->HasParagraphStyleName() && compareWith->GetParagraphStyleName() == style.GetParagraphStyleName())) destStyle.SetParagraphStyleName(style.GetParagraphStyleName()); } if (style.HasListStyleName()) { if (!(compareWith && compareWith->HasListStyleName() && compareWith->GetListStyleName() == style.GetListStyleName())) destStyle.SetListStyleName(style.GetListStyleName()); } if (style.HasBulletStyle()) { if (!(compareWith && compareWith->HasBulletStyle() && compareWith->GetBulletStyle() == style.GetBulletStyle())) destStyle.SetBulletStyle(style.GetBulletStyle()); } if (style.HasBulletText()) { if (!(compareWith && compareWith->HasBulletText() && compareWith->GetBulletText() == style.GetBulletText())) { destStyle.SetBulletText(style.GetBulletText()); destStyle.SetBulletFont(style.GetBulletFont()); } } if (style.HasBulletNumber()) { if (!(compareWith && compareWith->HasBulletNumber() && compareWith->GetBulletNumber() == style.GetBulletNumber())) destStyle.SetBulletNumber(style.GetBulletNumber()); } if (style.HasBulletName()) { if (!(compareWith && compareWith->HasBulletName() && compareWith->GetBulletName() == style.GetBulletName())) destStyle.SetBulletName(style.GetBulletName()); } if (style.HasURL()) { if (!(compareWith && compareWith->HasURL() && compareWith->GetURL() == style.GetURL())) destStyle.SetURL(style.GetURL()); } if (style.HasPageBreak()) { if (!(compareWith && compareWith->HasPageBreak())) destStyle.SetPageBreak(); } if (style.HasTextEffects()) { if (!(compareWith && compareWith->HasTextEffects() && compareWith->GetTextEffects() == style.GetTextEffects())) { int destBits = destStyle.GetTextEffects(); int destFlags = destStyle.GetTextEffectFlags(); int srcBits = style.GetTextEffects(); int srcFlags = style.GetTextEffectFlags(); // Reset incompatible bits in the destination wxResetIncompatibleBits((wxTEXT_ATTR_EFFECT_SUPERSCRIPT|wxTEXT_ATTR_EFFECT_SUBSCRIPT), srcFlags, destFlags, destBits); wxResetIncompatibleBits((wxTEXT_ATTR_EFFECT_CAPITALS|wxTEXT_ATTR_EFFECT_SMALL_CAPITALS), srcFlags, destFlags, destBits); wxResetIncompatibleBits((wxTEXT_ATTR_EFFECT_STRIKETHROUGH|wxTEXT_ATTR_EFFECT_DOUBLE_STRIKETHROUGH), srcFlags, destFlags, destBits); CombineBitlists(destBits, srcBits, destFlags, srcFlags); destStyle.SetTextEffects(destBits); destStyle.SetTextEffectFlags(destFlags); } } if (style.HasOutlineLevel()) { if (!(compareWith && compareWith->HasOutlineLevel() && compareWith->GetOutlineLevel() == style.GetOutlineLevel())) destStyle.SetOutlineLevel(style.GetOutlineLevel()); } return true; }
// Partial equality test taking flags into account bool wxTextAttr::EqPartial(const wxTextAttr& attr, int flags) const { if ((flags & wxTEXT_ATTR_TEXT_COLOUR) && GetTextColour() != attr.GetTextColour()) return false; if ((flags & wxTEXT_ATTR_BACKGROUND_COLOUR) && GetBackgroundColour() != attr.GetBackgroundColour()) return false; if ((flags & wxTEXT_ATTR_FONT_FACE) && GetFontFaceName() != attr.GetFontFaceName()) return false; if ((flags & wxTEXT_ATTR_FONT_SIZE) && GetFontSize() != attr.GetFontSize()) return false; if ((flags & wxTEXT_ATTR_FONT_WEIGHT) && GetFontWeight() != attr.GetFontWeight()) return false; if ((flags & wxTEXT_ATTR_FONT_ITALIC) && GetFontStyle() != attr.GetFontStyle()) return false; if ((flags & wxTEXT_ATTR_FONT_UNDERLINE) && GetFontUnderlined() != attr.GetFontUnderlined()) return false; if ((flags & wxTEXT_ATTR_FONT_ENCODING) && GetFontEncoding() != attr.GetFontEncoding()) return false; if ((flags & wxTEXT_ATTR_FONT_FAMILY) && GetFontFamily() != attr.GetFontFamily()) return false; if ((flags & wxTEXT_ATTR_URL) && GetURL() != attr.GetURL()) return false; if ((flags & wxTEXT_ATTR_ALIGNMENT) && GetAlignment() != attr.GetAlignment()) return false; if ((flags & wxTEXT_ATTR_LEFT_INDENT) && ((GetLeftIndent() != attr.GetLeftIndent()) || (GetLeftSubIndent() != attr.GetLeftSubIndent()))) return false; if ((flags & wxTEXT_ATTR_RIGHT_INDENT) && (GetRightIndent() != attr.GetRightIndent())) return false; if ((flags & wxTEXT_ATTR_PARA_SPACING_AFTER) && (GetParagraphSpacingAfter() != attr.GetParagraphSpacingAfter())) return false; if ((flags & wxTEXT_ATTR_PARA_SPACING_BEFORE) && (GetParagraphSpacingBefore() != attr.GetParagraphSpacingBefore())) return false; if ((flags & wxTEXT_ATTR_LINE_SPACING) && (GetLineSpacing() != attr.GetLineSpacing())) return false; if ((flags & wxTEXT_ATTR_CHARACTER_STYLE_NAME) && (GetCharacterStyleName() != attr.GetCharacterStyleName())) return false; if ((flags & wxTEXT_ATTR_PARAGRAPH_STYLE_NAME) && (GetParagraphStyleName() != attr.GetParagraphStyleName())) return false; if ((flags & wxTEXT_ATTR_LIST_STYLE_NAME) && (GetListStyleName() != attr.GetListStyleName())) return false; if ((flags & wxTEXT_ATTR_BULLET_STYLE) && (GetBulletStyle() != attr.GetBulletStyle())) return false; if ((flags & wxTEXT_ATTR_BULLET_NUMBER) && (GetBulletNumber() != attr.GetBulletNumber())) return false; if ((flags & wxTEXT_ATTR_BULLET_TEXT) && (GetBulletText() != attr.GetBulletText()) && (GetBulletFont() != attr.GetBulletFont())) return false; if ((flags & wxTEXT_ATTR_BULLET_NAME) && (GetBulletName() != attr.GetBulletName())) return false; if ((flags & wxTEXT_ATTR_TABS) && !TabsEq(GetTabs(), attr.GetTabs())) return false; if ((flags & wxTEXT_ATTR_PAGE_BREAK) && (HasPageBreak() != attr.HasPageBreak())) return false; if (flags & wxTEXT_ATTR_EFFECTS) { if (HasTextEffects() != attr.HasTextEffects()) return false; if (!BitlistsEqPartial(GetTextEffects(), attr.GetTextEffects(), attr.GetTextEffectFlags())) return false; } if ((flags & wxTEXT_ATTR_OUTLINE_LEVEL) && (GetOutlineLevel() != attr.GetOutlineLevel())) return false; return true; }
// Equality test bool wxTextAttr::operator== (const wxTextAttr& attr) const { return GetFlags() == attr.GetFlags() && GetTextColour() == attr.GetTextColour() && GetBackgroundColour() == attr.GetBackgroundColour() && GetAlignment() == attr.GetAlignment() && GetLeftIndent() == attr.GetLeftIndent() && GetLeftSubIndent() == attr.GetLeftSubIndent() && GetRightIndent() == attr.GetRightIndent() && TabsEq(GetTabs(), attr.GetTabs()) && GetParagraphSpacingAfter() == attr.GetParagraphSpacingAfter() && GetParagraphSpacingBefore() == attr.GetParagraphSpacingBefore() && GetLineSpacing() == attr.GetLineSpacing() && GetCharacterStyleName() == attr.GetCharacterStyleName() && GetParagraphStyleName() == attr.GetParagraphStyleName() && GetListStyleName() == attr.GetListStyleName() && GetBulletStyle() == attr.GetBulletStyle() && GetBulletText() == attr.GetBulletText() && GetBulletNumber() == attr.GetBulletNumber() && GetBulletFont() == attr.GetBulletFont() && GetBulletName() == attr.GetBulletName() && GetTextEffects() == attr.GetTextEffects() && GetTextEffectFlags() == attr.GetTextEffectFlags() && GetOutlineLevel() == attr.GetOutlineLevel() && GetFontSize() == attr.GetFontSize() && GetFontStyle() == attr.GetFontStyle() && GetFontWeight() == attr.GetFontWeight() && GetFontUnderlined() == attr.GetFontUnderlined() && GetFontFaceName() == attr.GetFontFaceName() && GetFontEncoding() == attr.GetFontEncoding() && GetFontFamily() == attr.GetFontFamily() && GetURL() == attr.GetURL(); }
// Partial equality test. Only returns false if an attribute doesn't match. bool wxTextAttr::EqPartial(const wxTextAttr& attr, bool weakTest) const { int flags = attr.GetFlags(); if (!weakTest && ((!HasTextColour() && attr.HasTextColour()) || (!HasBackgroundColour() && attr.HasBackgroundColour()) || (!HasFontFaceName() && attr.HasFontFaceName()) || (!HasFontSize() && attr.HasFontSize()) || (!HasFontWeight() && attr.HasFontWeight()) || (!HasFontItalic() && attr.HasFontItalic()) || (!HasFontUnderlined() && attr.HasFontUnderlined()) || (!HasFontStrikethrough() && attr.HasFontStrikethrough()) || (!HasFontEncoding() && attr.HasFontEncoding()) || (!HasFontFamily() && attr.HasFontFamily()) || (!HasURL() && attr.HasURL()) || (!HasAlignment() && attr.HasAlignment()) || (!HasLeftIndent() && attr.HasLeftIndent()) || (!HasParagraphSpacingAfter() && attr.HasParagraphSpacingAfter()) || (!HasParagraphSpacingBefore() && attr.HasParagraphSpacingBefore()) || (!HasLineSpacing() && attr.HasLineSpacing()) || (!HasCharacterStyleName() && attr.HasCharacterStyleName()) || (!HasParagraphStyleName() && attr.HasParagraphStyleName()) || (!HasListStyleName() && attr.HasListStyleName()) || (!HasBulletStyle() && attr.HasBulletStyle()) || (!HasBulletNumber() && attr.HasBulletNumber()) || (!HasBulletText() && attr.HasBulletText()) || (!HasBulletName() && attr.HasBulletName()) || (!HasTabs() && attr.HasTabs()) || (!HasTextEffects() && attr.HasTextEffects()) || (!HasOutlineLevel() && attr.HasOutlineLevel()))) { return false; } if (HasTextColour() && attr.HasTextColour() && GetTextColour() != attr.GetTextColour()) return false; if (HasBackgroundColour() && attr.HasBackgroundColour() && GetBackgroundColour() != attr.GetBackgroundColour()) return false; if (HasFontFaceName() && attr.HasFontFaceName() && GetFontFaceName() != attr.GetFontFaceName()) return false; // This checks whether the two objects have the same font size dimension (px versus pt) if (HasFontSize() && attr.HasFontSize() && (flags & wxTEXT_ATTR_FONT) != (GetFlags() & wxTEXT_ATTR_FONT)) return false; if (HasFontPointSize() && attr.HasFontPointSize() && GetFontSize() != attr.GetFontSize()) return false; if (HasFontPixelSize() && attr.HasFontPixelSize() && GetFontSize() != attr.GetFontSize()) return false; if (HasFontWeight() && attr.HasFontWeight() && GetFontWeight() != attr.GetFontWeight()) return false; if (HasFontItalic() && attr.HasFontItalic() && GetFontStyle() != attr.GetFontStyle()) return false; if (HasFontUnderlined() && attr.HasFontUnderlined() && GetFontUnderlined() != attr.GetFontUnderlined()) return false; if (HasFontStrikethrough() && attr.HasFontStrikethrough() && GetFontStrikethrough() != attr.GetFontStrikethrough()) return false; if (HasFontEncoding() && attr.HasFontEncoding() && GetFontEncoding() != attr.GetFontEncoding()) return false; if (HasFontFamily() && attr.HasFontFamily() && GetFontFamily() != attr.GetFontFamily()) return false; if (HasURL() && attr.HasURL() && GetURL() != attr.GetURL()) return false; if (HasAlignment() && attr.HasAlignment() && GetAlignment() != attr.GetAlignment()) return false; if (HasLeftIndent() && attr.HasLeftIndent() && ((GetLeftIndent() != attr.GetLeftIndent()) || (GetLeftSubIndent() != attr.GetLeftSubIndent()))) return false; if (HasRightIndent() && attr.HasRightIndent() && (GetRightIndent() != attr.GetRightIndent())) return false; if (HasParagraphSpacingAfter() && attr.HasParagraphSpacingAfter() && (GetParagraphSpacingAfter() != attr.GetParagraphSpacingAfter())) return false; if (HasParagraphSpacingBefore() && attr.HasParagraphSpacingBefore() && (GetParagraphSpacingBefore() != attr.GetParagraphSpacingBefore())) return false; if (HasLineSpacing() && attr.HasLineSpacing() && (GetLineSpacing() != attr.GetLineSpacing())) return false; if (HasCharacterStyleName() && attr.HasCharacterStyleName() && (GetCharacterStyleName() != attr.GetCharacterStyleName())) return false; if (HasParagraphStyleName() && attr.HasParagraphStyleName() && (GetParagraphStyleName() != attr.GetParagraphStyleName())) return false; if (HasListStyleName() && attr.HasListStyleName() && (GetListStyleName() != attr.GetListStyleName())) return false; if (HasBulletStyle() && attr.HasBulletStyle() && (GetBulletStyle() != attr.GetBulletStyle())) return false; if (HasBulletNumber() && attr.HasBulletNumber() && (GetBulletNumber() != attr.GetBulletNumber())) return false; if (HasBulletText() && attr.HasBulletText() && (GetBulletText() != attr.GetBulletText()) && (GetBulletFont() != attr.GetBulletFont())) return false; if (HasBulletName() && attr.HasBulletName() && (GetBulletName() != attr.GetBulletName())) return false; if (HasTabs() && attr.HasTabs() && !TabsEq(GetTabs(), attr.GetTabs())) return false; if ((HasPageBreak() != attr.HasPageBreak())) return false; if (HasTextEffects() && attr.HasTextEffects()) { if (!BitlistsEqPartial(GetTextEffects(), attr.GetTextEffects(), attr.GetTextEffectFlags())) return false; } if (HasOutlineLevel() && attr.HasOutlineLevel() && (GetOutlineLevel() != attr.GetOutlineLevel())) return false; return true; }