117 lines
2.4 KiB
C#
117 lines
2.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Windows.Forms;
|
|
|
|
using BizHawk.Client.Common;
|
|
using BizHawk.Client.EmuHawk.CustomControls;
|
|
|
|
namespace BizHawk.Client.EmuHawk
|
|
{
|
|
public class HexView : Control
|
|
{
|
|
private readonly GDIRenderer Gdi;
|
|
private readonly Font NormalFont;
|
|
private Size _charSize;
|
|
|
|
private long _arrayLength;
|
|
|
|
public HexView()
|
|
{
|
|
NormalFont = new Font("Courier New", 8); // Only support fixed width
|
|
|
|
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
|
|
SetStyle(ControlStyles.UserPaint, true);
|
|
SetStyle(ControlStyles.SupportsTransparentBackColor, true);
|
|
SetStyle(ControlStyles.Opaque, true);
|
|
|
|
Gdi = new GDIRenderer();
|
|
|
|
using (var g = CreateGraphics())
|
|
using (var LCK = Gdi.LockGraphics(g))
|
|
{
|
|
_charSize = Gdi.MeasureString("A", NormalFont); // TODO make this a property so changing it updates other values.
|
|
}
|
|
}
|
|
|
|
protected override void Dispose(bool disposing)
|
|
{
|
|
Gdi.Dispose();
|
|
|
|
NormalFont.Dispose();
|
|
|
|
base.Dispose(disposing);
|
|
}
|
|
|
|
#region Paint
|
|
|
|
protected override void OnPaint(PaintEventArgs e)
|
|
{
|
|
using (var LCK = Gdi.LockGraphics(e.Graphics))
|
|
{
|
|
Gdi.StartOffScreenBitmap(Width, Height);
|
|
|
|
// White Background
|
|
Gdi.SetBrush(Color.White);
|
|
Gdi.SetSolidPen(Color.White);
|
|
Gdi.FillRectangle(0, 0, Width, Height);
|
|
|
|
|
|
Gdi.DrawString("Hello World", new Point(10, 10));
|
|
|
|
Gdi.CopyToScreen();
|
|
Gdi.EndOffScreenBitmap();
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Properties
|
|
|
|
/// <summary>
|
|
/// Gets or sets the sets the virtual number of the length of the array to display
|
|
/// </summary>
|
|
[Category("Behavior")]
|
|
public long ArrayLength
|
|
{
|
|
get
|
|
{
|
|
return _arrayLength;
|
|
}
|
|
|
|
set
|
|
{
|
|
_arrayLength = value;
|
|
RecalculateScrollBars();
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Event Handlers
|
|
|
|
[Category("Virtual")]
|
|
public event QueryIndexValueHandler QueryIndexValue;
|
|
|
|
[Category("Virtual")]
|
|
public event QueryIndexBkColorHandler QueryIndexBgColor;
|
|
|
|
[Category("Virtual")]
|
|
public event QueryIndexForeColorHandler QueryIndexForeColor;
|
|
|
|
public delegate void QueryIndexValueHandler(int index, out long value);
|
|
|
|
public delegate void QueryIndexBkColorHandler(int index, ref Color color);
|
|
|
|
public delegate void QueryIndexForeColorHandler(int index, ref Color color);
|
|
|
|
#endregion
|
|
|
|
private void RecalculateScrollBars()
|
|
{
|
|
}
|
|
}
|
|
}
|