public void doSaveAnimGif(string filename, object sender, DoWorkEventArgs args)
        {
            FileStream fs = new FileStream(filename + ".gif", FileMode.OpenOrCreate);

            using (var stream = new MemoryStream())
            {
                using (var encoder = new GifEncoder(stream, null, null, 12))
                {
                    for (int i = 0; i < SharedSettings.Layers.Length; i++)
                    {
                        var image = (Image)(SharedSettings.Layers[i] as Bitmap).Clone();
                        encoder.AddFrame(image, 0, 0, TimeSpan.FromSeconds(0));
                    }

                    stream.Position = 0;
                    stream.WriteTo(fs);
                }
            }
            fs.Close();

            try
            {
                GoogleDriveUpload.DriveUpload(filename + ".gif");
                string message = SharedSettings.getGlobalString("projectsave_saved");
                MessageBox.Show(new Form()
                {
                    WindowState = FormWindowState.Maximized, TopMost = true
                }, message);
            }
            catch (Exception e)
            {
                MessageBox.Show(new Form()
                {
                    WindowState = FormWindowState.Maximized, TopMost = true
                }, SharedSettings.getGlobalString("gdrivesavedialog_error") + e.Message);
            }
            try
            {
                System.IO.File.Delete(filename + ".gif");
            }
            catch (Exception e)
            {
                Console.WriteLine("Problem deleting temp gif file: " + e.Message);
            }
        }
        public void doSave(Bitmap bm, string filename, string filetype, object sender, DoWorkEventArgs args)
        {
            try
            {
                Canvas.handleWatermark(Graphics.FromImage(bm));

                string      ext = ".png";
                ImageFormat fmt = ImageFormat.Png;
                switch (filetype)
                {
                case ("Jpeg | *.jpg"):
                    ext = ".jpg";
                    fmt = ImageFormat.Jpeg;
                    break;

                case ("PNG | *.png"):
                    // don't need to change anything
                    break;

                case ("GIF | *.gif"):
                    ext = ".gif";
                    fmt = ImageFormat.Gif;
                    break;

                case ("ICON | *.ico"):
                    ext = ".ico";
                    fmt = ImageFormat.Icon;
                    break;

                case ("TIFF | *.tiff"):
                    ext = ".tiff";
                    fmt = ImageFormat.Tiff;
                    break;

                case ("Bitmap | *.bmp"):
                    ext = ".bmp";
                    fmt = ImageFormat.Bmp;
                    break;

                default:
                    // on error, default to png
                    break;
                }

                bm.Save(filename + ext, fmt);

                GoogleDriveUpload.DriveUpload(filename + ext);

                string message = SharedSettings.getGlobalString("projectsave_saved");
                MessageBox.Show(new Form()
                {
                    WindowState = FormWindowState.Maximized, TopMost = true
                }, message);

                System.IO.File.Delete(filename + ext);
            }
            catch (Exception e)
            {
                MessageBox.Show(new Form()
                {
                    WindowState = FormWindowState.Maximized, TopMost = true
                }, SharedSettings.getGlobalString("gdrivesavedialog_error") + e.Message);
            }
        }
        public void doSaveProject(SharedSettings ss, string filename, object sender, DoWorkEventArgs args)
        {
            try
            {
                System.IO.Directory.CreateDirectory("save");

                Bitmap[] bitArr     = ss.getLayerBitmaps();
                string   baseDir    = System.IO.Directory.GetCurrentDirectory();
                string[] LayerNames = ss.getLayerNames();

                for (int n = 0; n < bitArr.Length; n++)
                {
                    bitArr[n].Save(baseDir + "\\save\\" + LayerNames[n] + ".png", ImageFormat.Png);
                }

                System.IO.File.WriteAllLines(baseDir + @"\save\names.txt", LayerNames);

                if (SharedSettings.bitmapWatermark != null)
                {
                    System.IO.Directory.CreateDirectory("save\\watermark");
                    SharedSettings.bitmapWatermark.Save("save\\watermark\\watermark.png", ImageFormat.Png);
                    string[] watermarkInfo = { SharedSettings.bRenderWatermark.ToString(), SharedSettings.watermarkStyle };
                    System.IO.File.WriteAllLines(baseDir + @"\\save\\watermark\\watermarkdata.txt", watermarkInfo);
                }

                if (System.IO.File.Exists(filename + ".lep"))
                {
                    System.IO.File.Delete(filename + ".lep");
                }

                ZipFile.CreateFromDirectory(baseDir + @"\save", filename + ".lep");

                System.IO.Directory.Delete(baseDir + @"\save", true);
            }
            catch (Exception e)
            {
                string message = SharedSettings.getGlobalString("projectsave_error") + "\n\n" + e.ToString();
                MessageBox.Show(new Form()
                {
                    WindowState = FormWindowState.Maximized, TopMost = true
                }, message);
            }

            try
            {
                GoogleDriveUpload.DriveUpload(filename + ".lep");
                string message = SharedSettings.getGlobalString("projectsave_saved");
                MessageBox.Show(new Form()
                {
                    WindowState = FormWindowState.Maximized, TopMost = true
                }, message);
            }
            catch (Exception e)
            {
                MessageBox.Show(new Form()
                {
                    WindowState = FormWindowState.Maximized, TopMost = true
                }, SharedSettings.getGlobalString("gdrivesavedialog_error") + e.Message);
            }
            try
            {
                System.IO.File.Delete(filename + ".lep");
            }
            catch (Exception e)
            {
                Console.WriteLine("Problem deleting temp lep file: " + e.Message);
            }
        }