Debugger: Event Viewer - Make zoom in/out work like the other windows

+ Save window size & location
This commit is contained in:
Sour 2019-05-02 20:22:29 -04:00
parent d1a8141174
commit 161c68a875
9 changed files with 213 additions and 91 deletions

View file

@ -19,7 +19,7 @@ namespace Mesen.GUI.Config
public DebuggerShortcutsConfig Shortcuts = new DebuggerShortcutsConfig();
public TraceLoggerInfo TraceLogger = new TraceLoggerInfo();
public HexEditorInfo HexEditor = new HexEditorInfo();
public EventViewerInfo EventViewer = new EventViewerInfo();
public EventViewerConfig EventViewer = new EventViewerConfig();
public DebuggerInfo Debugger = new DebuggerInfo();
public TilemapViewerConfig TilemapViewer = new TilemapViewerConfig();
public TileViewerConfig TileViewer = new TileViewerConfig();

View file

@ -8,8 +8,14 @@ using System.Threading.Tasks;
namespace Mesen.GUI.Config
{
public class EventViewerInfo
public class EventViewerConfig
{
public Size WindowSize = new Size(0, 0);
public Point WindowLocation;
public int ImageScale = 1;
public bool RefreshOnBreakPause = true;
public bool ShowPpuRegisterWrites = true;
public bool ShowPpuRegisterReads = true;
public bool ShowCpuRegisterWrites = true;

View file

@ -30,9 +30,7 @@ namespace Mesen.GUI.Debugger
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.picViewer = new Mesen.GUI.Controls.ctrlMesenPictureBox();
this.tmrOverlay = new System.Windows.Forms.Timer(this.components);
this.pnlPicture = new System.Windows.Forms.Panel();
this.grpOptions = new System.Windows.Forms.GroupBox();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.chkShowPreviousFrameEvents = new System.Windows.Forms.CheckBox();
@ -63,8 +61,7 @@ namespace Mesen.GUI.Debugger
this.picPpuReads = new Mesen.GUI.Debugger.ctrlColorPicker();
this.chkShowMarkedBreakpoints = new System.Windows.Forms.CheckBox();
this.picMarkedBreakpoints = new Mesen.GUI.Debugger.ctrlColorPicker();
((System.ComponentModel.ISupportInitialize)(this.picViewer)).BeginInit();
this.pnlPicture.SuspendLayout();
this.picViewer = new Mesen.GUI.Debugger.PpuViewer.ctrlImagePanel();
this.grpOptions.SuspendLayout();
this.tableLayoutPanel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.picNmi)).BeginInit();
@ -80,37 +77,11 @@ namespace Mesen.GUI.Debugger
((System.ComponentModel.ISupportInitialize)(this.picMarkedBreakpoints)).BeginInit();
this.SuspendLayout();
//
// picViewer
//
this.picViewer.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.picViewer.Cursor = System.Windows.Forms.Cursors.Default;
this.picViewer.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
this.picViewer.Location = new System.Drawing.Point(0, 0);
this.picViewer.Margin = new System.Windows.Forms.Padding(0);
this.picViewer.Name = "picViewer";
this.picViewer.Size = new System.Drawing.Size(682, 526);
this.picViewer.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.picViewer.TabIndex = 0;
this.picViewer.TabStop = false;
this.picViewer.DoubleClick += new System.EventHandler(this.picPicture_DoubleClick);
this.picViewer.MouseLeave += new System.EventHandler(this.picPicture_MouseLeave);
this.picViewer.MouseMove += new System.Windows.Forms.MouseEventHandler(this.picPicture_MouseMove);
//
// tmrOverlay
//
this.tmrOverlay.Interval = 50;
this.tmrOverlay.Tick += new System.EventHandler(this.tmrOverlay_Tick);
//
// pnlPicture
//
this.pnlPicture.AutoScroll = true;
this.pnlPicture.Controls.Add(this.picViewer);
this.pnlPicture.Dock = System.Windows.Forms.DockStyle.Fill;
this.pnlPicture.Location = new System.Drawing.Point(0, 0);
this.pnlPicture.Name = "pnlPicture";
this.pnlPicture.Size = new System.Drawing.Size(686, 529);
this.pnlPicture.TabIndex = 1;
//
// grpOptions
//
this.grpOptions.Controls.Add(this.tableLayoutPanel1);
@ -458,16 +429,29 @@ namespace Mesen.GUI.Debugger
this.picMarkedBreakpoints.TabIndex = 27;
this.picMarkedBreakpoints.TabStop = false;
//
// picViewer
//
this.picViewer.Dock = System.Windows.Forms.DockStyle.Fill;
this.picViewer.Image = null;
this.picViewer.ImageScale = 1;
this.picViewer.ImageSize = new System.Drawing.Size(0, 0);
this.picViewer.Location = new System.Drawing.Point(0, 0);
this.picViewer.Name = "picViewer";
this.picViewer.Selection = new System.Drawing.Rectangle(0, 0, 0, 0);
this.picViewer.SelectionWrapPosition = 0;
this.picViewer.Size = new System.Drawing.Size(686, 529);
this.picViewer.TabIndex = 3;
this.picViewer.MouseLeave += new System.EventHandler(this.picPicture_MouseLeave);
this.picViewer.MouseMove += new System.Windows.Forms.MouseEventHandler(this.picPicture_MouseMove);
//
// ctrlEventViewerPpuView
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.pnlPicture);
this.Controls.Add(this.picViewer);
this.Controls.Add(this.grpOptions);
this.Name = "ctrlEventViewerPpuView";
this.Size = new System.Drawing.Size(947, 529);
((System.ComponentModel.ISupportInitialize)(this.picViewer)).EndInit();
this.pnlPicture.ResumeLayout(false);
this.grpOptions.ResumeLayout(false);
this.tableLayoutPanel1.ResumeLayout(false);
this.tableLayoutPanel1.PerformLayout();
@ -487,10 +471,7 @@ namespace Mesen.GUI.Debugger
}
#endregion
private ctrlMesenPictureBox picViewer;
private System.Windows.Forms.Timer tmrOverlay;
private System.Windows.Forms.Panel pnlPicture;
private System.Windows.Forms.GroupBox grpOptions;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private ctrlColorPicker picNmi;
@ -521,5 +502,6 @@ namespace Mesen.GUI.Debugger
private System.Windows.Forms.CheckBox chkShowMarkedBreakpoints;
private ctrlColorPicker picMarkedBreakpoints;
private System.Windows.Forms.CheckBox chkShowPreviousFrameEvents;
private PpuViewer.ctrlImagePanel picViewer;
}
}

