Esempio n. 1
0
        void RecompressGMFiles(object o)
        {
            RecompressThreadArgs rta = (RecompressThreadArgs)o;
            string inDir             = rta.inDir;

            string[] allFiles     = Directory.GetFiles(inDir);
            int      numFiles     = allFiles.Length;
            WaitDlg  dlg          = rta.dlg;
            string   pngDirectory = Path.Combine(inDir, "bmp");

            dlg.UpdateStatus("Recompressing {0} files", numFiles);
            string outDir   = rta.outDir;
            string gmllFile = @"T:\out.gmll";

            for (int i = 0; i < numFiles; ++i)
            {
                Box.ResetIndexCount();
                string       currentFile = allFiles[i];
                byte[]       gmFileData;
                MemoryStream decompGM;
                using (FileStream fs = File.OpenRead(currentFile))
                {
                    decompGM   = Compress.GZipDecompress(fs);
                    gmFileData = decompGM.ToArray();
                }
                string curFile               = Path.GetFileName(currentFile);
                string pngFile               = Path.Combine(pngDirectory, curFile + ".bmp");
                GTMP.GMFile.GMFileInfo fi    = GTMP.GMFile.Parse(decompGM);
                List <IBox>            boxes = ConvertGMFileBoxes(fi.Boxes);
                if (!Tools.ConvertImageTo(pngFile, gmllFile, Tools.ConvertType.GM))
                {
                    dlg.UpdateStatus(String.Format("Couldn't convert {0} to GT2 foreground, skipping", pngFile));
                    continue;
                }

                try
                {
                    byte[] gmllData    = Images.LoadGMLLData(gmllFile);
                    string newFileName = Path.Combine(outDir, curFile);
                    GMProject.ExportGM(newFileName, boxes, fi.Metadata, gmllData);
                }
                catch (InvalidBoxStateException ibse)
                {
                    DebugLogger.Log("Debug", "Exception was from {0}", currentFile);
                    dlg.UpdateStatus("Caught invalid box exception {0} for {1} in file {2}", ibse.Message, ibse.InvalidBox.Name, currentFile);
                    File.Delete(gmllFile);
                }

                if ((i != 0) && ((i % 100) == 0))
                {
                    dlg.UpdateStatus(String.Format("Tested {0} files", i));
                }
            }
            dlg.AllowClose("All done");
        }
Esempio n. 2
0
        private void recompressFiles_Click(object sender, EventArgs e)
        {
            string inDir  = @"C:\Users\Adrian\Downloads\GT2\US1.0Vol\USBmpTest";
            string outDir = @"C:\Users\Adrian\Downloads\GT2\US1.0Vol\USBmpTestMod";

            using (WaitDlg dlg = new WaitDlg("Checking GM Files"))
            {
                RecompressThreadArgs rta = new RecompressThreadArgs();
                rta.dlg    = dlg;
                rta.inDir  = inDir;
                rta.outDir = outDir;
                System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(RecompressGMFiles), rta);
                dlg.ShowDialog(this);
            }
        }