From b2328f2e07a5a847d299d77fcf4bdcf2194e8b66 Mon Sep 17 00:00:00 2001 From: "andres.delikat" Date: Thu, 15 Sep 2011 00:49:25 +0000 Subject: [PATCH] NES PPU - add screen shot menu & context menus for palette, pattern, and sprite viewers. Tweak NES Nametable viewer screenshot code --- .../NEStools/NESNameTableViewer.Designer.cs | 46 +-- .../NEStools/NESNameTableViewer.cs | 39 +- .../NEStools/NESPPU.Designer.cs | 380 ++++++++++++------ BizHawk.MultiClient/NEStools/NESPPU.cs | 40 ++ BizHawk.MultiClient/NEStools/NESPPU.resx | 9 + .../NEStools/NameTableViewer.cs | 37 ++ BizHawk.MultiClient/NEStools/PaletteViewer.cs | 37 ++ BizHawk.MultiClient/NEStools/PatternViewer.cs | 37 ++ BizHawk.MultiClient/NEStools/SpriteViewer.cs | 37 ++ 9 files changed, 487 insertions(+), 175 deletions(-) diff --git a/BizHawk.MultiClient/NEStools/NESNameTableViewer.Designer.cs b/BizHawk.MultiClient/NEStools/NESNameTableViewer.Designer.cs index d4ee83fcff..30d344ab99 100644 --- a/BizHawk.MultiClient/NEStools/NESNameTableViewer.Designer.cs +++ b/BizHawk.MultiClient/NEStools/NESNameTableViewer.Designer.cs @@ -62,10 +62,10 @@ this.screenshotToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); - this.NameTableView = new BizHawk.MultiClient.NameTableViewer(); this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components); this.screenshotAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.refreshImageToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.NameTableView = new BizHawk.MultiClient.NameTableViewer(); this.groupBox1.SuspendLayout(); this.menuStrip1.SuspendLayout(); this.groupBox2.SuspendLayout(); @@ -393,6 +393,28 @@ this.toolStripSeparator2.Name = "toolStripSeparator2"; this.toolStripSeparator2.Size = new System.Drawing.Size(190, 6); // + // contextMenuStrip1 + // + this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.screenshotAsToolStripMenuItem, + this.refreshImageToolStripMenuItem}); + this.contextMenuStrip1.Name = "contextMenuStrip1"; + this.contextMenuStrip1.Size = new System.Drawing.Size(157, 48); + // + // screenshotAsToolStripMenuItem + // + this.screenshotAsToolStripMenuItem.Name = "screenshotAsToolStripMenuItem"; + this.screenshotAsToolStripMenuItem.Size = new System.Drawing.Size(156, 22); + this.screenshotAsToolStripMenuItem.Text = "&Save Image..."; + this.screenshotAsToolStripMenuItem.Click += new System.EventHandler(this.screenshotAsToolStripMenuItem_Click); + // + // refreshImageToolStripMenuItem + // + this.refreshImageToolStripMenuItem.Name = "refreshImageToolStripMenuItem"; + this.refreshImageToolStripMenuItem.Size = new System.Drawing.Size(156, 22); + this.refreshImageToolStripMenuItem.Text = "&Refresh Image"; + this.refreshImageToolStripMenuItem.Click += new System.EventHandler(this.refreshImageToolStripMenuItem_Click); + // // NameTableView // this.NameTableView.BackColor = System.Drawing.Color.Transparent; @@ -404,28 +426,6 @@ this.NameTableView.MouseLeave += new System.EventHandler(this.NameTableView_MouseLeave); this.NameTableView.MouseMove += new System.Windows.Forms.MouseEventHandler(this.NameTableView_MouseMove); // - // contextMenuStrip1 - // - this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.screenshotAsToolStripMenuItem, - this.refreshImageToolStripMenuItem}); - this.contextMenuStrip1.Name = "contextMenuStrip1"; - this.contextMenuStrip1.Size = new System.Drawing.Size(167, 70); - // - // screenshotAsToolStripMenuItem - // - this.screenshotAsToolStripMenuItem.Name = "screenshotAsToolStripMenuItem"; - this.screenshotAsToolStripMenuItem.Size = new System.Drawing.Size(166, 22); - this.screenshotAsToolStripMenuItem.Text = "Screenshot As..."; - this.screenshotAsToolStripMenuItem.Click += new System.EventHandler(this.screenshotAsToolStripMenuItem_Click); - // - // refreshImageToolStripMenuItem - // - this.refreshImageToolStripMenuItem.Name = "refreshImageToolStripMenuItem"; - this.refreshImageToolStripMenuItem.Size = new System.Drawing.Size(166, 22); - this.refreshImageToolStripMenuItem.Text = "Refresh Image"; - this.refreshImageToolStripMenuItem.Click += new System.EventHandler(this.refreshImageToolStripMenuItem_Click); - // // NESNameTableViewer // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); diff --git a/BizHawk.MultiClient/NEStools/NESNameTableViewer.cs b/BizHawk.MultiClient/NEStools/NESNameTableViewer.cs index 06a19a990a..2747a4b616 100644 --- a/BizHawk.MultiClient/NEStools/NESNameTableViewer.cs +++ b/BizHawk.MultiClient/NEStools/NESNameTableViewer.cs @@ -256,47 +256,12 @@ namespace BizHawk.MultiClient private void screenshotToolStripMenuItem_Click(object sender, EventArgs e) { - ScreenshotAs(); - } - - private void ScreenshotAs() - { - var sfd = new SaveFileDialog(); - sfd.FileName = PathManager.FilesystemSafeName(Global.Game) + "-nametable"; - sfd.InitialDirectory = PathManager.MakeAbsolutePath(Global.Config.PathNESScreenshots, "NES"); - sfd.Filter = "PNG (*.png)|*.png|Bitmap (*.bmp)|*.bmp|All Files|*.*"; - - sfd.RestoreDirectory = true; - Global.Sound.StopSound(); - var result = sfd.ShowDialog(); - Global.Sound.StartSound(); - if (result != DialogResult.OK) - return; - - var file = new FileInfo(sfd.FileName); - Bitmap b = new Bitmap(NameTableView.Width, NameTableView.Height); - Rectangle rect = new Rectangle(new Point(0, 0), NameTableView.Size); - NameTableView.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); + NameTableView.Screenshot(); } private void screenshotAsToolStripMenuItem_Click(object sender, EventArgs e) { - ScreenshotAs(); + NameTableView.Screenshot(); } private void refreshImageToolStripMenuItem_Click(object sender, EventArgs e) diff --git a/BizHawk.MultiClient/NEStools/NESPPU.Designer.cs b/BizHawk.MultiClient/NEStools/NESPPU.Designer.cs index 9980d6393e..c659fc8d87 100644 --- a/BizHawk.MultiClient/NEStools/NESPPU.Designer.cs +++ b/BizHawk.MultiClient/NEStools/NESPPU.Designer.cs @@ -28,6 +28,7 @@ /// private void InitializeComponent() { + this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(NESPPU)); this.PatternGroup = new System.Windows.Forms.GroupBox(); this.Table1PaletteLabel = new System.Windows.Forms.Label(); @@ -52,14 +53,10 @@ this.RefreshRate = new System.Windows.Forms.TrackBar(); this.menuStrip1 = new System.Windows.Forms.MenuStrip(); this.settingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.patternToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.autoLoadToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); this.saveWindowPositionToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); - this.SpriteView = new BizHawk.MultiClient.SpriteViewer(); - this.PaletteView = new BizHawk.MultiClient.PaletteViewer(); - this.PatternView = new BizHawk.MultiClient.PatternViewer(); + this.patternToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.table0PaletteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.table1PaletteToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); this.Table0P0 = new System.Windows.Forms.ToolStripMenuItem(); this.Table0P1 = new System.Windows.Forms.ToolStripMenuItem(); this.Table0P2 = new System.Windows.Forms.ToolStripMenuItem(); @@ -68,6 +65,7 @@ this.Table0P5 = new System.Windows.Forms.ToolStripMenuItem(); this.Table0P6 = new System.Windows.Forms.ToolStripMenuItem(); this.Table0P7 = new System.Windows.Forms.ToolStripMenuItem(); + this.table1PaletteToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); this.Table1P0 = new System.Windows.Forms.ToolStripMenuItem(); this.Table1P1 = new System.Windows.Forms.ToolStripMenuItem(); this.Table1P2 = new System.Windows.Forms.ToolStripMenuItem(); @@ -76,6 +74,24 @@ this.Table1P5 = new System.Windows.Forms.ToolStripMenuItem(); this.Table1P6 = new System.Windows.Forms.ToolStripMenuItem(); this.Table1P7 = new System.Windows.Forms.ToolStripMenuItem(); + this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.savePaletteScreenshotToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.savePatternScreenshotToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.saveSpriteScreenshotToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.PaletteContext = new System.Windows.Forms.ContextMenuStrip(this.components); + this.saveImageToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.refreshToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.PatternContext = new System.Windows.Forms.ContextMenuStrip(this.components); + this.saveImageToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.refreshToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.SpriteView = new BizHawk.MultiClient.SpriteViewer(); + this.PaletteView = new BizHawk.MultiClient.PaletteViewer(); + this.PatternView = new BizHawk.MultiClient.PatternViewer(); + this.SpriteContext = new System.Windows.Forms.ContextMenuStrip(this.components); + this.saveImageToolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem(); + this.refreshToolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem(); this.PatternGroup.SuspendLayout(); this.PalettesGroup.SuspendLayout(); this.DetailsBox.SuspendLayout(); @@ -85,6 +101,9 @@ this.groupBox2.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.RefreshRate)).BeginInit(); this.menuStrip1.SuspendLayout(); + this.PaletteContext.SuspendLayout(); + this.PatternContext.SuspendLayout(); + this.SpriteContext.SuspendLayout(); this.SuspendLayout(); // // PatternGroup @@ -300,8 +319,9 @@ // menuStrip1 // this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.settingsToolStripMenuItem, - this.patternToolStripMenuItem}); + this.fileToolStripMenuItem, + this.patternToolStripMenuItem, + this.settingsToolStripMenuItem}); this.menuStrip1.Location = new System.Drawing.Point(0, 0); this.menuStrip1.Name = "menuStrip1"; this.menuStrip1.Size = new System.Drawing.Size(574, 24); @@ -318,16 +338,6 @@ this.settingsToolStripMenuItem.Text = "&Settings"; this.settingsToolStripMenuItem.DropDownOpened += new System.EventHandler(this.toolStripDropDownButton1_DropDownOpened); // - // patternToolStripMenuItem - // - this.patternToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.table0PaletteToolStripMenuItem, - this.table1PaletteToolStripMenuItem1}); - this.patternToolStripMenuItem.Name = "patternToolStripMenuItem"; - this.patternToolStripMenuItem.Size = new System.Drawing.Size(55, 20); - this.patternToolStripMenuItem.Text = "&Pattern"; - this.patternToolStripMenuItem.DropDownOpened += new System.EventHandler(this.toolStripDropDownButton2_DropDownOpened); - // // autoLoadToolStripMenuItem1 // this.autoLoadToolStripMenuItem1.Name = "autoLoadToolStripMenuItem1"; @@ -342,41 +352,15 @@ this.saveWindowPositionToolStripMenuItem1.Text = "Save Window Position"; this.saveWindowPositionToolStripMenuItem1.Click += new System.EventHandler(this.saveWindowPositionToolStripMenuItem_Click); // - // SpriteView + // patternToolStripMenuItem // - this.SpriteView.BackColor = System.Drawing.Color.Transparent; - this.SpriteView.Location = new System.Drawing.Point(6, 18); - this.SpriteView.Name = "SpriteView"; - this.SpriteView.Size = new System.Drawing.Size(256, 96); - this.SpriteView.TabIndex = 0; - this.SpriteView.MouseClick += new System.Windows.Forms.MouseEventHandler(this.SpriteView_MouseClick); - this.SpriteView.MouseEnter += new System.EventHandler(this.SpriteView_MouseEnter); - this.SpriteView.MouseLeave += new System.EventHandler(this.SpriteView_MouseLeave); - this.SpriteView.MouseMove += new System.Windows.Forms.MouseEventHandler(this.SpriteView_MouseMove); - // - // PaletteView - // - this.PaletteView.BackColor = System.Drawing.Color.Transparent; - this.PaletteView.Location = new System.Drawing.Point(6, 19); - this.PaletteView.Name = "PaletteView"; - this.PaletteView.Size = new System.Drawing.Size(257, 34); - this.PaletteView.TabIndex = 0; - this.PaletteView.MouseClick += new System.Windows.Forms.MouseEventHandler(this.PaletteView_MouseClick); - this.PaletteView.MouseEnter += new System.EventHandler(this.PaletteView_MouseEnter); - this.PaletteView.MouseLeave += new System.EventHandler(this.PaletteView_MouseLeave); - this.PaletteView.MouseMove += new System.Windows.Forms.MouseEventHandler(this.PaletteView_MouseMove); - // - // PatternView - // - this.PatternView.BackColor = System.Drawing.Color.Transparent; - this.PatternView.Location = new System.Drawing.Point(7, 20); - this.PatternView.Name = "PatternView"; - this.PatternView.Size = new System.Drawing.Size(256, 128); - this.PatternView.TabIndex = 0; - this.PatternView.MouseClick += new System.Windows.Forms.MouseEventHandler(this.PatternView_Click); - this.PatternView.MouseEnter += new System.EventHandler(this.PatternView_MouseEnter); - this.PatternView.MouseLeave += new System.EventHandler(this.PatternView_MouseLeave); - this.PatternView.MouseMove += new System.Windows.Forms.MouseEventHandler(this.PatternView_MouseMove); + this.patternToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.table0PaletteToolStripMenuItem, + this.table1PaletteToolStripMenuItem1}); + this.patternToolStripMenuItem.Name = "patternToolStripMenuItem"; + this.patternToolStripMenuItem.Size = new System.Drawing.Size(55, 20); + this.patternToolStripMenuItem.Text = "&Pattern"; + this.patternToolStripMenuItem.DropDownOpened += new System.EventHandler(this.toolStripDropDownButton2_DropDownOpened); // // table0PaletteToolStripMenuItem // @@ -393,6 +377,62 @@ this.table0PaletteToolStripMenuItem.Size = new System.Drawing.Size(157, 22); this.table0PaletteToolStripMenuItem.Text = "Table 0 Palette"; // + // Table0P0 + // + this.Table0P0.Name = "Table0P0"; + this.Table0P0.Size = new System.Drawing.Size(91, 22); + this.Table0P0.Text = "0"; + this.Table0P0.Click += new System.EventHandler(this.Palette_Click); + // + // Table0P1 + // + this.Table0P1.Name = "Table0P1"; + this.Table0P1.Size = new System.Drawing.Size(91, 22); + this.Table0P1.Text = "1"; + this.Table0P1.Click += new System.EventHandler(this.Palette_Click); + // + // Table0P2 + // + this.Table0P2.Name = "Table0P2"; + this.Table0P2.Size = new System.Drawing.Size(91, 22); + this.Table0P2.Text = "2"; + this.Table0P2.Click += new System.EventHandler(this.Palette_Click); + // + // Table0P3 + // + this.Table0P3.Name = "Table0P3"; + this.Table0P3.Size = new System.Drawing.Size(91, 22); + this.Table0P3.Text = "3"; + this.Table0P3.Click += new System.EventHandler(this.Palette_Click); + // + // Table0P4 + // + this.Table0P4.Name = "Table0P4"; + this.Table0P4.Size = new System.Drawing.Size(91, 22); + this.Table0P4.Text = "4"; + this.Table0P4.Click += new System.EventHandler(this.Palette_Click); + // + // Table0P5 + // + this.Table0P5.Name = "Table0P5"; + this.Table0P5.Size = new System.Drawing.Size(91, 22); + this.Table0P5.Text = "5"; + this.Table0P5.Click += new System.EventHandler(this.Palette_Click); + // + // Table0P6 + // + this.Table0P6.Name = "Table0P6"; + this.Table0P6.Size = new System.Drawing.Size(91, 22); + this.Table0P6.Text = "6"; + this.Table0P6.Click += new System.EventHandler(this.Palette_Click); + // + // Table0P7 + // + this.Table0P7.Name = "Table0P7"; + this.Table0P7.Size = new System.Drawing.Size(91, 22); + this.Table0P7.Text = "7"; + this.Table0P7.Click += new System.EventHandler(this.Palette_Click); + // // table1PaletteToolStripMenuItem1 // this.table1PaletteToolStripMenuItem1.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -408,118 +448,210 @@ this.table1PaletteToolStripMenuItem1.Size = new System.Drawing.Size(157, 22); this.table1PaletteToolStripMenuItem1.Text = "Table 1 Palette"; // - // Table0P0 - // - this.Table0P0.Name = "Table0P0"; - this.Table0P0.Size = new System.Drawing.Size(152, 22); - this.Table0P0.Text = "0"; - this.Table0P0.Click += new System.EventHandler(this.Palette_Click); - // - // Table0P1 - // - this.Table0P1.Name = "Table0P1"; - this.Table0P1.Size = new System.Drawing.Size(152, 22); - this.Table0P1.Text = "1"; - this.Table0P1.Click += new System.EventHandler(this.Palette_Click); - // - // Table0P2 - // - this.Table0P2.Name = "Table0P2"; - this.Table0P2.Size = new System.Drawing.Size(152, 22); - this.Table0P2.Text = "2"; - this.Table0P2.Click += new System.EventHandler(this.Palette_Click); - // - // Table0P3 - // - this.Table0P3.Name = "Table0P3"; - this.Table0P3.Size = new System.Drawing.Size(152, 22); - this.Table0P3.Text = "3"; - this.Table0P3.Click += new System.EventHandler(this.Palette_Click); - // - // Table0P4 - // - this.Table0P4.Name = "Table0P4"; - this.Table0P4.Size = new System.Drawing.Size(152, 22); - this.Table0P4.Text = "4"; - this.Table0P4.Click += new System.EventHandler(this.Palette_Click); - // - // Table0P5 - // - this.Table0P5.Name = "Table0P5"; - this.Table0P5.Size = new System.Drawing.Size(152, 22); - this.Table0P5.Text = "5"; - this.Table0P5.Click += new System.EventHandler(this.Palette_Click); - // - // Table0P6 - // - this.Table0P6.Name = "Table0P6"; - this.Table0P6.Size = new System.Drawing.Size(152, 22); - this.Table0P6.Text = "6"; - this.Table0P6.Click += new System.EventHandler(this.Palette_Click); - // - // Table0P7 - // - this.Table0P7.Name = "Table0P7"; - this.Table0P7.Size = new System.Drawing.Size(152, 22); - this.Table0P7.Text = "7"; - this.Table0P7.Click += new System.EventHandler(this.Palette_Click); - // // Table1P0 // this.Table1P0.Name = "Table1P0"; - this.Table1P0.Size = new System.Drawing.Size(152, 22); + this.Table1P0.Size = new System.Drawing.Size(91, 22); this.Table1P0.Text = "0"; this.Table1P0.Click += new System.EventHandler(this.Palette_Click); // // Table1P1 // this.Table1P1.Name = "Table1P1"; - this.Table1P1.Size = new System.Drawing.Size(152, 22); + this.Table1P1.Size = new System.Drawing.Size(91, 22); this.Table1P1.Text = "1"; this.Table1P1.Click += new System.EventHandler(this.Palette_Click); // // Table1P2 // this.Table1P2.Name = "Table1P2"; - this.Table1P2.Size = new System.Drawing.Size(152, 22); + this.Table1P2.Size = new System.Drawing.Size(91, 22); this.Table1P2.Text = "2"; this.Table1P2.Click += new System.EventHandler(this.Palette_Click); // // Table1P3 // this.Table1P3.Name = "Table1P3"; - this.Table1P3.Size = new System.Drawing.Size(152, 22); + this.Table1P3.Size = new System.Drawing.Size(91, 22); this.Table1P3.Text = "3"; this.Table1P3.Click += new System.EventHandler(this.Palette_Click); // // Table1P4 // this.Table1P4.Name = "Table1P4"; - this.Table1P4.Size = new System.Drawing.Size(152, 22); + this.Table1P4.Size = new System.Drawing.Size(91, 22); this.Table1P4.Text = "4"; this.Table1P4.Click += new System.EventHandler(this.Palette_Click); // // Table1P5 // this.Table1P5.Name = "Table1P5"; - this.Table1P5.Size = new System.Drawing.Size(152, 22); + this.Table1P5.Size = new System.Drawing.Size(91, 22); this.Table1P5.Text = "5"; this.Table1P5.Click += new System.EventHandler(this.Palette_Click); // // Table1P6 // this.Table1P6.Name = "Table1P6"; - this.Table1P6.Size = new System.Drawing.Size(152, 22); + this.Table1P6.Size = new System.Drawing.Size(91, 22); this.Table1P6.Text = "6"; this.Table1P6.Click += new System.EventHandler(this.Palette_Click); // // Table1P7 // this.Table1P7.Name = "Table1P7"; - this.Table1P7.Size = new System.Drawing.Size(152, 22); + this.Table1P7.Size = new System.Drawing.Size(91, 22); this.Table1P7.Text = "7"; this.Table1P7.Click += new System.EventHandler(this.Palette_Click); // + // fileToolStripMenuItem + // + this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.savePaletteScreenshotToolStripMenuItem, + this.savePatternScreenshotToolStripMenuItem, + this.saveSpriteScreenshotToolStripMenuItem, + this.toolStripSeparator1, + this.exitToolStripMenuItem}); + this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; + this.fileToolStripMenuItem.Size = new System.Drawing.Size(35, 20); + this.fileToolStripMenuItem.Text = "&File"; + // + // savePaletteScreenshotToolStripMenuItem + // + this.savePaletteScreenshotToolStripMenuItem.Name = "savePaletteScreenshotToolStripMenuItem"; + this.savePaletteScreenshotToolStripMenuItem.Size = new System.Drawing.Size(217, 22); + this.savePaletteScreenshotToolStripMenuItem.Text = "Save Palette Screenshot..."; + this.savePaletteScreenshotToolStripMenuItem.Click += new System.EventHandler(this.savePaletteScreenshotToolStripMenuItem_Click); + // + // savePatternScreenshotToolStripMenuItem + // + this.savePatternScreenshotToolStripMenuItem.Name = "savePatternScreenshotToolStripMenuItem"; + this.savePatternScreenshotToolStripMenuItem.Size = new System.Drawing.Size(217, 22); + this.savePatternScreenshotToolStripMenuItem.Text = "Save Pattern Screenshot..."; + // + // saveSpriteScreenshotToolStripMenuItem + // + this.saveSpriteScreenshotToolStripMenuItem.Name = "saveSpriteScreenshotToolStripMenuItem"; + this.saveSpriteScreenshotToolStripMenuItem.Size = new System.Drawing.Size(217, 22); + this.saveSpriteScreenshotToolStripMenuItem.Text = "Save Sprite Screenshot..."; + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(214, 6); + // + // exitToolStripMenuItem + // + this.exitToolStripMenuItem.Name = "exitToolStripMenuItem"; + this.exitToolStripMenuItem.Size = new System.Drawing.Size(217, 22); + this.exitToolStripMenuItem.Text = "E&xit"; + this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click); + // + // PaletteContext + // + this.PaletteContext.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.saveImageToolStripMenuItem, + this.refreshToolStripMenuItem}); + this.PaletteContext.Name = "PaletteContext"; + this.PaletteContext.Size = new System.Drawing.Size(155, 48); + // + // saveImageToolStripMenuItem + // + this.saveImageToolStripMenuItem.Name = "saveImageToolStripMenuItem"; + this.saveImageToolStripMenuItem.Size = new System.Drawing.Size(154, 22); + this.saveImageToolStripMenuItem.Text = "&Save Image..."; + this.saveImageToolStripMenuItem.Click += new System.EventHandler(this.saveImageToolStripMenuItem_Click); + // + // refreshToolStripMenuItem + // + this.refreshToolStripMenuItem.Name = "refreshToolStripMenuItem"; + this.refreshToolStripMenuItem.Size = new System.Drawing.Size(154, 22); + this.refreshToolStripMenuItem.Text = "&Refresh"; + this.refreshToolStripMenuItem.Click += new System.EventHandler(this.refreshToolStripMenuItem_Click); + // + // PatternContext + // + this.PatternContext.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.saveImageToolStripMenuItem1, + this.refreshToolStripMenuItem1}); + this.PatternContext.Name = "PatternContext"; + this.PatternContext.Size = new System.Drawing.Size(155, 48); + // + // saveImageToolStripMenuItem1 + // + this.saveImageToolStripMenuItem1.Name = "saveImageToolStripMenuItem1"; + this.saveImageToolStripMenuItem1.Size = new System.Drawing.Size(154, 22); + this.saveImageToolStripMenuItem1.Text = "&Save Image..."; + this.saveImageToolStripMenuItem1.Click += new System.EventHandler(this.saveImageToolStripMenuItem1_Click); + // + // refreshToolStripMenuItem1 + // + this.refreshToolStripMenuItem1.Name = "refreshToolStripMenuItem1"; + this.refreshToolStripMenuItem1.Size = new System.Drawing.Size(154, 22); + this.refreshToolStripMenuItem1.Text = "&Refresh"; + this.refreshToolStripMenuItem1.Click += new System.EventHandler(this.refreshToolStripMenuItem1_Click); + // + // SpriteView + // + this.SpriteView.BackColor = System.Drawing.Color.Transparent; + this.SpriteView.ContextMenuStrip = this.SpriteContext; + this.SpriteView.Location = new System.Drawing.Point(6, 18); + this.SpriteView.Name = "SpriteView"; + this.SpriteView.Size = new System.Drawing.Size(256, 96); + this.SpriteView.TabIndex = 0; + this.SpriteView.MouseClick += new System.Windows.Forms.MouseEventHandler(this.SpriteView_MouseClick); + this.SpriteView.MouseEnter += new System.EventHandler(this.SpriteView_MouseEnter); + this.SpriteView.MouseLeave += new System.EventHandler(this.SpriteView_MouseLeave); + this.SpriteView.MouseMove += new System.Windows.Forms.MouseEventHandler(this.SpriteView_MouseMove); + // + // PaletteView + // + this.PaletteView.BackColor = System.Drawing.Color.Transparent; + this.PaletteView.ContextMenuStrip = this.PaletteContext; + this.PaletteView.Location = new System.Drawing.Point(6, 19); + this.PaletteView.Name = "PaletteView"; + this.PaletteView.Size = new System.Drawing.Size(257, 34); + this.PaletteView.TabIndex = 0; + this.PaletteView.MouseClick += new System.Windows.Forms.MouseEventHandler(this.PaletteView_MouseClick); + this.PaletteView.MouseEnter += new System.EventHandler(this.PaletteView_MouseEnter); + this.PaletteView.MouseLeave += new System.EventHandler(this.PaletteView_MouseLeave); + this.PaletteView.MouseMove += new System.Windows.Forms.MouseEventHandler(this.PaletteView_MouseMove); + // + // PatternView + // + this.PatternView.BackColor = System.Drawing.Color.Transparent; + this.PatternView.ContextMenuStrip = this.PatternContext; + this.PatternView.Location = new System.Drawing.Point(7, 20); + this.PatternView.Name = "PatternView"; + this.PatternView.Size = new System.Drawing.Size(256, 128); + this.PatternView.TabIndex = 0; + this.PatternView.MouseClick += new System.Windows.Forms.MouseEventHandler(this.PatternView_Click); + this.PatternView.MouseEnter += new System.EventHandler(this.PatternView_MouseEnter); + this.PatternView.MouseLeave += new System.EventHandler(this.PatternView_MouseLeave); + this.PatternView.MouseMove += new System.Windows.Forms.MouseEventHandler(this.PatternView_MouseMove); + // + // SpriteContext + // + this.SpriteContext.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.saveImageToolStripMenuItem2, + this.refreshToolStripMenuItem2}); + this.SpriteContext.Name = "SpriteContext"; + this.SpriteContext.Size = new System.Drawing.Size(155, 48); + // + // saveImageToolStripMenuItem2 + // + this.saveImageToolStripMenuItem2.Name = "saveImageToolStripMenuItem2"; + this.saveImageToolStripMenuItem2.Size = new System.Drawing.Size(154, 22); + this.saveImageToolStripMenuItem2.Text = "&Save Image..."; + this.saveImageToolStripMenuItem2.Click += new System.EventHandler(this.saveImageToolStripMenuItem2_Click); + // + // refreshToolStripMenuItem2 + // + this.refreshToolStripMenuItem2.Name = "refreshToolStripMenuItem2"; + this.refreshToolStripMenuItem2.Size = new System.Drawing.Size(154, 22); + this.refreshToolStripMenuItem2.Text = "&Refresh"; + this.refreshToolStripMenuItem2.Click += new System.EventHandler(this.refreshToolStripMenuItem2_Click); + // // NESPPU // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -555,6 +687,9 @@ ((System.ComponentModel.ISupportInitialize)(this.RefreshRate)).EndInit(); this.menuStrip1.ResumeLayout(false); this.menuStrip1.PerformLayout(); + this.PaletteContext.ResumeLayout(false); + this.PatternContext.ResumeLayout(false); + this.SpriteContext.ResumeLayout(false); this.ResumeLayout(false); this.PerformLayout(); @@ -609,5 +744,20 @@ private System.Windows.Forms.ToolStripMenuItem Table1P5; private System.Windows.Forms.ToolStripMenuItem Table1P6; private System.Windows.Forms.ToolStripMenuItem Table1P7; + private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem savePaletteScreenshotToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem savePatternScreenshotToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem saveSpriteScreenshotToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; + private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem; + private System.Windows.Forms.ContextMenuStrip PaletteContext; + private System.Windows.Forms.ToolStripMenuItem saveImageToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem refreshToolStripMenuItem; + private System.Windows.Forms.ContextMenuStrip PatternContext; + private System.Windows.Forms.ToolStripMenuItem saveImageToolStripMenuItem1; + private System.Windows.Forms.ToolStripMenuItem refreshToolStripMenuItem1; + private System.Windows.Forms.ContextMenuStrip SpriteContext; + private System.Windows.Forms.ToolStripMenuItem saveImageToolStripMenuItem2; + private System.Windows.Forms.ToolStripMenuItem refreshToolStripMenuItem2; } } \ No newline at end of file diff --git a/BizHawk.MultiClient/NEStools/NESPPU.cs b/BizHawk.MultiClient/NEStools/NESPPU.cs index 00e2188ad0..fc90add116 100644 --- a/BizHawk.MultiClient/NEStools/NESPPU.cs +++ b/BizHawk.MultiClient/NEStools/NESPPU.cs @@ -592,5 +592,45 @@ namespace BizHawk.MultiClient { ZoomBox.Image = new Bitmap(64, 64); } + + private void exitToolStripMenuItem_Click(object sender, EventArgs e) + { + Close(); + } + + private void savePaletteScreenshotToolStripMenuItem_Click(object sender, EventArgs e) + { + PaletteView.Screenshot(); + } + + private void saveImageToolStripMenuItem_Click(object sender, EventArgs e) + { + PaletteView.Screenshot(); + } + + private void refreshToolStripMenuItem_Click(object sender, EventArgs e) + { + PaletteView.Refresh(); + } + + private void saveImageToolStripMenuItem1_Click(object sender, EventArgs e) + { + PatternView.Screenshot(); + } + + private void refreshToolStripMenuItem1_Click(object sender, EventArgs e) + { + PatternView.Refresh(); + } + + private void saveImageToolStripMenuItem2_Click(object sender, EventArgs e) + { + SpriteView.Screenshot(); + } + + private void refreshToolStripMenuItem2_Click(object sender, EventArgs e) + { + SpriteView.Refresh(); + } } } diff --git a/BizHawk.MultiClient/NEStools/NESPPU.resx b/BizHawk.MultiClient/NEStools/NESPPU.resx index 2f58423619..c4d30097ed 100644 --- a/BizHawk.MultiClient/NEStools/NESPPU.resx +++ b/BizHawk.MultiClient/NEStools/NESPPU.resx @@ -117,6 +117,15 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 349, 17 + + + 225, 17 + + + 475, 17 + 116, 17 diff --git a/BizHawk.MultiClient/NEStools/NameTableViewer.cs b/BizHawk.MultiClient/NEStools/NameTableViewer.cs index 5a29d56c5c..3cee0df345 100644 --- a/BizHawk.MultiClient/NEStools/NameTableViewer.cs +++ b/BizHawk.MultiClient/NEStools/NameTableViewer.cs @@ -5,6 +5,8 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Globalization; +using System.IO; +using System.Drawing.Imaging; namespace BizHawk.MultiClient { @@ -96,5 +98,40 @@ namespace BizHawk.MultiClient break; } } + + public void Screenshot() + { + var sfd = new SaveFileDialog(); + sfd.FileName = PathManager.FilesystemSafeName(Global.Game) + "-Patterns"; + sfd.InitialDirectory = PathManager.MakeAbsolutePath(Global.Config.PathNESScreenshots, "NES"); + sfd.Filter = "PNG (*.png)|*.png|Bitmap (*.bmp)|*.bmp|All Files|*.*"; + + sfd.RestoreDirectory = true; + Global.Sound.StopSound(); + var result = sfd.ShowDialog(); + Global.Sound.StartSound(); + if (result != DialogResult.OK) + return; + + var file = new FileInfo(sfd.FileName); + 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); + } } } diff --git a/BizHawk.MultiClient/NEStools/PaletteViewer.cs b/BizHawk.MultiClient/NEStools/PaletteViewer.cs index 80850cdf96..6a6227d436 100644 --- a/BizHawk.MultiClient/NEStools/PaletteViewer.cs +++ b/BizHawk.MultiClient/NEStools/PaletteViewer.cs @@ -5,6 +5,8 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Globalization; +using System.IO; +using System.Drawing.Imaging; namespace BizHawk.MultiClient { @@ -69,5 +71,40 @@ namespace BizHawk.MultiClient } return false; } + + public void Screenshot() + { + var sfd = new SaveFileDialog(); + sfd.FileName = PathManager.FilesystemSafeName(Global.Game) + "-Palettes"; + sfd.InitialDirectory = PathManager.MakeAbsolutePath(Global.Config.PathNESScreenshots, "NES"); + sfd.Filter = "PNG (*.png)|*.png|Bitmap (*.bmp)|*.bmp|All Files|*.*"; + + sfd.RestoreDirectory = true; + Global.Sound.StopSound(); + var result = sfd.ShowDialog(); + Global.Sound.StartSound(); + if (result != DialogResult.OK) + return; + + var file = new FileInfo(sfd.FileName); + 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); + } } } diff --git a/BizHawk.MultiClient/NEStools/PatternViewer.cs b/BizHawk.MultiClient/NEStools/PatternViewer.cs index 3e3a5b6949..72f1ebc066 100644 --- a/BizHawk.MultiClient/NEStools/PatternViewer.cs +++ b/BizHawk.MultiClient/NEStools/PatternViewer.cs @@ -5,6 +5,8 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Globalization; +using System.IO; +using System.Drawing.Imaging; namespace BizHawk.MultiClient { @@ -32,5 +34,40 @@ namespace BizHawk.MultiClient { e.Graphics.DrawImage(pattern, 1, 1); } + + public void Screenshot() + { + var sfd = new SaveFileDialog(); + sfd.FileName = PathManager.FilesystemSafeName(Global.Game) + "-Patterns"; + sfd.InitialDirectory = PathManager.MakeAbsolutePath(Global.Config.PathNESScreenshots, "NES"); + sfd.Filter = "PNG (*.png)|*.png|Bitmap (*.bmp)|*.bmp|All Files|*.*"; + + sfd.RestoreDirectory = true; + Global.Sound.StopSound(); + var result = sfd.ShowDialog(); + Global.Sound.StartSound(); + if (result != DialogResult.OK) + return; + + var file = new FileInfo(sfd.FileName); + 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); + } } } diff --git a/BizHawk.MultiClient/NEStools/SpriteViewer.cs b/BizHawk.MultiClient/NEStools/SpriteViewer.cs index 6e8d3343a3..deadd3c7f7 100644 --- a/BizHawk.MultiClient/NEStools/SpriteViewer.cs +++ b/BizHawk.MultiClient/NEStools/SpriteViewer.cs @@ -5,6 +5,8 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Globalization; +using System.IO; +using System.Drawing.Imaging; namespace BizHawk.MultiClient { @@ -38,5 +40,40 @@ namespace BizHawk.MultiClient { Display(e.Graphics); } + + public void Screenshot() + { + var sfd = new SaveFileDialog(); + sfd.FileName = PathManager.FilesystemSafeName(Global.Game) + "-Sprites"; + sfd.InitialDirectory = PathManager.MakeAbsolutePath(Global.Config.PathNESScreenshots, "NES"); + sfd.Filter = "PNG (*.png)|*.png|Bitmap (*.bmp)|*.bmp|All Files|*.*"; + + sfd.RestoreDirectory = true; + Global.Sound.StopSound(); + var result = sfd.ShowDialog(); + Global.Sound.StartSound(); + if (result != DialogResult.OK) + return; + + var file = new FileInfo(sfd.FileName); + 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); + } } }