View file

@ -27,8 +27,9 @@ namespace Mesen.GUI.Debugger
private Bitmap _displayBitmap = null;
private byte[] _pictureData = null;
private Font _overlayFont;
private bool _zoomed = false;
public int ImageScale { get { return picViewer.ImageScale; } set { picViewer.ImageScale = value; } }
public ctrlEventViewerPpuView()
{
InitializeComponent();
@ -43,31 +44,31 @@ namespace Mesen.GUI.Debugger
_overlayFont = new Font(BaseControl.MonospaceFontFamily, 10);
_entityBinder.Entity = ConfigManager.Config.Debug.EventViewer;
_entityBinder.AddBinding(nameof(EventViewerInfo.ApuRegisterReadColor), picApuReads);
_entityBinder.AddBinding(nameof(EventViewerInfo.ApuRegisterWriteColor), picApuWrites);
_entityBinder.AddBinding(nameof(EventViewerInfo.CpuRegisterReadColor), picCpuReads);
_entityBinder.AddBinding(nameof(EventViewerInfo.CpuRegisterWriteColor), picCpuWrites);
_entityBinder.AddBinding(nameof(EventViewerInfo.IrqColor), picIrq);
_entityBinder.AddBinding(nameof(EventViewerInfo.BreakpointColor), picMarkedBreakpoints);
_entityBinder.AddBinding(nameof(EventViewerInfo.NmiColor), picNmi);
_entityBinder.AddBinding(nameof(EventViewerInfo.PpuRegisterReadColor), picPpuReads);
_entityBinder.AddBinding(nameof(EventViewerInfo.PpuRegisterWriteColor), picPpuWrites);
_entityBinder.AddBinding(nameof(EventViewerInfo.WorkRamRegisterReadColor), picWramReads);
_entityBinder.AddBinding(nameof(EventViewerInfo.WorkRamRegisterWriteColor), picWramWrites);
_entityBinder.AddBinding(nameof(EventViewerConfig.ApuRegisterReadColor), picApuReads);
_entityBinder.AddBinding(nameof(EventViewerConfig.ApuRegisterWriteColor), picApuWrites);
_entityBinder.AddBinding(nameof(EventViewerConfig.CpuRegisterReadColor), picCpuReads);
_entityBinder.AddBinding(nameof(EventViewerConfig.CpuRegisterWriteColor), picCpuWrites);
_entityBinder.AddBinding(nameof(EventViewerConfig.IrqColor), picIrq);
_entityBinder.AddBinding(nameof(EventViewerConfig.BreakpointColor), picMarkedBreakpoints);
_entityBinder.AddBinding(nameof(EventViewerConfig.NmiColor), picNmi);
_entityBinder.AddBinding(nameof(EventViewerConfig.PpuRegisterReadColor), picPpuReads);
_entityBinder.AddBinding(nameof(EventViewerConfig.PpuRegisterWriteColor), picPpuWrites);
_entityBinder.AddBinding(nameof(EventViewerConfig.WorkRamRegisterReadColor), picWramReads);
_entityBinder.AddBinding(nameof(EventViewerConfig.WorkRamRegisterWriteColor), picWramWrites);
_entityBinder.AddBinding(nameof(EventViewerInfo.ShowApuRegisterReads), chkShowApuRegisterReads);
_entityBinder.AddBinding(nameof(EventViewerInfo.ShowApuRegisterWrites), chkShowApuRegisterWrites);
_entityBinder.AddBinding(nameof(EventViewerInfo.ShowCpuRegisterReads), chkShowCpuRegisterReads);
_entityBinder.AddBinding(nameof(EventViewerInfo.ShowCpuRegisterWrites), chkShowCpuRegisterWrites);
_entityBinder.AddBinding(nameof(EventViewerInfo.ShowIrq), chkShowIrq);
_entityBinder.AddBinding(nameof(EventViewerInfo.ShowMarkedBreakpoints), chkShowMarkedBreakpoints);
_entityBinder.AddBinding(nameof(EventViewerInfo.ShowNmi), chkShowNmi);
_entityBinder.AddBinding(nameof(EventViewerInfo.ShowPpuRegisterReads), chkShowPpuRegisterReads);
_entityBinder.AddBinding(nameof(EventViewerInfo.ShowPpuRegisterWrites), chkShowPpuRegisterWrites);
_entityBinder.AddBinding(nameof(EventViewerInfo.ShowWorkRamRegisterReads), chkShowWorkRamRegisterReads);
_entityBinder.AddBinding(nameof(EventViewerInfo.ShowWorkRamRegisterWrites), chkShowWorkRamRegisterWrites);
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowApuRegisterReads), chkShowApuRegisterReads);
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowApuRegisterWrites), chkShowApuRegisterWrites);
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowCpuRegisterReads), chkShowCpuRegisterReads);
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowCpuRegisterWrites), chkShowCpuRegisterWrites);
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowIrq), chkShowIrq);
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowMarkedBreakpoints), chkShowMarkedBreakpoints);
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowNmi), chkShowNmi);
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowPpuRegisterReads), chkShowPpuRegisterReads);
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowPpuRegisterWrites), chkShowPpuRegisterWrites);
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowWorkRamRegisterReads), chkShowWorkRamRegisterReads);
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowWorkRamRegisterWrites), chkShowWorkRamRegisterWrites);
_entityBinder.AddBinding(nameof(EventViewerInfo.ShowPreviousFrameEvents), chkShowPreviousFrameEvents);
_entityBinder.AddBinding(nameof(EventViewerConfig.ShowPreviousFrameEvents), chkShowPreviousFrameEvents);
_entityBinder.UpdateUI();
@ -136,14 +137,15 @@ namespace Mesen.GUI.Debugger
g.DrawImage(_overlayBitmap, 0, 0);
if(_lastPos.X >= 0) {
string location = _lastPos.X / 2 + ", " + (_lastPos.Y / 2);
string location = _lastPos.X + ", " + _lastPos.Y;
SizeF size = g.MeasureString(location, _overlayFont);
int x = _lastPos.X + 15;
int y = _lastPos.Y - (int)size.Height - 5;
if(x + size.Width > _displayBitmap.Width - 5) {
x -= (int)size.Width + 20;
int x = _lastPos.X + 5;
int y = _lastPos.Y - (int)size.Height / 2 - 5;
if(x*2 - picViewer.ScrollOffsets.X / picViewer.ImageScale + size.Width > (picViewer.Width / picViewer.ImageScale) - 5) {
x -= (int)size.Width / 2 + 10;
}
if(y < size.Height + 5) {
if(y*2 - picViewer.ScrollOffsets.Y / picViewer.ImageScale < size.Height + 5) {
y = _lastPos.Y + 5;
}
@ -151,6 +153,7 @@ namespace Mesen.GUI.Debugger
}
}
picViewer.ImageSize = new Size(_baseWidth, _baseHeight);
picViewer.Image = _displayBitmap;
_needUpdate = false;
}
@ -188,8 +191,8 @@ namespace Mesen.GUI.Debugger
private Point GetCycleScanline(Point location)
{
return new Point(
((location.X & ~0x01) / (_zoomed ? 2 : 1)) / 2,
((location.Y & ~0x01) / (_zoomed ? 2 : 1)) / 2
((location.X & ~0x01) / this.ImageScale) / 2,
((location.Y & ~0x01) / this.ImageScale) / 2
);
}
@ -237,11 +240,10 @@ namespace Mesen.GUI.Debugger
break;
}
double scale = _zoomed ? 2 : 1;
UpdateOverlay(new Point((int)(evt.Cycle * 2 * scale), (int)(evt.Scanline * 2 * scale)));
UpdateOverlay(new Point((int)(evt.Cycle * 2 * this.ImageScale), (int)(evt.Scanline * 2 * this.ImageScale)));
Form parentForm = this.FindForm();
Point location = parentForm.PointToClient(picViewer.PointToScreen(e.Location));
Point location = parentForm.PointToClient(this.PointToScreen(new Point(e.Location.X - picViewer.ScrollOffsets.X, e.Location.Y - picViewer.ScrollOffsets.Y)));
BaseForm.GetPopupTooltip(parentForm).SetTooltip(location, values);
}
@ -260,22 +262,20 @@ namespace Mesen.GUI.Debugger
{
UpdateDisplay(false);
}
private void picPicture_DoubleClick(object sender, EventArgs e)
{
_zoomed = !_zoomed;
UpdateViewerSize();
}
private void UpdateViewerSize()
{
picViewer.Width = (_zoomed ? _baseWidth * 2 : _baseWidth) + 2;
picViewer.Height = (_zoomed ? _baseHeight * 2 : _baseHeight) + 2;
}
private void chkOption_Click(object sender, EventArgs e)
{
RefreshViewer();
}
public void ZoomIn()
{
picViewer.ZoomIn();
}
public void ZoomOut()
{
picViewer.ZoomOut();
}
}
}

