NESPPU, NesNamableViewer - reduce a lot of copy/pasta

This commit is contained in:
adelikat 2020-06-02 20:33:38 -05:00
parent bafc31d282
commit ac20835172
7 changed files with 92 additions and 201 deletions

View File

@ -254,5 +254,19 @@ namespace BizHawk.Client.EmuHawk
? effect
: DragDropEffects.None;
}
public static Bitmap ToBitMap(this Control control)
{
var b = new Bitmap(control.Width, control.Height);
var rect = new Rectangle(new Point(0, 0), control.Size);
control.DrawToBitmap(b, rect);
return b;
}
public static void ToClipBoard(this Bitmap bitmap)
{
using var img = bitmap;
Clipboard.SetImage(img);
}
}
}

View File

@ -1,6 +1,7 @@
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Windows.Forms;
using BizHawk.Client.Common;
@ -179,14 +180,47 @@ namespace BizHawk.Client.EmuHawk
NameTableView.Refresh();
}
public void Screenshot(Bitmap b)
{
using var sfd = new SaveFileDialog
{
FileName = $"{Global.Game.FilesystemSafeName()}-Nametables",
InitialDirectory = Global.Config.PathEntries.ScreenshotAbsolutePathFor("NES"),
Filter = FilesystemFilterSet.Screenshots.ToString(),
RestoreDirectory = true
};
var result = sfd.ShowHawkDialog();
if (result != DialogResult.OK)
{
return;
}
var file = new FileInfo(sfd.FileName);
ImageFormat i;
string extension = file.Extension.ToUpper();
switch (extension)
{
default:
case ".PNG":
i = ImageFormat.Png;
break;
case ".BMP":
i = ImageFormat.Bmp;
break;
}
b.Save(file.FullName, i);
}
private void ScreenshotMenuItem_Click(object sender, EventArgs e)
{
NameTableView.Screenshot();
Screenshot(NameTableView.ToBitMap());
}
private void ScreenshotToClipboardMenuItem_Click(object sender, EventArgs e)
{
NameTableView.ScreenshotToClipboard();
NameTableView.ToBitMap().ToClipBoard();
}
private void ExitMenuItem_Click(object sender, EventArgs e)
@ -207,7 +241,7 @@ namespace BizHawk.Client.EmuHawk
case Keys.C:
if (e.Modifiers == Keys.Control)
{
NameTableView.ScreenshotToClipboard();
NameTableView.ToBitMap().ToClipBoard();
}
break;

View File

@ -1,6 +1,7 @@
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Windows.Forms;
using BizHawk.Client.Common;
@ -309,34 +310,67 @@ namespace BizHawk.Client.EmuHawk
}
}
private void Screenshot(Bitmap b, string suffix)
{
var sfd = new SaveFileDialog
{
FileName = $"{Global.Game.FilesystemSafeName()}-{suffix}",
InitialDirectory = Config.PathEntries.ScreenshotAbsolutePathFor("NES"),
Filter = FilesystemFilterSet.Screenshots.ToString(),
RestoreDirectory = true
};
var result = sfd.ShowHawkDialog();
if (result != DialogResult.OK)
{
return;
}
var file = new FileInfo(sfd.FileName);
ImageFormat i;
string extension = file.Extension.ToUpper();
switch (extension)
{
default:
case ".PNG":
i = ImageFormat.Png;
break;
case ".BMP":
i = ImageFormat.Bmp;
break;
}
b.Save(file.FullName, i);
}
private void SavePaletteScreenshotMenuItem_Click(object sender, EventArgs e)
{
PaletteView.Screenshot();
Screenshot(PaletteView.ToBitMap(), "Palettes");
}
private void SavePatternScreenshotMenuItem_Click(object sender, EventArgs e)
{
PatternView.Screenshot();
Screenshot(PatternView.ToBitMap(), "Patterns");
}
private void SaveSpriteScreenshotMenuItem_Click(object sender, EventArgs e)
{
SpriteView.Screenshot();
Screenshot(SpriteView.ToBitMap(), "Sprites");
}
private void CopyPaletteToClipboardMenuItem_Click(object sender, EventArgs e)
{
PaletteView.ScreenshotToClipboard();
PaletteView.ToBitMap().ToClipBoard();
}
private void CopyPatternToClipboardMenuItem_Click(object sender, EventArgs e)
{
PatternView.ScreenshotToClipboard();
PatternView.ToBitMap().ToClipBoard();
}
private void CopySpriteToClipboardMenuItem_Click(object sender, EventArgs e)
{
SpriteView.ScreenshotToClipboard();
SpriteView.ToBitMap().ToClipBoard();
}
private void ExitMenuItem_Click(object sender, EventArgs e)

View File

