Beispiel #1
0
        private ArchiveResult Archive(string scanDirectory, string target)
        {
            try
            {
                string tempFile = Path.GetTempFileName();

                try
                {
                    Lzma.Compress(scanDirectory, tempFile);
                    File.Copy(tempFile, target);
                }
                finally
                {
                    if (File.Exists(tempFile))
                    {
                        File.Delete(tempFile);
                    }
                }

                return(new ArchiveResult {
                    Success = true
                });
            }
            catch (Exception e)
            {
                return(new ArchiveResult {
                    Success = false, Exception = e
                });
            }
        }
        public void Test_Lzma()
        {
            using (MemoryStream stream1 = new MemoryStream())
                using (FileStream stream2 = new FileStream("temp.lzma", FileMode.Create))
                    //using (MemoryStream stream2 = new MemoryStream())
                    using (MemoryStream stream3 = new MemoryStream())
                    {
                        for (int i = 0; i < 4; i++)
                        {
                            byte[] buffer = new byte[1024 * 1024];
                            _random.NextBytes(buffer);
                            stream1.Write(buffer, 0, buffer.Length);
                        }

                        Stopwatch sw = new Stopwatch();
                        sw.Start();

                        stream1.Seek(0, SeekOrigin.Begin);
                        Lzma.Compress(new WrapperStream(stream1, true), new WrapperStream(stream2, true), _bufferManager);
                        stream2.Seek(0, SeekOrigin.Begin);
                        Lzma.Decompress(new WrapperStream(stream2, true), new WrapperStream(stream3, true), _bufferManager);

                        sw.Stop();
                        Debug.WriteLine(string.Format("Lzma: {0}", sw.Elapsed.ToString()));

                        stream1.Seek(0, SeekOrigin.Begin);
                        stream3.Seek(0, SeekOrigin.Begin);

                        Assert.AreEqual(stream1.Length, stream3.Length);

                        for (; ;)
                        {
                            byte[] buffer1 = new byte[1024 * 32];
                            int    buffer1Length;
                            byte[] buffer2 = new byte[1024 * 32];
                            int    buffer2Length;

                            if ((buffer1Length = stream1.Read(buffer1, 0, buffer1.Length)) <= 0)
                            {
                                break;
                            }
                            if ((buffer2Length = stream3.Read(buffer2, 0, buffer2.Length)) <= 0)
                            {
                                break;
                            }

                            Assert.IsTrue(CollectionUtilities.Equals(buffer1, 0, buffer2, 0, buffer1Length));
                        }
                    }
        }
Beispiel #3
0
        private void LZMAToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DialogResult warning = MessageBox.Show(
                "After the SC file has been compressed, the tool will clear all previous data to prevent reading errors.\nContinue?",
                "Beware!", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2);

            if (warning == DialogResult.Yes)
            {
                using (SaveFileDialog dlg = new SaveFileDialog())
                {
                    dlg.Filter          = "Supercell Graphics (SC) | *.sc";
                    dlg.FileName        = GetFileName(_scFile.GetInfoFileName());
                    dlg.OverwritePrompt = false;
                    dlg.CreatePrompt    = false;
                    if (dlg.ShowDialog() == DialogResult.OK)
                    {
                        Lzma.Compress(_scFile.GetInfoFileName(), dlg.FileName);

                        dlg.Title    = "Please enter texture file location";
                        dlg.Filter   = "Supercell Texture (SC) | *_tex.sc";
                        dlg.FileName = GetFileName(_scFile.GetTextureFileName());
                        if (dlg.ShowDialog() == DialogResult.OK)
                        {
                            Lzma.Compress(_scFile.GetTextureFileName(), dlg.FileName);
                        }
                    }
                }

                saveToolStripMenuItem.Visible               = false;
                reloadToolStripMenuItem.Visible             = false;
                exportAllShapeToolStripMenuItem.Visible     = false;
                exportAllChunkToolStripMenuItem.Visible     = false;
                exportAllAnimationToolStripMenuItem.Visible = false;
                compressionToolStripMenuItem.Visible        = false;
                addTextureToolStripMenuItem.Visible         = false;

                treeView1.Nodes.Clear();

                pictureBox1.Image = null;
                label1.Text       = null;
                _scFile           = null;
            }
        }