View file

@ -28,30 +28,116 @@
private void InitializeComponent()
{
this.ctrlPpuView = new Mesen.GUI.Debugger.ctrlEventViewerPpuView();
this.mnuMain = new Mesen.GUI.Controls.ctrlMesenMenuStrip();
this.mnuFile = new System.Windows.Forms.ToolStripMenuItem();
this.mnuClose = new System.Windows.Forms.ToolStripMenuItem();
this.mnuView = new System.Windows.Forms.ToolStripMenuItem();
this.mnuRefreshOnBreakPause = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator();
this.mnuZoomIn = new System.Windows.Forms.ToolStripMenuItem();
this.mnuZoomOut = new System.Windows.Forms.ToolStripMenuItem();
this.mnuMain.SuspendLayout();
this.SuspendLayout();
//
// ctrlPpuView
//
this.ctrlPpuView.Dock = System.Windows.Forms.DockStyle.Fill;
this.ctrlPpuView.Location = new System.Drawing.Point(0, 0);
this.ctrlPpuView.ImageScale = 1;
this.ctrlPpuView.Location = new System.Drawing.Point(0, 24);
this.ctrlPpuView.Name = "ctrlPpuView";
this.ctrlPpuView.Size = new System.Drawing.Size(945, 531);
this.ctrlPpuView.TabIndex = 0;
//
// mnuMain
//
this.mnuMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.mnuFile,
this.mnuView});
this.mnuMain.Location = new System.Drawing.Point(0, 0);
this.mnuMain.Name = "mnuMain";
this.mnuMain.Size = new System.Drawing.Size(945, 24);
this.mnuMain.TabIndex = 10;
this.mnuMain.Text = "ctrlMesenMenuStrip1";
//
// mnuFile
//
this.mnuFile.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.mnuClose});
this.mnuFile.Name = "mnuFile";
this.mnuFile.Size = new System.Drawing.Size(37, 20);
this.mnuFile.Text = "File";
//
// mnuClose
//
this.mnuClose.Image = global::Mesen.GUI.Properties.Resources.Exit;
this.mnuClose.Name = "mnuClose";
this.mnuClose.Size = new System.Drawing.Size(103, 22);
this.mnuClose.Text = "Close";
//
// mnuView
//
this.mnuView.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.mnuRefreshOnBreakPause,
this.toolStripMenuItem1,
this.mnuZoomIn,
this.mnuZoomOut});
this.mnuView.Name = "mnuView";
this.mnuView.Size = new System.Drawing.Size(44, 20);
this.mnuView.Text = "View";
//
// mnuRefreshOnBreakPause
//
this.mnuRefreshOnBreakPause.CheckOnClick = true;
this.mnuRefreshOnBreakPause.Name = "mnuRefreshOnBreakPause";
this.mnuRefreshOnBreakPause.Size = new System.Drawing.Size(198, 22);
this.mnuRefreshOnBreakPause.Text = "Refresh on break/pause";
this.mnuRefreshOnBreakPause.Click += new System.EventHandler(this.mnuRefreshOnBreakPause_Click);
//
// toolStripMenuItem1
//
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
this.toolStripMenuItem1.Size = new System.Drawing.Size(195, 6);
//
// mnuZoomIn
//
this.mnuZoomIn.Name = "mnuZoomIn";
this.mnuZoomIn.Size = new System.Drawing.Size(198, 22);
this.mnuZoomIn.Text = "Zoom In";
//
// mnuZoomOut
//
this.mnuZoomOut.Name = "mnuZoomOut";
this.mnuZoomOut.Size = new System.Drawing.Size(198, 22);
this.mnuZoomOut.Text = "Zoom Out";
//
// frmEventViewer
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(945, 531);
this.ClientSize = new System.Drawing.Size(945, 555);
this.Controls.Add(this.ctrlPpuView);
this.Controls.Add(this.mnuMain);
this.Name = "frmEventViewer";
this.Text = "Event Viewer";
this.Controls.SetChildIndex(this.mnuMain, 0);
this.Controls.SetChildIndex(this.ctrlPpuView, 0);
this.mnuMain.ResumeLayout(false);
this.mnuMain.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private ctrlEventViewerPpuView ctrlPpuView;
private GUI.Controls.ctrlMesenMenuStrip mnuMain;
private System.Windows.Forms.ToolStripMenuItem mnuFile;
private System.Windows.Forms.ToolStripMenuItem mnuClose;
private System.Windows.Forms.ToolStripMenuItem mnuView;
private System.Windows.Forms.ToolStripMenuItem mnuRefreshOnBreakPause;
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1;
private System.Windows.Forms.ToolStripMenuItem mnuZoomIn;
private System.Windows.Forms.ToolStripMenuItem mnuZoomOut;
}
}

