private ConsoleColor languageBaseColorToConsoleColor(LanguageBaseColor lgb) { int r = 0; if (lgb.B >= 256 / 3) { r |= 1; } if (lgb.G >= 256 / 3) { r |= 2; } if (lgb.R >= 256 / 3) { r |= 4; } int max = Math.Max(lgb.B, Math.Max(lgb.G, lgb.R)); if (max < 256 / 3) { r = 0; } else if (max < 256 / 3 * 2) { /* do nothing */ } else { r += 8; } return((ConsoleColor)r); }
private LanguageBaseColor consoleColorToLanguageBaseColor(ConsoleColor cc) { var r = new LanguageBaseColor(); byte v; if ((int)cc >= 8) { v = 255; } else { v = 128; } if (((int)cc & 1) != 0) { r.B = v; } if (((int)cc & 2) != 0) { r.G = v; } if (((int)cc & 4) != 0) { r.R = v; } r.A = 255; return(r); }
public async override Task <LanguageBaseColor> SetBackColorAsync(LanguageBaseColor color) { await Task.Delay(0); // dummy var old = Console.BackgroundColor; if (color != null) { Console.BackgroundColor = languageBaseColorToConsoleColor(color); } return(consoleColorToLanguageBaseColor(old)); }