@ -65,42 +65,7 @@ namespace BizHawk.Client.EmuHawk
}
}
public void Screenshot()
{
using var sfd = new SaveFileDialog
{
FileName = $"{Global.Game.FilesystemSafeName()}-Nametables",
InitialDirectory = Global.Config.PathEntries.ScreenshotAbsolutePathFor("NES"),
Filter = FilesystemFilterSet.Screenshots.ToString(),
RestoreDirectory = true
};
var result = sfd.ShowHawkDialog();
if (result != DialogResult.OK)
{
return;
}
var file = new FileInfo(sfd.FileName);
using Bitmap b = new Bitmap(Width, Height);
Rectangle rect = new Rectangle(new Point(0, 0), Size);
DrawToBitmap(b, rect);
ImageFormat i;
string extension = file.Extension.ToUpper();
switch (extension)
{
default:
case ".PNG":
i = ImageFormat.Png;
break;
case ".BMP":
i = ImageFormat.Bmp;
break;
}
b.Save(file.FullName, i);
}
public void ScreenshotToClipboard()
{

View File

@ -1,10 +1,5 @@
using System.Drawing;
using System.Windows.Forms;
using System.IO;
using System.Drawing.Imaging;
using BizHawk.Client.Common;
using BizHawk.Emulation.Common;
namespace BizHawk.Client.EmuHawk
{
@ -70,52 +65,5 @@ namespace BizHawk.Client.EmuHawk
}
return false;
}
public void Screenshot()
{
var sfd = new SaveFileDialog
{
FileName = $"{Global.Game.FilesystemSafeName()}-Palettes",
InitialDirectory = Global.Config.PathEntries.ScreenshotAbsolutePathFor("NES"),
Filter = FilesystemFilterSet.Screenshots.ToString(),
RestoreDirectory = true
};
var result = sfd.ShowHawkDialog();
if (result != DialogResult.OK)
{
return;
}
var file = new FileInfo(sfd.FileName);
var b = new Bitmap(Width, Height);
var rect = new Rectangle(new Point(0, 0), Size);
DrawToBitmap(b, rect);
ImageFormat i;
string extension = file.Extension.ToUpper();
switch (extension)
{
default:
case ".PNG":
i = ImageFormat.Png;
break;
case ".BMP":
i = ImageFormat.Bmp;
break;
}
b.Save(file.FullName, i);
}
public void ScreenshotToClipboard()
{
var b = new Bitmap(Width, Height);
var rect = new Rectangle(new Point(0, 0), Size);
DrawToBitmap(b, rect);
using var img = b;
Clipboard.SetImage(img);
}
}
}

View File

@ -1,10 +1,5 @@
using System.Drawing;
using System.Windows.Forms;
using System.IO;
using System.Drawing.Imaging;
using BizHawk.Client.Common;
using BizHawk.Emulation.Common;
namespace BizHawk.Client.EmuHawk
{
@ -32,52 +27,5 @@ namespace BizHawk.Client.EmuHawk
{
e.Graphics.DrawImage(Pattern, 0, 0);
}
public void Screenshot()
{
var sfd = new SaveFileDialog
{
FileName = $"{Global.Game.FilesystemSafeName()}-Patterns",
InitialDirectory = Global.Config.PathEntries.ScreenshotAbsolutePathFor("NES"),
Filter = FilesystemFilterSet.Screenshots.ToString(),
RestoreDirectory = true
};
var result = sfd.ShowHawkDialog();
if (result != DialogResult.OK)
{
return;
}
var file = new FileInfo(sfd.FileName);
var b = new Bitmap(Width, Height);
var rect = new Rectangle(new Point(0, 0), Size);
DrawToBitmap(b, rect);
ImageFormat i;
string extension = file.Extension.ToUpper();
switch (extension)
{
default:
case ".PNG":
i = ImageFormat.Png;
break;
case ".BMP":
i = ImageFormat.Bmp;
break;
}
b.Save(file.FullName, i);
}
public void ScreenshotToClipboard()
{
var b = new Bitmap(Width, Height);
var rect = new Rectangle(new Point(0, 0), Size);
DrawToBitmap(b, rect);
using var img = b;
Clipboard.SetImage(img);
}
}
}

View File

@ -1,10 +1,5 @@
using System.Drawing;
using System.Windows.Forms;
using System.IO;
using System.Drawing.Imaging;
using BizHawk.Client.Common;
using BizHawk.Emulation.Common;
namespace BizHawk.Client.EmuHawk
{
@ -34,52 +29,5 @@ namespace BizHawk.Client.EmuHawk
{
Display(e.Graphics);
}
public void Screenshot()
{
var sfd = new SaveFileDialog
{
FileName = $"{Global.Game.FilesystemSafeName()}-Sprites",
InitialDirectory = Global.Config.PathEntries.ScreenshotAbsolutePathFor("NES"),
Filter = FilesystemFilterSet.Screenshots.ToString(),
RestoreDirectory = true
};
var result = sfd.ShowHawkDialog();
if (result != DialogResult.OK)
{
return;
}
var file = new FileInfo(sfd.FileName);
var b = new Bitmap(Width, Height);
var rect = new Rectangle(new Point(0, 0), Size);
DrawToBitmap(b, rect);
ImageFormat i;
string extension = file.Extension.ToUpper();
switch (extension)
{
default:
case ".PNG":
i = ImageFormat.Png;
break;
case ".BMP":
i = ImageFormat.Bmp;
break;
}
b.Save(file.FullName, i);
}
public void ScreenshotToClipboard()
{
var b = new Bitmap(Width, Height);
var rect = new Rectangle(new Point(0, 0), Size);
DrawToBitmap(b, rect);
using var img = b;
Clipboard.SetImage(img);
}
}
}