Exemple #1
0
        public MarkerEditor(DataMarker marker, HexView hexview)
        {
            InitializeComponent();
            this.marker  = marker;
            this.hexview = hexview;

            markerAtTextBox.Text = DataType.AddressToString(marker.Address);
            noteTextBox.Text     = marker.Note;
            dataTypeComboBox.Items.AddRange(DataType.GetKnownDataTypes().ToArray());
            dataTypeComboBox.SelectedIndex = dataTypeComboBox.FindString(marker.Type.Name);
            sizeNumericUpDown.Value        = marker.NumBytes;
            sizeNumericUpDown.Enabled      = marker.Type.VariableNumBytes;
            valueTextBox.Text = marker.Type.DecodeToString(hexview.GetDataAt(marker.Address));
        }
Exemple #2
0
        private Bitmap DrawMarker(DataMarker marker, int address)
        {
            // draw marker to offscreen surface
            Point  origin     = new Point(0, 0);
            int    mWidth     = ColumnWidth * marker.NumBytes;
            Bitmap markerBmp  = new Bitmap(mWidth, LineHeight);
            var    mg         = Graphics.FromImage(markerBmp);
            var    markerRect = new Rectangle(origin, new Size(mWidth, LineHeight));

            // highlighting and selection
            if (address == hoverAddress)
            {
                mg.FillRectangle(Brushes.DarkBlue, markerRect);
            }
            if (address == selectedAddress)
            {
                mg.FillRectangle(Brushes.DarkRed, markerRect);
            }

            // strings
            StringFormat sf = new StringFormat();

            sf.Alignment     = StringAlignment.Center;
            sf.LineAlignment = StringAlignment.Near;
            mg.DrawString(marker.Type.DecodeToString(new DataFragment(address, fileBytes, address / 8, marker.NumBytes)), vFont, Brushes.White, markerRect, sf);
            origin.Y += 11;
            mg.DrawString(marker.Type.ShortName, tFont, Brushes.Orange, origin);

            // draw line
            var measure = mg.MeasureString(marker.Type.ShortName, tFont);

            origin.X += (int)measure.Width + hSpacing;
            origin.Y  = LineHeight - 3;
            var point2 = new PointF(mWidth, origin.Y);

            mg.DrawLine(new Pen(Brushes.DarkOrange), origin, point2);

            return(markerBmp);
        }