From 099cf590b6f5adf9524178f702bac0f5b4c54c30 Mon Sep 17 00:00:00 2001 From: offspring131313 Date: Sun, 4 Mar 2012 20:37:49 +0000 Subject: [PATCH] Can now make Animated Gifs Huzzah --- BizHawk.MultiClient/Config.cs | 6 ++ BizHawk.MultiClient/MainForm.Designer.cs | 34 ++++-- BizHawk.MultiClient/MainForm.cs | 33 +++++- .../Properties/Resources.Designer.cs | 2 +- .../config/GifAnimator.Designer.cs | 102 +++++++++++++++++- BizHawk.MultiClient/config/GifAnimator.cs | 54 +++++++++- 6 files changed, 217 insertions(+), 14 deletions(-) diff --git a/BizHawk.MultiClient/Config.cs b/BizHawk.MultiClient/Config.cs index a844161ff3..d465edb390 100644 --- a/BizHawk.MultiClient/Config.cs +++ b/BizHawk.MultiClient/Config.cs @@ -465,6 +465,12 @@ //GB settings public GBControllerTemplate GBController = new GBControllerTemplate(); public GBControllerTemplate GBAutoController = new GBControllerTemplate(); + + //GIF Animator Settings + public int GifAnimatorNumFrames; + public int GifAnimatorFrameSkip; + public int GifAnimatorSpeed; + public bool GifAnimatorReversable; } public class SMSControllerTemplate diff --git a/BizHawk.MultiClient/MainForm.Designer.cs b/BizHawk.MultiClient/MainForm.Designer.cs index a707103f3d..378f62ac2a 100644 --- a/BizHawk.MultiClient/MainForm.Designer.cs +++ b/BizHawk.MultiClient/MainForm.Designer.cs @@ -107,6 +107,8 @@ this.screenshotF12ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.screenshotAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.screenshotClipboardToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.animatedGIFConfigToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.makeAnimatedGIFToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.emulationToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -259,7 +261,7 @@ this.screenshotToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); this.closeROMToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); this.showMenuToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.animatedGIFConfigToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.makeAnimatedGifAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.menuStrip1.SuspendLayout(); this.StatusSlot0.SuspendLayout(); this.contextMenuStrip1.SuspendLayout(); @@ -877,7 +879,9 @@ this.screenshotF12ToolStripMenuItem, this.screenshotAsToolStripMenuItem, this.screenshotClipboardToolStripMenuItem, - this.animatedGIFConfigToolStripMenuItem}); + this.animatedGIFConfigToolStripMenuItem, + this.makeAnimatedGIFToolStripMenuItem, + this.makeAnimatedGifAsToolStripMenuItem}); this.screenshotToolStripMenuItem.Name = "screenshotToolStripMenuItem"; this.screenshotToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.screenshotToolStripMenuItem.Text = "Screenshot"; @@ -904,6 +908,20 @@ this.screenshotClipboardToolStripMenuItem.Text = "Screenshot -> Clipboard"; this.screenshotClipboardToolStripMenuItem.Click += new System.EventHandler(this.screenshotClipboardToolStripMenuItem_Click); // + // animatedGIFConfigToolStripMenuItem + // + this.animatedGIFConfigToolStripMenuItem.Name = "animatedGIFConfigToolStripMenuItem"; + this.animatedGIFConfigToolStripMenuItem.Size = new System.Drawing.Size(203, 22); + this.animatedGIFConfigToolStripMenuItem.Text = "Animated GIF Config"; + this.animatedGIFConfigToolStripMenuItem.Click += new System.EventHandler(this.animatedGIFConfigToolStripMenuItem_Click); + // + // makeAnimatedGIFToolStripMenuItem + // + this.makeAnimatedGIFToolStripMenuItem.Name = "makeAnimatedGIFToolStripMenuItem"; + this.makeAnimatedGIFToolStripMenuItem.Size = new System.Drawing.Size(203, 22); + this.makeAnimatedGIFToolStripMenuItem.Text = "Make Animated GIF"; + this.makeAnimatedGIFToolStripMenuItem.Click += new System.EventHandler(this.makeAnimatedGIFToolStripMenuItem_Click); + // // toolStripSeparator4 // this.toolStripSeparator4.Name = "toolStripSeparator4"; @@ -2128,12 +2146,12 @@ this.showMenuToolStripMenuItem.Text = "Show Menu"; this.showMenuToolStripMenuItem.Click += new System.EventHandler(this.showMenuToolStripMenuItem_Click); // - // animatedGIFConfigToolStripMenuItem + // makeAnimatedGifAsToolStripMenuItem // - this.animatedGIFConfigToolStripMenuItem.Name = "animatedGIFConfigToolStripMenuItem"; - this.animatedGIFConfigToolStripMenuItem.Size = new System.Drawing.Size(203, 22); - this.animatedGIFConfigToolStripMenuItem.Text = "Animated GIF Config"; - this.animatedGIFConfigToolStripMenuItem.Click += new System.EventHandler(this.animatedGIFConfigToolStripMenuItem_Click); + this.makeAnimatedGifAsToolStripMenuItem.Name = "makeAnimatedGifAsToolStripMenuItem"; + this.makeAnimatedGifAsToolStripMenuItem.Size = new System.Drawing.Size(203, 22); + this.makeAnimatedGifAsToolStripMenuItem.Text = "Make Animated Gif As.."; + this.makeAnimatedGifAsToolStripMenuItem.Click += new System.EventHandler(this.makeAnimatedGifAsToolStripMenuItem_Click); // // MainForm // @@ -2396,6 +2414,8 @@ private System.Windows.Forms.ToolStripMenuItem forumsToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem screenshotClipboardToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem animatedGIFConfigToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem makeAnimatedGIFToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem makeAnimatedGifAsToolStripMenuItem; } } diff --git a/BizHawk.MultiClient/MainForm.cs b/BizHawk.MultiClient/MainForm.cs index a12732db7c..20adecffa7 100644 --- a/BizHawk.MultiClient/MainForm.cs +++ b/BizHawk.MultiClient/MainForm.cs @@ -2553,7 +2553,7 @@ namespace BizHawk.MultiClient /// Flag for making the gif loop back and forth /// location to save the file /// false if the parameters are incorrect, true if it completes - public bool makeAnimatedGif(int num_images, int frameskip, int gifSpeed, bool reversable, String filename) + public bool AnimatedGif(int num_images, int frameskip, int gifSpeed, bool reversable, String filename) { if (num_images < 1 || frameskip < 1 || gifSpeed == 0) return false;//Exits if settings are bad #region declare/insantiate variables @@ -2661,5 +2661,36 @@ namespace BizHawk.MultiClient g.Show(); } + private void makeAnimatedGIFToolStripMenuItem_Click(object sender, EventArgs e) + { + makeAnimatedGif(); + } + + private void makeAnimatedGif() + { + string path = String.Format(PathManager.ScreenshotPrefix(Global.Game) + "AGIF.{0:yyyy-MM-dd HH.mm.ss}.gif", DateTime.Now); + AnimatedGif(Global.Config.GifAnimatorNumFrames, Global.Config.GifAnimatorFrameSkip, Global.Config.GifAnimatorSpeed, Global.Config.GifAnimatorReversable, path); + } + private void makeAnimatedGif(string path) + { + AnimatedGif(Global.Config.GifAnimatorNumFrames, Global.Config.GifAnimatorFrameSkip, Global.Config.GifAnimatorSpeed, Global.Config.GifAnimatorReversable, path); + } + + private void makeAnimatedGifAsToolStripMenuItem_Click(object sender, EventArgs e) + { + string path = String.Format(PathManager.ScreenshotPrefix(Global.Game) + "AGIF.{0:yyyy-MM-dd HH.mm.ss}.gif", DateTime.Now); + + SaveFileDialog sfd = new SaveFileDialog(); + sfd.InitialDirectory = Path.GetDirectoryName(path); + sfd.FileName = Path.GetFileName(path); + sfd.Filter = "GIF File (*.gif)|*.gif"; + + Global.Sound.StopSound(); + var result = sfd.ShowDialog(); + Global.Sound.StartSound(); + if (result != DialogResult.OK) + return; + makeAnimatedGif(sfd.FileName); + } } } \ No newline at end of file diff --git a/BizHawk.MultiClient/Properties/Resources.Designer.cs b/BizHawk.MultiClient/Properties/Resources.Designer.cs index c60b8abc47..dc7e9c130c 100644 --- a/BizHawk.MultiClient/Properties/Resources.Designer.cs +++ b/BizHawk.MultiClient/Properties/Resources.Designer.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.261 +// Runtime Version:4.0.30319.239 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. diff --git a/BizHawk.MultiClient/config/GifAnimator.Designer.cs b/BizHawk.MultiClient/config/GifAnimator.Designer.cs index 1df4099cc6..3a9573fd04 100644 --- a/BizHawk.MultiClient/config/GifAnimator.Designer.cs +++ b/BizHawk.MultiClient/config/GifAnimator.Designer.cs @@ -29,34 +29,128 @@ private void InitializeComponent() { this.Exit = new System.Windows.Forms.Button(); + this.checkBox1 = new System.Windows.Forms.CheckBox(); + this.TB_Frame_Skip = new System.Windows.Forms.TextBox(); + this.comboBox1 = new System.Windows.Forms.ComboBox(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.TB_Num_Frames = new System.Windows.Forms.TextBox(); + this.button1 = new System.Windows.Forms.Button(); this.SuspendLayout(); // // Exit // - this.Exit.Location = new System.Drawing.Point(197, 227); + this.Exit.Location = new System.Drawing.Point(12, 108); this.Exit.Name = "Exit"; this.Exit.Size = new System.Drawing.Size(75, 23); - this.Exit.TabIndex = 0; - this.Exit.Text = "E&xit"; + this.Exit.TabIndex = 5; + this.Exit.Text = "&Save"; this.Exit.UseVisualStyleBackColor = true; this.Exit.Click += new System.EventHandler(this.Exit_Click); // + // checkBox1 + // + this.checkBox1.AutoSize = true; + this.checkBox1.Location = new System.Drawing.Point(73, 85); + this.checkBox1.Name = "checkBox1"; + this.checkBox1.Size = new System.Drawing.Size(93, 17); + this.checkBox1.TabIndex = 4; + this.checkBox1.Text = "Reverse Loop"; + this.checkBox1.UseVisualStyleBackColor = true; + // + // TB_Frame_Skip + // + this.TB_Frame_Skip.Location = new System.Drawing.Point(108, 32); + this.TB_Frame_Skip.Name = "TB_Frame_Skip"; + this.TB_Frame_Skip.Size = new System.Drawing.Size(58, 20); + this.TB_Frame_Skip.TabIndex = 2; + // + // comboBox1 + // + this.comboBox1.FormattingEnabled = true; + this.comboBox1.Location = new System.Drawing.Point(108, 58); + this.comboBox1.Name = "comboBox1"; + this.comboBox1.Size = new System.Drawing.Size(58, 21); + this.comboBox1.TabIndex = 3; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 35); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(80, 13); + this.label1.TabIndex = 8; + this.label1.Text = "Frames to Skip:"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(12, 61); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(90, 13); + this.label2.TabIndex = 9; + this.label2.Text = "Animation Speed:"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(12, 9); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(75, 13); + this.label3.TabIndex = 7; + this.label3.Text = "Length of GIF:"; + // + // TB_Num_Frames + // + this.TB_Num_Frames.Location = new System.Drawing.Point(108, 6); + this.TB_Num_Frames.Name = "TB_Num_Frames"; + this.TB_Num_Frames.Size = new System.Drawing.Size(58, 20); + this.TB_Num_Frames.TabIndex = 1; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(93, 108); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(75, 23); + this.button1.TabIndex = 6; + this.button1.Text = "&Cancel"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // // GifAnimator // this.AcceptButton = this.Exit; this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(284, 262); + this.ClientSize = new System.Drawing.Size(184, 140); + this.Controls.Add(this.button1); + this.Controls.Add(this.label3); + this.Controls.Add(this.TB_Num_Frames); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Controls.Add(this.comboBox1); + this.Controls.Add(this.TB_Frame_Skip); + this.Controls.Add(this.checkBox1); this.Controls.Add(this.Exit); this.Name = "GifAnimator"; this.Text = "GifAnimator"; this.Load += new System.EventHandler(this.GifAnimator_Load); this.ResumeLayout(false); + this.PerformLayout(); } #endregion private System.Windows.Forms.Button Exit; + private System.Windows.Forms.CheckBox checkBox1; + private System.Windows.Forms.TextBox TB_Frame_Skip; + private System.Windows.Forms.ComboBox comboBox1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox TB_Num_Frames; + private System.Windows.Forms.Button button1; } } \ No newline at end of file diff --git a/BizHawk.MultiClient/config/GifAnimator.cs b/BizHawk.MultiClient/config/GifAnimator.cs index a5e3f22c99..6238107c5d 100644 --- a/BizHawk.MultiClient/config/GifAnimator.cs +++ b/BizHawk.MultiClient/config/GifAnimator.cs @@ -18,10 +18,62 @@ namespace BizHawk.MultiClient private void GifAnimator_Load(object sender, EventArgs e) { - + comboBox1.Items.AddRange(new object[] { "x1/32", "x1/16", "x1/8", "x1/4", "x1/2", "x1", "x2", "x4", "x8", "x16", "x32" }); + switch (Global.Config.GifAnimatorSpeed) + { + case (-32): comboBox1.SelectedIndex = 0; break; + case (-16): comboBox1.SelectedIndex = 1; break; + case (-8): comboBox1.SelectedIndex = 2; break; + case (-4): comboBox1.SelectedIndex = 3; break; + case (-2): comboBox1.SelectedIndex = 4; break; + case (1): comboBox1.SelectedIndex = 5; break; + case (2): comboBox1.SelectedIndex = 6; break; + case (4): comboBox1.SelectedIndex = 7; break; + case (8): comboBox1.SelectedIndex = 8; break; + case (16): comboBox1.SelectedIndex = 9; break; + case (32): comboBox1.SelectedIndex = 10; break; + default: comboBox1.SelectedIndex = 5; break; + } + if (Global.Config.GifAnimatorNumFrames == 0) Global.Config.GifAnimatorNumFrames = 1; + if (Global.Config.GifAnimatorFrameSkip == 0) Global.Config.GifAnimatorFrameSkip = 1; + TB_Frame_Skip.Text = Global.Config.GifAnimatorFrameSkip.ToString(); + TB_Num_Frames.Text = Global.Config.GifAnimatorNumFrames.ToString(); + checkBox1.Checked = Global.Config.GifAnimatorReversable; } private void Exit_Click(object sender, EventArgs e) + { + int FrameSkip; + int NumFrames; + if (!Int32.TryParse(TB_Frame_Skip.Text, out FrameSkip) || !Int32.TryParse(TB_Num_Frames.Text, out NumFrames) || FrameSkip < 1 || NumFrames < 1) + { + MessageBox.Show("The values you've selected are invalid"); + return; + } + + Global.Config.GifAnimatorNumFrames = NumFrames; + Global.Config.GifAnimatorFrameSkip = FrameSkip; + Global.Config.GifAnimatorReversable = checkBox1.Checked; + + switch (comboBox1.SelectedIndex) + { + case (0): Global.Config.GifAnimatorSpeed = -32; break; + case (1): Global.Config.GifAnimatorSpeed = -16; break; + case (2): Global.Config.GifAnimatorSpeed = -8; break; + case (3): Global.Config.GifAnimatorSpeed = -4; break; + case (4): Global.Config.GifAnimatorSpeed = -2; break; + case (5): Global.Config.GifAnimatorSpeed = 1; break; + case (6): Global.Config.GifAnimatorSpeed = 2; break; + case (7): Global.Config.GifAnimatorSpeed = 4; break; + case (8): Global.Config.GifAnimatorSpeed = 8; break; + case (9): Global.Config.GifAnimatorSpeed = 16; break; + case (10): Global.Config.GifAnimatorSpeed = 32; break; + } + + this.Close(); + } + + private void button1_Click(object sender, EventArgs e) { this.Close(); }