From 48b15540e75758d03c5f8b7783470831a0414e01 Mon Sep 17 00:00:00 2001 From: Riley McGee <mcgeer@mcmaster.ca> Date: Mon, 28 Nov 2016 12:58:20 -0500 Subject: [PATCH] Playback is proper, resize fixed --- src/Gifitti/Gifitti/Models/GifModel.cs | 10 +++++++++- src/Gifitti/Gifitti/Transformation/TransformGif.cs | 7 ++----- src/Gifitti/Gifitti/View_Models/MainForm.cs | 3 +-- src/Gifitti/Gifitti/View_Models/SaveAsXbyYPrompt.cs | 4 +++- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/Gifitti/Gifitti/Models/GifModel.cs b/src/Gifitti/Gifitti/Models/GifModel.cs index 05bbab1..24d544b 100644 --- a/src/Gifitti/Gifitti/Models/GifModel.cs +++ b/src/Gifitti/Gifitti/Models/GifModel.cs @@ -26,6 +26,8 @@ namespace Gifitti.Models private bool reverse; public int startFrame = 0; public int endFrame = 0; + internal int originalDelay; + public int delay { get; set; } = 0; /// <summary> @@ -36,6 +38,10 @@ namespace Gifitti.Models { //Save the original Gif originalGif = Image.FromFile(path); + PropertyItem item = originalGif.GetPropertyItem(0x5100); // FrameDelay in libgdiplus + // Time is in 1/100ths of a second + originalDelay = (item.Value[0] + item.Value[1] * 256) * 10; + delay = originalDelay; this.gifImage = originalGif.Clone() as Image; dimension = new FrameDimension(originalGif.FrameDimensionsList[0]); frameConstruction(originalGif); @@ -186,10 +192,12 @@ namespace Gifitti.Models /// </summary> /// <param name="index">Frame number to fetch</param> /// <returns>Frame number index in the model</returns> - public Image GetFrame(int index) + public Image GetFrame(int index, bool isResize = false) { originalGif.SelectActiveFrame(dimension, index); //find the frame + if(isResize) + return (Image)originalGif.Clone(); return originalGif; //return a copy of it } diff --git a/src/Gifitti/Gifitti/Transformation/TransformGif.cs b/src/Gifitti/Gifitti/Transformation/TransformGif.cs index e7bdf34..8ca4566 100644 --- a/src/Gifitti/Gifitti/Transformation/TransformGif.cs +++ b/src/Gifitti/Gifitti/Transformation/TransformGif.cs @@ -26,10 +26,9 @@ namespace Gifitti.Transformation { for (int i = 0; i < gm.numberOfFrames; i++) { - collection.Add(new MagickImage(gm.GetFrame(i) as Bitmap)); - //collection[i].AnimationDelay = (delay / 8); + collection.Add(new MagickImage(gm.GetFrame(i, true) as Bitmap)); collection[i].Resize(newWidth, newHeight); - gm.SetFrameFromImage(collection[i].ToBitmap(), i); + gm.SetFrameFromImage(collection[i].ToBitmap() as Bitmap, i); } } } @@ -41,8 +40,6 @@ namespace Gifitti.Transformation { collection.Add(new MagickImage(gm.GetFrame(i) as Bitmap)); collection[i].AnimationDelay = (delay/10); - - } //return collection; diff --git a/src/Gifitti/Gifitti/View_Models/MainForm.cs b/src/Gifitti/Gifitti/View_Models/MainForm.cs index 72d87ed..d357132 100644 --- a/src/Gifitti/Gifitti/View_Models/MainForm.cs +++ b/src/Gifitti/Gifitti/View_Models/MainForm.cs @@ -289,7 +289,6 @@ namespace Gifitti.View_Models //set the initial frames in textbox textBox1.Text = "0"; textBox2.Text = gm.numberOfFrames.ToString(); - //Transformation.TransformGif.resizeGif(this.gm, 100, 100); //TODO: remove temporarily used for testing } } @@ -314,7 +313,7 @@ namespace Gifitti.View_Models /// <param name="e"> Event arguments associated with this event. </param> private void GifFPSSliderUpdate(object sender, EventArgs e) { - gm.delay = (10-trackBar1.Value)*10; + gm.delay = (11-trackBar1.Value)*gm.originalDelay; } private void MenuItemResize(object sender, EventArgs e) diff --git a/src/Gifitti/Gifitti/View_Models/SaveAsXbyYPrompt.cs b/src/Gifitti/Gifitti/View_Models/SaveAsXbyYPrompt.cs index a2e8e4f..f159d7f 100644 --- a/src/Gifitti/Gifitti/View_Models/SaveAsXbyYPrompt.cs +++ b/src/Gifitti/Gifitti/View_Models/SaveAsXbyYPrompt.cs @@ -48,13 +48,15 @@ namespace Gifitti.View_Models Console.WriteLine(path); try { + TransformGif.resizeGif(gm, width, height); gm.saveGif(path); } catch (DirectoryNotFoundException) { + TransformGif.resizeGif(gm, orignalWidth, originalHeight); MessageBox.Show("Save Path Invalid!"); } - TransformGif.resizeGif(gm, orignalWidth, originalHeight); + this.Close(); } -- GitLab