public void SetStyle(AnsiStyle style) { var newControlCodes = GenerateControlCodes(_currentStyle, style); _currentBuffer.AddRange(newControlCodes); _currentStyle = style; }
private static IEnumerable <byte> GenerateControlCodes(AnsiStyle oldStyle, AnsiStyle newStyle) { var result = new List <byte>(); //Foreground color if (oldStyle.ForegroundColor != newStyle.ForegroundColor) { var code = 30 + (int)newStyle.ForegroundColor; result.AddRange(GenerateControlCode(code)); } //Background color if (oldStyle.BackgroundColor != newStyle.BackgroundColor) { var code = 40 + (int)newStyle.BackgroundColor; result.AddRange(GenerateControlCode(code)); } //Blink if (oldStyle.Blink != newStyle.Blink) { result.AddRange(newStyle.Blink ? GenerateControlCode(5) : GenerateControlCode(25)); } //Bold if (oldStyle.Bold != newStyle.Bold) { result.AddRange(newStyle.Bold ? GenerateControlCode(1) : GenerateControlCode(22)); } //Italics if (oldStyle.Italics != newStyle.Italics) { result.AddRange(newStyle.Italics ? GenerateControlCode(3) : GenerateControlCode(23)); } //Underline if (oldStyle.Underline != newStyle.Underline) { result.AddRange(newStyle.Underline ? GenerateControlCode(4) : GenerateControlCode(24)); } return(result); }
public AnsiGenerator() { _currentBuffer = new List <byte>(); _currentStyle = new AnsiStyle(); }