View file

@ -1,4 +1,5 @@
using Mesen.GUI.Forms;
using Mesen.GUI.Config;
using Mesen.GUI.Forms;
using System;
using System.Collections.Generic;
using System.ComponentModel;
@ -26,6 +27,18 @@ namespace Mesen.GUI.Debugger
base.OnLoad(e);
if(!this.DesignMode) {
InitShortcuts();
EventViewerConfig config = ConfigManager.Config.Debug.EventViewer;
if(!config.WindowSize.IsEmpty) {
this.StartPosition = FormStartPosition.Manual;
this.Size = config.WindowSize;
this.Location = config.WindowLocation;
}
mnuRefreshOnBreakPause.Checked = ConfigManager.Config.Debug.EventViewer.RefreshOnBreakPause;
ctrlPpuView.ImageScale = config.ImageScale;
_notifListener = new NotificationListener();
_notifListener.OnNotification += OnNotificationReceived;
}
@ -35,12 +48,35 @@ namespace Mesen.GUI.Debugger
{
base.OnFormClosed(e);
_notifListener?.Dispose();
EventViewerConfig config = ConfigManager.Config.Debug.EventViewer;
config.WindowSize = this.WindowState != FormWindowState.Normal ? this.RestoreBounds.Size : this.Size;
config.WindowLocation = this.WindowState != FormWindowState.Normal ? this.RestoreBounds.Location : this.Location;
config.ImageScale = ctrlPpuView.ImageScale;
}
private void InitShortcuts()
{
mnuZoomIn.InitShortcut(this, nameof(DebuggerShortcutsConfig.ZoomIn));
mnuZoomOut.InitShortcut(this, nameof(DebuggerShortcutsConfig.ZoomOut));
mnuZoomIn.Click += (s, e) => ctrlPpuView.ZoomIn();
mnuZoomOut.Click += (s, e) => ctrlPpuView.ZoomOut();
mnuClose.Click += (s, e) => this.Close();
}
private void OnNotificationReceived(NotificationEventArgs e)
{
switch(e.NotificationType) {
case ConsoleNotificationType.CodeBreak:
if(ConfigManager.Config.Debug.EventViewer.RefreshOnBreakPause) {
ctrlPpuView.RefreshData();
this.BeginInvoke((Action)(() => {
ctrlPpuView.RefreshViewer();
}));
}
break;
case ConsoleNotificationType.EventViewerRefresh:
if((DateTime.Now - _lastUpdate).Milliseconds > 10) {
_lastUpdate = DateTime.Now;
@ -53,5 +89,11 @@ namespace Mesen.GUI.Debugger
break;
}
}
private void mnuRefreshOnBreakPause_Click(object sender, EventArgs e)
{
ConfigManager.Config.Debug.EventViewer.RefreshOnBreakPause = mnuRefreshOnBreakPause.Checked;
ConfigManager.ApplyChanges();
}
}
}

