diff --git a/src/Gifitti/Gifitti/Gifitti.csproj b/src/Gifitti/Gifitti/Gifitti.csproj index 70d710df17e30315354fe1fbde2dbb740a92086a..4c234927247bdcaf6e840cd4670fe72d90c1723d 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 afb4125c8ac782c2fb5e41d2484070ec387de998..adc25bc7633a5b5d5f7224b4ee18963c1d71ddaa 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 a2539c7b567f6fdcf2d30e37f1e86676ad707101..09ae8ca3d36b1bb88bc2108100ed9dddfe175685 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 ed285eaaa344f6cddf1b3d81d03f9785ffb23987..5c3a3c92414f5caf4ecf95e5dc8d11b0908c1bc0 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 83f112f355bcbdfe4f4c591a1f1c445622f4599b..9955817ca988237ead5a4367d23f08bf38e4555e 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 2be8fe4d170cfe97176fc63ce2062fb688cfd8db..9b48bdee900c75c6b55845673f575cba6326beb8 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