/// <summary> /// Удалить атрибут. /// </summary> /// <param name="attribute">Атрибут.</param> public void RemoveAttribute(ITextRenderAttribute attribute) { if (attribute == null || attribute.Id == null) { return; } ITextRenderAttribute top = null; if (all.ContainsKey(attribute.Id)) { var stack = all[attribute.Id]; if (stack.Count > 0) { stack.Pop(); } if (stack.Count > 0) { top = stack.Peek(); } else { all.Remove(attribute.Id); } } if (top != null) { current[attribute.Id] = top; } else { current.Remove(attribute.Id); } }
/// <summary> /// Добавить атрибут. /// </summary> /// <param name="attribute">Атрибут.</param> public void AddAttribute(ITextRenderAttribute attribute) { if (attribute == null || attribute.Id == null) { return; } if (!all.ContainsKey(attribute.Id)) { all[attribute.Id] = new Stack<ITextRenderAttribute>(); } all[attribute.Id].Push(attribute); current[attribute.Id] = attribute; }
/// <summary> /// Удалить атрибут. /// </summary> /// <param name="attribute">Атрибут.</param> public void RemoveAttribute(ITextRenderAttribute attribute) { throw new System.NotImplementedException("Нельзя изменять копию только для чтения состояния атрибутов"); }
/// <summary> /// Конструктор. /// </summary> /// <param name="attribute">Атрибут.</param> /// <param name="add">Добавить атрибут.</param> public AttributeRenderProgramElement(ITextRenderAttribute attribute, bool add) { this.add = add; Attribute = attribute; }