From 61a8dea02dac7954514ed35b1f0861d8a3aeb5f8 Mon Sep 17 00:00:00 2001 From: Riley McGee <mcgeer@mcmaster.ca> Date: Tue, 15 Nov 2016 13:03:39 -0500 Subject: [PATCH] Added Modularity via Folders, Added Save Functionality to Model --- src/Gifitti/Gifitti/Gifitti.csproj | 13 ++++--- src/Gifitti/Gifitti/{ => Models}/GifImage.cs | 2 +- src/Gifitti/Gifitti/{ => Models}/GifModel.cs | 37 ++++++++++++++++++- src/Gifitti/Gifitti/Program.cs | 1 + .../{ => View_Models}/Form1.Designer.cs | 2 +- .../Gifitti/{ => View_Models}/Form1.cs | 5 ++- .../Gifitti/{ => View_Models}/Form1.resx | 0 7 files changed, 50 insertions(+), 10 deletions(-) rename src/Gifitti/Gifitti/{ => Models}/GifImage.cs (98%) rename src/Gifitti/Gifitti/{ => Models}/GifModel.cs (75%) rename src/Gifitti/Gifitti/{ => View_Models}/Form1.Designer.cs (99%) rename src/Gifitti/Gifitti/{ => View_Models}/Form1.cs (98%) rename src/Gifitti/Gifitti/{ => View_Models}/Form1.resx (100%) diff --git a/src/Gifitti/Gifitti/Gifitti.csproj b/src/Gifitti/Gifitti/Gifitti.csproj index 70d710d..4c23492 100644 --- a/src/Gifitti/Gifitti/Gifitti.csproj +++ b/src/Gifitti/Gifitti/Gifitti.csproj @@ -50,17 +50,17 @@ <Reference Include="System.Xml" /> </ItemGroup> <ItemGroup> - <Compile Include="Form1.cs"> + <Compile Include="View_Models\Form1.cs"> <SubType>Form</SubType> </Compile> - <Compile Include="Form1.Designer.cs"> + <Compile Include="View_Models\Form1.Designer.cs"> <DependentUpon>Form1.cs</DependentUpon> </Compile> - <Compile Include="GifImage.cs" /> - <Compile Include="GifModel.cs" /> + <Compile Include="Models\GifImage.cs" /> + <Compile Include="Models\GifModel.cs" /> <Compile Include="Program.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> - <EmbeddedResource Include="Form1.resx"> + <EmbeddedResource Include="View_Models\Form1.resx"> <DependentUpon>Form1.cs</DependentUpon> </EmbeddedResource> <EmbeddedResource Include="Properties\Resources.resx"> @@ -86,6 +86,9 @@ <ItemGroup> <None Include="App.config" /> </ItemGroup> + <ItemGroup> + <Folder Include="Transformation\" /> + </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it. Other similar extension points exist, see Microsoft.Common.targets. diff --git a/src/Gifitti/Gifitti/GifImage.cs b/src/Gifitti/Gifitti/Models/GifImage.cs similarity index 98% rename from src/Gifitti/Gifitti/GifImage.cs rename to src/Gifitti/Gifitti/Models/GifImage.cs index afb4125..adc25bc 100644 --- a/src/Gifitti/Gifitti/GifImage.cs +++ b/src/Gifitti/Gifitti/Models/GifImage.cs @@ -6,7 +6,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Gifitti +namespace Gifitti.Models { class GifImage { diff --git a/src/Gifitti/Gifitti/GifModel.cs b/src/Gifitti/Gifitti/Models/GifModel.cs similarity index 75% rename from src/Gifitti/Gifitti/GifModel.cs rename to src/Gifitti/Gifitti/Models/GifModel.cs index a2539c7..09ae8ca 100644 --- a/src/Gifitti/Gifitti/GifModel.cs +++ b/src/Gifitti/Gifitti/Models/GifModel.cs @@ -7,10 +7,11 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Gifitti +namespace Gifitti.Models { class GifModel { + public Image gifImage { get; set; } public Image originalGif { get; private set; } private FrameDimension dimension; public int numberOfFrames { get; private set; } @@ -26,6 +27,7 @@ namespace Gifitti { //Save the original Gif originalGif = Image.FromFile(path); + this.gifImage = originalGif.Clone() as Image; dimension = new FrameDimension(originalGif.FrameDimensionsList[0]); frameConstruction(originalGif); } @@ -43,6 +45,39 @@ namespace Gifitti } } + public void resetToOriginalGif() + { + gifImage = originalGif; + } + + /// <summary> + /// Takes the full path of a GIF save location, + /// extension included + /// </summary> + /// <param name="path">String representation of path to save the gif to. + /// Name and extension of gif mandatory. + /// </param> + public void saveGif(string path) + { + //TODO take in image setting components as well as frames being viewed etc. + //Build GIF + using (MagickImageCollection collection = new MagickImageCollection()) + { + for (int i = 0; i < frames.Length; i++) + collection.Add(new MagickImage(frames[i] as Bitmap)); + + // Maximize Colour saturation + QuantizeSettings settings = new QuantizeSettings(); + settings.Colors = 256; + collection.Quantize(settings); + + // Optimized the GIF being exported + collection.Optimize(); + // Save GIF to path + collection.Write(path); + } + } + public void resizeGif(int newWidth, int newHeight) { using (MagickImageCollection collection = new MagickImageCollection()) diff --git a/src/Gifitti/Gifitti/Program.cs b/src/Gifitti/Gifitti/Program.cs index ed285ea..5c3a3c9 100644 --- a/src/Gifitti/Gifitti/Program.cs +++ b/src/Gifitti/Gifitti/Program.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms; +using Gifitti.View_Models; namespace Gifitti { diff --git a/src/Gifitti/Gifitti/Form1.Designer.cs b/src/Gifitti/Gifitti/View_Models/Form1.Designer.cs similarity index 99% rename from src/Gifitti/Gifitti/Form1.Designer.cs rename to src/Gifitti/Gifitti/View_Models/Form1.Designer.cs index 83f112f..9955817 100644 --- a/src/Gifitti/Gifitti/Form1.Designer.cs +++ b/src/Gifitti/Gifitti/View_Models/Form1.Designer.cs @@ -1,4 +1,4 @@ -namespace Gifitti +namespace Gifitti.View_Models { partial class Form1 { diff --git a/src/Gifitti/Gifitti/Form1.cs b/src/Gifitti/Gifitti/View_Models/Form1.cs similarity index 98% rename from src/Gifitti/Gifitti/Form1.cs rename to src/Gifitti/Gifitti/View_Models/Form1.cs index 2be8fe4..9b48bde 100644 --- a/src/Gifitti/Gifitti/Form1.cs +++ b/src/Gifitti/Gifitti/View_Models/Form1.cs @@ -9,8 +9,9 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; +using Gifitti.Models; -namespace Gifitti +namespace Gifitti.View_Models { public partial class Form1 : Form { @@ -43,7 +44,7 @@ namespace Gifitti gm = new GifModel(file); gm.ReverseAtEnd = false; - Image loadedGif = Image.FromFile(file); + Image loadedGif = gm.gifImage; globalGif = loadedGif; //gifView.Image = loadedGif; diff --git a/src/Gifitti/Gifitti/Form1.resx b/src/Gifitti/Gifitti/View_Models/Form1.resx similarity index 100% rename from src/Gifitti/Gifitti/Form1.resx rename to src/Gifitti/Gifitti/View_Models/Form1.resx -- GitLab