示例#1
0
文件: ANSI.cs 项目: dsisco11/xLog
        public static ConsoleColor Color_ANSI_To_Console(ANSI_COLOR Color)
        {
            switch (Color)
            {
            case ANSI_COLOR.YELLOW:
                return(ConsoleColor.DarkYellow);

            case ANSI_COLOR.YELLOW_BRIGHT:
                return(ConsoleColor.Yellow);

            case ANSI_COLOR.RED:
                return(ConsoleColor.DarkRed);

            case ANSI_COLOR.RED_BRIGHT:
                return(ConsoleColor.Red);

            case ANSI_COLOR.MAGENTA:
                return(ConsoleColor.DarkMagenta);

            case ANSI_COLOR.MAGENTA_BRIGHT:
                return(ConsoleColor.Magenta);

            case ANSI_COLOR.GREEN:
                return(ConsoleColor.DarkGreen);

            case ANSI_COLOR.GREEN_BRIGHT:
                return(ConsoleColor.Green);

            case ANSI_COLOR.CYAN:
                return(ConsoleColor.DarkCyan);

            case ANSI_COLOR.CYAN_BRIGHT:
                return(ConsoleColor.Cyan);

            case ANSI_COLOR.BLUE:
                return(ConsoleColor.DarkBlue);

            case ANSI_COLOR.BLUE_BRIGHT:
                return(ConsoleColor.Blue);

            case ANSI_COLOR.WHITE_BRIGHT:
                return(ConsoleColor.White);

            case ANSI_COLOR.WHITE:
                return(ConsoleColor.Gray);

            case ANSI_COLOR.BLACK_BRIGHT:
                return(ConsoleColor.DarkGray);

            case ANSI_COLOR.BLACK:
                return(ConsoleColor.Black);

            default:
            {
                System.Diagnostics.Debugger.Break();
                throw new ArgumentOutOfRangeException($"{nameof(Color)}({Color.ToString()})");
            }
            }
        }
示例#2
0
        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);
        }
示例#3
0
        private static Tuple <ANSI_COLOR, ANSI_COLOR> Get_Console_Default_Colors()
        {
            ConsoleColor stackFG = Console.ForegroundColor;
            ConsoleColor stackBG = Console.BackgroundColor;

            Console.ResetColor();

            ANSI_COLOR fgVal = ANSI.Color_Console_To_ANSI(Console.ForegroundColor);
            ANSI_COLOR bgVal = ANSI.Color_Console_To_ANSI(Console.BackgroundColor);

            Console.ForegroundColor = stackFG;
            Console.BackgroundColor = stackBG;

            return(new Tuple <ANSI_COLOR, ANSI_COLOR>(fgVal, bgVal));
        }
示例#4
0
        private void AddValue(int val)
        {
            ANSI_COLOR p = (ANSI_COLOR)val;

            if (p >= ANSI_COLOR.All_off && p <= ANSI_COLOR.Bold)
            {
                vals.Add(val);
            }
            else if (p >= ANSI_COLOR.Black && p <= ANSI_COLOR.White)
            {
                vals.Add(val);
            }
            else if (p >= ANSI_COLOR.Black_B && p <= ANSI_COLOR.White_B)
            {
                vals.Add(val);
            }
            else
            {
                Console.WriteLine("Not a valid ANSI color/attrib value: " + val);
            }
        }
示例#5
0
文件: XTERM.cs 项目: ZandrXandr/RoRPL
 private static string Set_FG_Color_Bright(ANSI_COLOR color, string msg)
 {
     return(String.Concat(ESC, '[', Convert.ToString(90 + (int)color), 'm', msg, RESET));
 }
示例#6
0
文件: ANSI.cs 项目: dsisco11/xLog
 internal static string Set_BG_Color(ANSI_COLOR color, string Msg) => string.Concat(sPUSH_BG, xCmd((int)SGR_CODE.SET_COLOR_CUSTOM_BG, 5, (int)color), Msg, sPOP_BG);
示例#7
0
 private static void Set_BG(ANSI_COLOR Color) => Console.BackgroundColor = ANSI.Color_ANSI_To_Console(Color);
示例#8
0
 private static void Set_FG(ANSI_COLOR Color) => Console.ForegroundColor = ANSI.Color_ANSI_To_Console(Color);
