public DecoratedCharacter(EquationContainer parent, TextEquation previous, CharacterDecorationType cdt, Position position, string sign) : base(parent) { this.Previous = previous; this.charFt = textManager.GetFormattedText(previous.Text[previous.CaretIndex - 1].ToString(), previous.GetFormats()[previous.CaretIndex - 1]); previous.ConsumeKey(System.Windows.Input.Key.Back); Height = FontSize; decorations.Add(new CharacterDecorationInfo() { DecorationType = cdt, Position = position, UnicodeString = sign }); Width = charFt.Width; }
public void AddDecoration(CharacterDecorationType cdt, Position position, string sign) { if (cdt == CharacterDecorationType.None) { var decoArray = (from d in decorations where d.Index == caretIndex - 1 select d).ToArray(); UndoManager.AddUndoAction(new DecorationAction(this, decoArray) { UndoFlag = false }); decorations.RemoveAll(x => x.Index == caretIndex - 1); } else if (!char.IsWhiteSpace(textData[caretIndex - 1])) { CharacterDecorationInfo cdi = new CharacterDecorationInfo(); cdi.DecorationType = cdt; cdi.Position = position; cdi.UnicodeString = sign; cdi.Index = caretIndex - 1; decorations.Add(cdi); UndoManager.AddUndoAction(new DecorationAction(this, new[] { cdi })); } FormatText(); }