private static bool Execute_XLOG_Command(DataStream <int> ParameterStream) { /* Currently we are only emulating color codes. */ /* XXX: Implement emulation for other codes such as the cursor controls */ XLOG_CODE Code = (XLOG_CODE)Int32.MinValue; if (!ParameterStream.atEnd) { Code = (XLOG_CODE)ParameterStream.Consume(); } switch (Code) { case XLOG_CODE.PUSH_FG: Color_Stack_FG.Push(ANSI.Color_Console_To_ANSI(Console.ForegroundColor)); break; case XLOG_CODE.POP_FG: { if (Color_Stack_FG.Count == 0) { break; } ANSI_COLOR clr = Color_Stack_FG.Pop(); Console.ForegroundColor = ANSI.Color_ANSI_To_Console(clr); } break; case XLOG_CODE.PUSH_BG: Color_Stack_BG.Push(ANSI.Color_Console_To_ANSI(Console.BackgroundColor)); break; case XLOG_CODE.POP_BG: { if (Color_Stack_BG.Count == 0) { break; } ANSI_COLOR clr = Color_Stack_BG.Pop(); Console.BackgroundColor = ANSI.Color_ANSI_To_Console(clr); } break; default: { throw new ArgumentException($"Unrecognized xLOG code: {(XLOG_CODE)Code}"); } } return(true); }
private static void Set_BG(ANSI_COLOR Color) => Console.BackgroundColor = ANSI.Color_ANSI_To_Console(Color);
private static void Set_FG(ANSI_COLOR Color) => Console.ForegroundColor = ANSI.Color_ANSI_To_Console(Color);