From ac20835172674cbbc9b90fc5e45ece60c3386779 Mon Sep 17 00:00:00 2001 From: adelikat Date: Tue, 2 Jun 2020 20:33:38 -0500 Subject: [PATCH] NESPPU, NesNamableViewer - reduce a lot of copy/pasta --- .../Extensions/ControlExtensions.cs | 14 +++++ .../tools/NES/NESNameTableViewer.cs | 40 ++++++++++++-- .../tools/NES/NESPPU.cs | 46 +++++++++++++--- .../tools/NES/NameTableViewer.cs | 37 +------------ .../tools/NES/PaletteViewer.cs | 52 ------------------- .../tools/NES/PatternViewer.cs | 52 ------------------- .../tools/NES/SpriteViewer.cs | 52 ------------------- 7 files changed, 92 insertions(+), 201 deletions(-) diff --git a/src/BizHawk.Client.EmuHawk/Extensions/ControlExtensions.cs b/src/BizHawk.Client.EmuHawk/Extensions/ControlExtensions.cs index 2a08f1c7ac..866a9db62b 100644 --- a/src/BizHawk.Client.EmuHawk/Extensions/ControlExtensions.cs +++ b/src/BizHawk.Client.EmuHawk/Extensions/ControlExtensions.cs @@ -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); + } } } diff --git a/src/BizHawk.Client.EmuHawk/tools/NES/NESNameTableViewer.cs b/src/BizHawk.Client.EmuHawk/tools/NES/NESNameTableViewer.cs index 8df73485cf..283a9b8dac 100644 --- a/src/BizHawk.Client.EmuHawk/tools/NES/NESNameTableViewer.cs +++ b/src/BizHawk.Client.EmuHawk/tools/NES/NESNameTableViewer.cs @@ -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; diff --git a/src/BizHawk.Client.EmuHawk/tools/NES/NESPPU.cs b/src/BizHawk.Client.EmuHawk/tools/NES/NESPPU.cs index dfc4b23211..d78ef8cc6e 100644 --- a/src/BizHawk.Client.EmuHawk/tools/NES/NESPPU.cs +++ b/src/BizHawk.Client.EmuHawk/tools/NES/NESPPU.cs @@ -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) diff --git a/src/BizHawk.Client.EmuHawk/tools/NES/NameTableViewer.cs b/src/BizHawk.Client.EmuHawk/tools/NES/NameTableViewer.cs index 8f7d168c59..afdfb03c2e 100644 --- a/src/BizHawk.Client.EmuHawk/tools/NES/NameTableViewer.cs +++ b/src/BizHawk.Client.EmuHawk/tools/NES/NameTableViewer.cs @@ -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() { diff --git a/src/BizHawk.Client.EmuHawk/tools/NES/PaletteViewer.cs b/src/BizHawk.Client.EmuHawk/tools/NES/PaletteViewer.cs index 9fb1c6b930..a61cce8c59 100644 --- a/src/BizHawk.Client.EmuHawk/tools/NES/PaletteViewer.cs +++ b/src/BizHawk.Client.EmuHawk/tools/NES/PaletteViewer.cs @@ -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); - } } } diff --git a/src/BizHawk.Client.EmuHawk/tools/NES/PatternViewer.cs b/src/BizHawk.Client.EmuHawk/tools/NES/PatternViewer.cs index 9a7448ee5e..414da22be4 100644 --- a/src/BizHawk.Client.EmuHawk/tools/NES/PatternViewer.cs +++ b/src/BizHawk.Client.EmuHawk/tools/NES/PatternViewer.cs @@ -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); - } } } diff --git a/src/BizHawk.Client.EmuHawk/tools/NES/SpriteViewer.cs b/src/BizHawk.Client.EmuHawk/tools/NES/SpriteViewer.cs index 14e3685b40..903e077f2f 100644 --- a/src/BizHawk.Client.EmuHawk/tools/NES/SpriteViewer.cs +++ b/src/BizHawk.Client.EmuHawk/tools/NES/SpriteViewer.cs @@ -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); - } } }