示例#9
0
        private static bool Execute_SGR_Command(DataStream <int> ParameterStream)
        {
            /* Currently we are only emulating color codes. */
            /* XXX: Implement emulation for other codes such as the cursor controls */
            SGR_CODE Code = SGR_CODE.INVALID;

            if (!ParameterStream.atEnd)
            {
                Code = (SGR_CODE)ParameterStream.Consume();
            }

            switch (Code)
            {
            case SGR_CODE.RESET_STYLE:
            {        /* All Attribute OFF */
                bModeInvertVideo = false;
                Color_Stack_FG.Clear();
                Color_Stack_BG.Clear();
                Console.ResetColor();
            }
            break;

            case SGR_CODE.RESET_COLOR_FG:
            {
                var Defaults = Get_Console_Default_Colors();
                var Clr      = bModeInvertVideo ? Defaults.Item2 : Defaults.Item1;
                Set_FG(Clr);
            }
            break;

            case SGR_CODE.RESET_COLOR_BG:
            {
                var Defaults = Get_Console_Default_Colors();
                var Clr      = bModeInvertVideo ? Defaults.Item1 : Defaults.Item2;
                Set_BG(Clr);
            }
            break;

            case SGR_CODE.INVERT:
                Set_Inverted(true);
                break;

            case SGR_CODE.INVERT_OFF:
                Set_Inverted(false);
                break;

            /* 8-bit Colors */
            case SGR_CODE.SET_COLOR_CUSTOM_FG:
            {
                if (ParameterStream.Remaining < 2)
                {
                    throw new SgrFormatError($"Malformed command({Code}) requires atleast 2 parameters!");
                }

                ANSI_COLOR Clr = ANSI_COLOR.WHITE;
                /* Read custom mode */
                int mode = ParameterStream.Consume();
                switch (mode)
                {
                case 2:            /* 8-bit */
                {
                    if (ParameterStream.Remaining < 3)
                    {
                        throw new SgrFormatError($"Malformed command. 8-bit colors require 3 parameters!");
                    }
                }
                break;

                case 5:             /* 4-bit */
                    Clr = (ANSI_COLOR)ParameterStream.Consume();
                    break;

                default:
                    throw new SgrFormatError($"Malformed command. '{mode}' is not a valid mode for {Code}");
                }

                if (!bModeInvertVideo)
                {
                    Set_FG(Clr);
                }
                else
                {
                    Set_BG(Clr);
                }
            }
            break;

            case SGR_CODE.SET_COLOR_CUSTOM_BG:
            {
                if (ParameterStream.Remaining < 2)
                {
                    throw new SgrFormatError($"Malformed command({Code}) requires atleast 2 parameters!");
                }
                ANSI_COLOR Clr = ANSI_COLOR.BLACK;
                /* Read custom mode */
                int mode = ParameterStream.Consume();
                switch (mode)
                {
                case 2:            /* 8-bit */
                {
                    if (ParameterStream.Remaining < 3)
                    {
                        throw new SgrFormatError($"Malformed command. 8-bit colors require 3 parameters!");
                    }
                }
                break;

                case 5:             /* 4-bit */
                    Clr = (ANSI_COLOR)ParameterStream.Consume();
                    break;

                default:
                    throw new SgrFormatError($"Malformed command. '{mode}' is not a valid mode for {Code}");
                }

                if (!bModeInvertVideo)
                {
                    Set_BG(Clr);
                }
                else
                {
                    Set_FG(Clr);
                }
            }
            break;


            /* 3/4-bit Colors */
            case SGR_CODE n when(n >= SGR_CODE.SET_COLOR_FG && n <= SGR_CODE.SET_COLOR_FG + 7):
            {
                var Clr = (ANSI_COLOR)(n - SGR_CODE.SET_COLOR_FG);
                if (!bModeInvertVideo)
                {
                    Set_FG(Clr);
                }
                else
                {
                    Set_BG(Clr);
                }
            }
            break;

            case SGR_CODE n when(n >= SGR_CODE.SET_COLOR_FG_BRIGHT && n <= SGR_CODE.SET_COLOR_FG_BRIGHT + 7):
            {
                var Clr = (ANSI_COLOR)(n - SGR_CODE.SET_COLOR_FG_BRIGHT);
                if (!bModeInvertVideo)
                {
                    Set_FG(Clr);
                }
                else
                {
                    Set_BG(Clr);
                }
            }
            break;

            case SGR_CODE n when(n >= SGR_CODE.SET_COLOR_BG && n <= SGR_CODE.SET_COLOR_BG + 7):
            {
                var Clr = (ANSI_COLOR)(n - SGR_CODE.SET_COLOR_BG);
                if (!bModeInvertVideo)
                {
                    Set_BG(Clr);
                }
                else
                {
                    Set_FG(Clr);
                }
            }
            break;

            case SGR_CODE n when(n >= SGR_CODE.SET_COLOR_BG_BRIGHT && n <= SGR_CODE.SET_COLOR_BG_BRIGHT + 7):
            {
                var Clr = (ANSI_COLOR)(n - SGR_CODE.SET_COLOR_BG_BRIGHT);
                if (!bModeInvertVideo)
                {
                    Set_BG(Clr);
                }
                else
                {
                    Set_FG(Clr);
                }
            }
            break;

            default:
            {
                throw new ArgumentException($"Unrecognized (SelectGraphicRendition) code: {(SGR_CODE)Code}");
            }
            }

            return(true);
        }
示例#10
0
 public TerminalColor(ANSI_COLOR Color)
 {
     Data = Color;
 }