示例#1
0
        static ColorRules()
        {
            List <OpCode> calls =
                Functions.OpCodes.Where(opcode => opcode.OperandType == OperandType.InlineMethod ||
                                        opcode.OperandType == OperandType.InlineSig).ToList();

            foreach (OpCode opCode in calls)
            {
                var row = new ColoredRow
                {
                    OpCodeText  = Color.MediumBlue,
                    OperandText = Color.MediumBlue
                };

                Rules.Add(opCode, row);
            }

            var stringRow = new ColoredRow
            {
                OpCodeText  = Color.DarkRed,
                OperandText = Color.DarkRed
            };

            Rules.Add(OpCodes.Ldstr, stringRow);

            var retRow = new ColoredRow
            {
                OpCodeBackground = Color.Yellow
            };

            Rules.Add(OpCodes.Ret, retRow);
            Rules.Add(OpCodes.Rethrow, retRow);

            List <OpCode> jumps =
                Functions.OpCodes.Where(opcode => opcode.OperandType == OperandType.ShortInlineBrTarget ||
                                        opcode.OperandType == OperandType.InlineBrTarget).ToList();

            foreach (OpCode opCode in jumps)
            {
                var row = new ColoredRow
                {
                    OpCodeText  = Color.DarkMagenta,
                    OperandText = Color.DarkMagenta
                };

                Rules.Add(opCode, row);
            }
        }
示例#2
0
        public static void ApplyColors(DataGridView dgView)
        {
            if (dgView == null || dgView.ColumnCount == 0 || dgView.RowCount == 0)
            {
                return;
            }

            foreach (DataGridViewRow row in dgView.Rows)
            {
                string opcode = row.Cells["opcode"].Value.ToString().Trim(' ');

                if (Rules.Keys.Count(key => key.Name == opcode) > 0)
                {
                    OpCode opCode = Rules.Keys.First(key => key.Name == opcode);

                    ColoredRow coloredRow = Rules.First(o => o.Key == opCode).Value;

                    /* Color darkening for instruction blocks
                     *
                     * if (row.DefaultCellStyle.BackColor == BlockColor)
                     * {
                     *  newColor = Color.FromArgb(newColor.R - 17 < 0 ? newColor.R : newColor.R - 17,
                     *      newColor.G - 23 < 0 ? newColor.G : newColor.G - 23,
                     *      newColor.B - 85 < 0 ? newColor.B : newColor.B - 85);
                     * }*/

                    row.Cells[2].Style.ForeColor = coloredRow.OpCodeText;

                    if (coloredRow.OpCodeBackground != DefaultColors.RowColor &&
                        coloredRow.OpCodeBackground != DefaultColors.RowBlockColor)
                    {
                        row.Cells[2].Style.BackColor = coloredRow.OpCodeBackground;
                    }

                    row.Cells[3].Style.ForeColor = coloredRow.OperandText;
                }
            }
        }