Debugger: PPU Viewer - Added "Export to PNG" option
This commit is contained in:
parent
d03a0538d7
commit
766eea5829
6 changed files with 128 additions and 23 deletions
23
GUI.NET/Debugger/Controls/ctrlChrViewer.Designer.cs
generated
23
GUI.NET/Debugger/Controls/ctrlChrViewer.Designer.cs
generated
|
@ -63,6 +63,8 @@
|
|||
this.mnuCopyToClipboard = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.picChrBank2 = new System.Windows.Forms.PictureBox();
|
||||
this.toolTip = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.mnuExportToPng = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.tableLayoutPanel3.SuspendLayout();
|
||||
this.grpDisplayOptions.SuspendLayout();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
|
@ -464,9 +466,11 @@
|
|||
//
|
||||
this.ctxMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.mnuCopyHdPack,
|
||||
this.mnuCopyToClipboard});
|
||||
this.toolStripMenuItem1,
|
||||
this.mnuCopyToClipboard,
|
||||
this.mnuExportToPng});
|
||||
this.ctxMenu.Name = "ctxMenu";
|
||||
this.ctxMenu.Size = new System.Drawing.Size(222, 48);
|
||||
this.ctxMenu.Size = new System.Drawing.Size(222, 98);
|
||||
this.ctxMenu.Opening += new System.ComponentModel.CancelEventHandler(this.ctxMenu_Opening);
|
||||
//
|
||||
// mnuCopyHdPack
|
||||
|
@ -506,6 +510,19 @@
|
|||
this.toolTip.InitialDelay = 10;
|
||||
this.toolTip.ReshowDelay = 10;
|
||||
//
|
||||
// toolStripMenuItem1
|
||||
//
|
||||
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
|
||||
this.toolStripMenuItem1.Size = new System.Drawing.Size(218, 6);
|
||||
//
|
||||
// mnuExportToPng
|
||||
//
|
||||
this.mnuExportToPng.Image = global::Mesen.GUI.Properties.Resources.Export;
|
||||
this.mnuExportToPng.Name = "mnuExportToPng";
|
||||
this.mnuExportToPng.Size = new System.Drawing.Size(221, 22);
|
||||
this.mnuExportToPng.Text = "Export image to PNG";
|
||||
this.mnuExportToPng.Click += new System.EventHandler(this.mnuExportToPng_Click);
|
||||
//
|
||||
// ctrlChrViewer
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
|
@ -575,5 +592,7 @@
|
|||
private System.Windows.Forms.ToolStripMenuItem mnuCopyToClipboard;
|
||||
private System.Windows.Forms.CheckBox chkAutoPalette;
|
||||
private System.Windows.Forms.CheckBox chkShowSingleColorTilesInGrayscale;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuExportToPng;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@ using System.Windows.Forms;
|
|||
using System.Runtime.InteropServices;
|
||||
using Mesen.GUI.Controls;
|
||||
using Mesen.GUI.Config;
|
||||
using Mesen.GUI.Forms;
|
||||
|
||||
namespace Mesen.GUI.Debugger.Controls
|
||||
{
|
||||
|
@ -466,15 +467,33 @@ namespace Mesen.GUI.Debugger.Controls
|
|||
CopyToClipboard();
|
||||
}
|
||||
|
||||
private Bitmap GetCopyBitmap()
|
||||
{
|
||||
Bitmap copy = new Bitmap(128, 256);
|
||||
using(Graphics g = Graphics.FromImage(copy)) {
|
||||
g.DrawImage(_originalChrBanks[0], 0, 0);
|
||||
g.DrawImage(_originalChrBanks[1], 0, 128);
|
||||
}
|
||||
return copy;
|
||||
}
|
||||
|
||||
public void CopyToClipboard()
|
||||
{
|
||||
using(Bitmap copy = new Bitmap(128, 256)) {
|
||||
using(Graphics g = Graphics.FromImage(copy)) {
|
||||
g.DrawImage(_originalChrBanks[0], 0, 0);
|
||||
g.DrawImage(_originalChrBanks[1], 0, 128);
|
||||
}
|
||||
using(Bitmap copy = GetCopyBitmap()) {
|
||||
Clipboard.SetImage(copy);
|
||||
}
|
||||
}
|
||||
|
||||
private void mnuExportToPng_Click(object sender, EventArgs e)
|
||||
{
|
||||
using(SaveFileDialog sfd = new SaveFileDialog()) {
|
||||
sfd.SetFilter("PNG files|*.png");
|
||||
if(sfd.ShowDialog() == DialogResult.OK) {
|
||||
using(Bitmap copy = GetCopyBitmap()) {
|
||||
copy.Save(sfd.FileName, System.Drawing.Imaging.ImageFormat.Png);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -68,6 +68,8 @@
|
|||
this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.lblMirroring = new System.Windows.Forms.Label();
|
||||
this.lblMirroringType = new System.Windows.Forms.Label();
|
||||
this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.mnuExportToPng = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.tableLayoutPanel1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.picNametable)).BeginInit();
|
||||
this.ctxMenu.SuspendLayout();
|
||||
|
@ -120,9 +122,11 @@
|
|||
this.toolStripMenuItem1,
|
||||
this.mnuCopyHdPack,
|
||||
this.mnuCopyNametableHdPack,
|
||||
this.mnuCopyToClipboard});
|
||||
this.toolStripMenuItem2,
|
||||
this.mnuCopyToClipboard,
|
||||
this.mnuExportToPng});
|
||||
this.ctxMenu.Name = "ctxMenu";
|
||||
this.ctxMenu.Size = new System.Drawing.Size(261, 98);
|
||||
this.ctxMenu.Size = new System.Drawing.Size(261, 148);
|
||||
this.ctxMenu.Opening += new System.ComponentModel.CancelEventHandler(this.ctxMenu_Opening);
|
||||
//
|
||||
// mnuShowInChrViewer
|
||||
|
@ -532,6 +536,19 @@
|
|||
this.lblMirroringType.TabIndex = 1;
|
||||
this.lblMirroringType.Text = "Horizontal";
|
||||
//
|
||||
// toolStripMenuItem2
|
||||
//
|
||||
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
|
||||
this.toolStripMenuItem2.Size = new System.Drawing.Size(257, 6);
|
||||
//
|
||||
// mnuExportToPng
|
||||
//
|
||||
this.mnuExportToPng.Image = global::Mesen.GUI.Properties.Resources.Export;
|
||||
this.mnuExportToPng.Name = "mnuExportToPng";
|
||||
this.mnuExportToPng.Size = new System.Drawing.Size(260, 22);
|
||||
this.mnuExportToPng.Text = "Export image to PNG";
|
||||
this.mnuExportToPng.Click += new System.EventHandler(this.mnuExportToPng_Click);
|
||||
//
|
||||
// ctrlNametableViewer
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
|
@ -598,5 +615,7 @@
|
|||
private System.Windows.Forms.CheckBox chkUseGrayscalePalette;
|
||||
private System.Windows.Forms.CheckBox chkHighlightTileUpdates;
|
||||
private System.Windows.Forms.CheckBox chkHighlightAttributeUpdates;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem2;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuExportToPng;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -448,5 +448,15 @@ namespace Mesen.GUI.Debugger.Controls
|
|||
}
|
||||
Clipboard.SetText(sb.ToString());
|
||||
}
|
||||
|
||||
private void mnuExportToPng_Click(object sender, EventArgs e)
|
||||
{
|
||||
using(SaveFileDialog sfd = new SaveFileDialog()) {
|
||||
sfd.SetFilter("PNG files|*.png");
|
||||
if(sfd.ShowDialog() == DialogResult.OK) {
|
||||
_nametableImage.Save(sfd.FileName, System.Drawing.Imaging.ImageFormat.Png);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
this.mnuShowInChrViewer = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.mnuCopyHdPack = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mnuCopyAllSpritesHdPack = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mnuCopyToClipboard = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.lblScreenPreview = new System.Windows.Forms.Label();
|
||||
this.lblTile = new System.Windows.Forms.Label();
|
||||
|
@ -57,7 +58,8 @@
|
|||
this.chkBackgroundPriority = new System.Windows.Forms.CheckBox();
|
||||
this.ctrlTilePalette = new Mesen.GUI.Debugger.Controls.ctrlTilePalette();
|
||||
this.picSprites = new System.Windows.Forms.PictureBox();
|
||||
this.mnuCopyAllSpritesHdPack = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.mnuExportToPng = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.tableLayoutPanel3.SuspendLayout();
|
||||
this.grpSpriteInfo.SuspendLayout();
|
||||
this.tableLayoutPanel4.SuspendLayout();
|
||||
|
@ -187,9 +189,11 @@
|
|||
this.toolStripMenuItem1,
|
||||
this.mnuCopyHdPack,
|
||||
this.mnuCopyAllSpritesHdPack,
|
||||
this.mnuCopyToClipboard});
|
||||
this.toolStripMenuItem2,
|
||||
this.mnuCopyToClipboard,
|
||||
this.mnuExportToPng});
|
||||
this.ctxMenu.Name = "ctxMenu";
|
||||
this.ctxMenu.Size = new System.Drawing.Size(255, 120);
|
||||
this.ctxMenu.Size = new System.Drawing.Size(255, 148);
|
||||
this.ctxMenu.Opening += new System.ComponentModel.CancelEventHandler(this.ctxMenu_Opening);
|
||||
//
|
||||
// mnuShowInChrViewer
|
||||
|
@ -213,6 +217,13 @@
|
|||
this.mnuCopyHdPack.Text = "Copy Tile (HD Pack Format)";
|
||||
this.mnuCopyHdPack.Click += new System.EventHandler(this.mnuCopyHdPack_Click);
|
||||
//
|
||||
// mnuCopyAllSpritesHdPack
|
||||
//
|
||||
this.mnuCopyAllSpritesHdPack.Name = "mnuCopyAllSpritesHdPack";
|
||||
this.mnuCopyAllSpritesHdPack.Size = new System.Drawing.Size(254, 22);
|
||||
this.mnuCopyAllSpritesHdPack.Text = "Copy All Sprites (HD Pack Format)";
|
||||
this.mnuCopyAllSpritesHdPack.Click += new System.EventHandler(this.mnuCopyAllSpritesHdPack_Click);
|
||||
//
|
||||
// mnuCopyToClipboard
|
||||
//
|
||||
this.mnuCopyToClipboard.Image = global::Mesen.GUI.Properties.Resources.Copy;
|
||||
|
@ -410,12 +421,18 @@
|
|||
this.picSprites.MouseLeave += new System.EventHandler(this.picSprites_MouseLeave);
|
||||
this.picSprites.MouseMove += new System.Windows.Forms.MouseEventHandler(this.picSprites_MouseMove);
|
||||
//
|
||||
// mnuCopyAllSpritesHdPack
|
||||
// toolStripMenuItem2
|
||||
//
|
||||
this.mnuCopyAllSpritesHdPack.Name = "mnuCopyAllSpritesHdPack";
|
||||
this.mnuCopyAllSpritesHdPack.Size = new System.Drawing.Size(254, 22);
|
||||
this.mnuCopyAllSpritesHdPack.Text = "Copy All Sprites (HD Pack Format)";
|
||||
this.mnuCopyAllSpritesHdPack.Click += new System.EventHandler(this.mnuCopyAllSpritesHdPack_Click);
|
||||
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
|
||||
this.toolStripMenuItem2.Size = new System.Drawing.Size(251, 6);
|
||||
//
|
||||
// mnuExportToPng
|
||||
//
|
||||
this.mnuExportToPng.Image = global::Mesen.GUI.Properties.Resources.Export;
|
||||
this.mnuExportToPng.Name = "mnuExportToPng";
|
||||
this.mnuExportToPng.Size = new System.Drawing.Size(254, 22);
|
||||
this.mnuExportToPng.Text = "Export image to PNG";
|
||||
this.mnuExportToPng.Click += new System.EventHandler(this.mnuExportToPng_Click);
|
||||
//
|
||||
// ctrlSpriteViewer
|
||||
//
|
||||
|
@ -470,5 +487,7 @@
|
|||
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuCopyToClipboard;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuCopyAllSpritesHdPack;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem2;
|
||||
private System.Windows.Forms.ToolStripMenuItem mnuExportToPng;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@ using System.Runtime.InteropServices;
|
|||
using Mesen.GUI.Controls;
|
||||
using System.Drawing.Imaging;
|
||||
using Mesen.GUI.Config;
|
||||
using Mesen.GUI.Forms;
|
||||
|
||||
namespace Mesen.GUI.Debugger.Controls
|
||||
{
|
||||
|
@ -339,18 +340,36 @@ namespace Mesen.GUI.Debugger.Controls
|
|||
CopyToClipboard();
|
||||
}
|
||||
|
||||
public void CopyToClipboard()
|
||||
private Bitmap GetCopyBitmap()
|
||||
{
|
||||
Bitmap src = _copyPreview ? _screenPreview : _imgSprites;
|
||||
using(Bitmap target = new Bitmap(src.Width, src.Height)) {
|
||||
using(Graphics g = Graphics.FromImage(target)) {
|
||||
g.Clear(Color.FromArgb(64, 64, 64));
|
||||
g.DrawImage(src, 0, 0);
|
||||
}
|
||||
Bitmap target = new Bitmap(src.Width, src.Height);
|
||||
using(Graphics g = Graphics.FromImage(target)) {
|
||||
g.Clear(Color.FromArgb(64, 64, 64));
|
||||
g.DrawImage(src, 0, 0);
|
||||
}
|
||||
return target;
|
||||
}
|
||||
|
||||
public void CopyToClipboard()
|
||||
{
|
||||
using(Bitmap target = GetCopyBitmap()) {
|
||||
Clipboard.SetImage(target);
|
||||
}
|
||||
}
|
||||
|
||||
private void mnuExportToPng_Click(object sender, EventArgs e)
|
||||
{
|
||||
using(SaveFileDialog sfd = new SaveFileDialog()) {
|
||||
sfd.SetFilter("PNG files|*.png");
|
||||
if(sfd.ShowDialog() == DialogResult.OK) {
|
||||
using(Bitmap target = GetCopyBitmap()) {
|
||||
target.Save(sfd.FileName, System.Drawing.Imaging.ImageFormat.Png);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void mnuCopyAllSpritesHdPack_Click(object sender, EventArgs e)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
|
Loading…
Add table
Reference in a new issue