View file

@ -120,4 +120,7 @@
<metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="mnuMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>107, 17</value>
</metadata>
</root>

View file

@ -22,7 +22,10 @@ namespace Mesen.GUI.Debugger.PpuViewer
public Size ImageSize { get { return _imageSize; } set { _imageSize = value; UpdateMapSize(); } }
public Image Image { get { return ctrlImageViewer.Image; } set { ctrlImageViewer.Image = value; } }
public int ImageScale { get { return _scale; } set { _scale = value; UpdateMapSize(); } }
public Point ScrollOffsets { get { return new Point(ctrlPanel.HorizontalScroll.Value, ctrlPanel.VerticalScroll.Value); } }
public new event EventHandler MouseLeave { add { ctrlImageViewer.MouseLeave += value; } remove { ctrlImageViewer.MouseLeave -= value; } }
public new event MouseEventHandler MouseMove { add { ctrlImageViewer.MouseMove += value; } remove { ctrlImageViewer.MouseMove -= value; } }
public new event MouseEventHandler MouseClick { add { ctrlImageViewer.MouseClick += value; } remove { ctrlImageViewer.MouseClick -= value; } }
public ctrlImagePanel()

View file

@ -326,7 +326,7 @@
<DependentUpon>ctrlTooltip.cs</DependentUpon>
</Compile>
<Compile Include="Debugger\Workspace\DebugWorkspace.cs" />
<Compile Include="Debugger\Config\EventViewerInfo.cs" />
<Compile Include="Debugger\Config\EventViewerConfig.cs" />
<Compile Include="Debugger\Config\HexEditorInfo.cs" />
<Compile Include="Config\RecentItems.cs" />
<Compile Include="Debugger\Config\TraceLoggerInfo.cs" />