private string WriteAnsi256(Color color, bool foreground) { var start = 7; var ansi = ColorConvert.ToAnsi256(color); var total = start + StringLength((byte)ansi) + 1; Span <char> esc = stackalloc char[total]; esc[0] = Escape; esc[1] = '['; esc[2] = foreground ? '3' : '4'; esc[3] = '8'; esc[4] = ';'; esc[5] = '5'; esc[6] = ';'; var idx = start; var sub = esc.Slice(idx); idx += WriteByte(sub, (byte)ansi); sub = esc.Slice(idx); sub[0] = 'm'; idx++; return(esc.Slice(0, idx).ToString()); }
private string WriteAnsi16(Color color, bool foreground) { var start = 2; var ansi = ColorConvert.ToAnsi16(color); ansi = foreground ? ansi : ansi + 10; var total = start + StringLength((byte)ansi) + 1; Span <char> esc = stackalloc char[total]; esc[0] = Escape; esc[1] = '['; var idx = start; var sub = esc.Slice(idx); idx += WriteByte(sub, (byte)ansi); sub[0] = 'm'; idx++; return(esc.Slice(0, idx).ToString()); }