From f8353f0ef2098fecd800dbbf629c6aa52589e5b6 Mon Sep 17 00:00:00 2001
From: Riley McGee <mcgeer@mcmaster.ca>
Date: Sun, 20 Nov 2016 23:03:59 -0500
Subject: [PATCH] Resize abstracted Out

---
 src/Gifitti/Gifitti/Gifitti.csproj            |  5 +-
 src/Gifitti/Gifitti/Models/GifModel.cs        | 47 ++++++++++---------
 .../Gifitti/Transformation/TransformGif.cs    | 47 +++++++++++++++++++
 src/Gifitti/Gifitti/View_Models/MainForm.cs   |  1 +
 4 files changed, 76 insertions(+), 24 deletions(-)
 create mode 100644 src/Gifitti/Gifitti/Transformation/TransformGif.cs

diff --git a/src/Gifitti/Gifitti/Gifitti.csproj b/src/Gifitti/Gifitti/Gifitti.csproj
index 2ec8529..06268b1 100644
--- a/src/Gifitti/Gifitti/Gifitti.csproj
+++ b/src/Gifitti/Gifitti/Gifitti.csproj
@@ -66,6 +66,7 @@
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="Transformation\TransformGif.cs" />
     <Compile Include="View_Models\MainForm.cs">
       <SubType>Form</SubType>
     </Compile>
@@ -110,9 +111,7 @@
   <ItemGroup>
     <None Include="App.config" />
   </ItemGroup>
-  <ItemGroup>
-    <Folder Include="Transformation\" />
-  </ItemGroup>
+  <ItemGroup />
   <ItemGroup>
     <BootstrapperPackage Include=".NETFramework,Version=v4.5.2">
       <Visible>False</Visible>
diff --git a/src/Gifitti/Gifitti/Models/GifModel.cs b/src/Gifitti/Gifitti/Models/GifModel.cs
index b8636cf..652a5c6 100644
--- a/src/Gifitti/Gifitti/Models/GifModel.cs
+++ b/src/Gifitti/Gifitti/Models/GifModel.cs
@@ -118,27 +118,27 @@ namespace Gifitti.Models
         /// </summary>
         /// <param name="newWidth">New Width dimension in px.</param>
         /// <param name="newHeight">New Height dimension in px.</param>
-        public void resizeGif(int newWidth, int newHeight)
-        {
-            using (MagickImageCollection collection = new MagickImageCollection())
-            {
-                for (int i = 0; i < frames.Length; i++)
-                {
-                    collection.Add(new MagickImage(frames[i] as Bitmap));
-                    collection[i].Resize(newWidth, newHeight);
-                }
-                // Optionally reduce colors
-                QuantizeSettings settings = new QuantizeSettings();
-                settings.Colors = 256;
-                collection.Quantize(settings);
-
-                // Optionally optimize the images (images should have the same size).
-                collection.Optimize();
-
-                // Save gif
-                collection.Write("tempResize.gif");
-            }
-        }
+        //public void resizeGif(int newWidth, int newHeight)
+        //{
+        //    using (MagickImageCollection collection = new MagickImageCollection())
+        //    {
+        //        for (int i = 0; i < frames.Length; i++)
+        //        {
+        //            collection.Add(new MagickImage(frames[i] as Bitmap));
+        //            collection[i].Resize(newWidth, newHeight);
+        //        }
+        //        // Optionally reduce colors
+        //        QuantizeSettings settings = new QuantizeSettings();
+        //        settings.Colors = 256;
+        //        collection.Quantize(settings);
+
+        //        // Optionally optimize the images (images should have the same size).
+        //        collection.Optimize();
+
+        //        // Save gif
+        //        collection.Write("tempResize.gif");
+        //    }
+        //}
 
         /// <summary>
         /// Fetches a sub gif over frames start -> stop
@@ -217,5 +217,10 @@ namespace Gifitti.Models
             return (Image)originalGif.Clone();
             //return a copy of it
         }
+
+        public void SetFrameFromImage(Image frame, int index)
+        {
+            frames[index] = frame;
+        }
     }
 }
diff --git a/src/Gifitti/Gifitti/Transformation/TransformGif.cs b/src/Gifitti/Gifitti/Transformation/TransformGif.cs
new file mode 100644
index 0000000..6353d47
--- /dev/null
+++ b/src/Gifitti/Gifitti/Transformation/TransformGif.cs
@@ -0,0 +1,47 @@
+using Gifitti.Models;
+using ImageMagick;
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Gifitti.Transformation
+{
+    /// <summary>
+    /// Methods for GIF transformations kept together
+    /// </summary>
+    static class TransformGif
+    {
+        /// <summary>
+        /// Resizes a GIF to be newWidth x newHeight px
+        /// </summary>
+        /// <param name="newWidth">New Width dimension in px.</param>
+        /// <param name="newHeight">New Height dimension in px.</param>
+        /// <param name="gm" cref="GifModel">GifModel being modified.</param>
+        public static void resizeGif(GifModel gm, int newWidth, int newHeight)
+        {
+            using (MagickImageCollection collection = new MagickImageCollection())
+            {
+                for (int i = 0; i < gm.numberOfFrames; i++)
+                {
+                    collection.Add(new MagickImage(gm.GetFrame(i) as Bitmap));
+                    collection[i].Resize(newWidth, newHeight);
+                    gm.SetFrameFromImage(collection[i].ToBitmap(), i);
+                }
+                // Optionally reduce colors
+                //QuantizeSettings settings = new QuantizeSettings();
+                //settings.Colors = 256;
+                //collection.Quantize(settings);
+
+                //// Optionally optimize the images (images should have the same size).
+                //collection.Optimize();
+
+                //// Save gif
+                //collection.Write("tempResize.gif");
+                
+            }
+        }
+    }
+}
diff --git a/src/Gifitti/Gifitti/View_Models/MainForm.cs b/src/Gifitti/Gifitti/View_Models/MainForm.cs
index 2aa7cba..9ad3ad1 100644
--- a/src/Gifitti/Gifitti/View_Models/MainForm.cs
+++ b/src/Gifitti/Gifitti/View_Models/MainForm.cs
@@ -353,6 +353,7 @@ 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);
             }
         }
 
-- 
GitLab