private Overlay CreateOverlay(string bitmapFilePath) { bool succes = false; var ov = new Overlay(); var fileDirectory = Path.GetPathRoot(bitmapFilePath); var fileName = Path.GetFileName(bitmapFilePath); var filenameWithoutExt = Path.GetFileNameWithoutExtension(bitmapFilePath); var img8bitPath = Path.Combine(Main.FolderOverlays, "img8bit.bmp"); string bo1FilePath = String.Empty; try { var temp = new Bitmap(bitmapFilePath); var bm320 = new Bitmap(temp, new Size(320, 200)); temp.Dispose(); Bitmap img8bit = ConvertorTo8Bit.ConvertTo8bppFormat(bm320); if (File.Exists(img8bitPath)) { File.Delete(img8bitPath); } img8bit.Save(img8bitPath, System.Drawing.Imaging.ImageFormat.Bmp); string noConsole = "-noconsole "; string mountHD = "-c \"mount c " + Main.FolderRoot + "\""; string switchToC = "-c \"c:\""; string switchDir = "-c \"cd Odyemu\""; string runBMR = "-c \"BMPTORLE " + "C:\\Overlays\\" + "img8bit.bmp" + " " + "C:\\Overlays\\" + "output.BO1\""; string exit = "-c \"exit\""; ProcessStartInfo dosBoxInfo = new ProcessStartInfo(Main.PathDosBox, noConsole + mountHD + switchToC + switchDir + runBMR + exit); // dosBoxInfo.WindowStyle = ProcessWindowStyle.Minimized; Process dosBoxProcess = new Process(); dosBoxProcess.StartInfo = dosBoxInfo; dosBoxProcess.Start(); System.Threading.Thread.Sleep(200); System.IntPtr app_hwnd; WINDOWPLACEMENT wp = new WINDOWPLACEMENT(); app_hwnd = dosBoxProcess.MainWindowHandle; GetWindowPlacement(app_hwnd, ref wp); wp.showCmd = 2; SetWindowPlacement(app_hwnd, ref wp); dosBoxProcess.WaitForExit(); File.Delete(img8bitPath); bo1FilePath = Path.Combine(Main.FolderOverlays, "output.BO1"); if (File.Exists(bo1FilePath)) { var lastwrite = File.GetLastWriteTime(bo1FilePath); TimeSpan g = DateTime.Now - lastwrite; if (g.Seconds < 5) { succes = true; } } else { succes = false; } if (succes) { if (!File.Exists(Path.Combine(Main.FolderOverlays, fileName))) { File.Copy(bitmapFilePath, Path.Combine(Main.FolderOverlays, fileName)); } ov.FileName = fileName; ov.Name = filenameWithoutExt; ov.Image = new Bitmap(img8bit); ov.Bo1 = File.ReadAllBytes(bo1FilePath); ov.Cartridge = 1; ov.Asociate = false; succes = ov.Save(); } img8bit.Dispose(); bm320.Dispose(); } catch (Exception ex) { MessageBox.Show("Cannot create Overlay \n" + ex.Message); return(null); } finally { if (File.Exists(bo1FilePath)) { File.Delete(bo1FilePath); } } return(ov); }
public bool SetOpaqueColor(Color opaqueColor) { var OroginalbitmapFilePath = Path.Combine(Main.FolderOverlays, FileName); bool succes = false; var img8bitPath = Path.Combine(Main.FolderOverlays, "parse.bmp"); string bo1FilePath = String.Empty; try { var temp = new Bitmap(OroginalbitmapFilePath); var bm = new Bitmap(temp, new Size(320, 200)); temp.Dispose(); if (opaqueColor != null) { bm.SetPixel(0, 0, opaqueColor); } Bitmap img8bit = ConvertorTo8Bit.ConvertTo8bppFormat(bm); //img8bit.Save(Path.Combine(Main.FolderOverlays, "8bit.bmp")); if (File.Exists(img8bitPath)) { File.Delete(img8bitPath); } img8bit.Save(img8bitPath, System.Drawing.Imaging.ImageFormat.Bmp); string noConsole = "-noconsole "; string mountHD = "-c \"mount c " + Main.FolderRoot + "\""; string switchToC = "-c \"c:\""; string switchDir = "-c \"cd Odyemu\""; string runBMR = "-c \"BMPTORLE " + "C:\\Overlays\\" + "parse.bmp" + " " + "C:\\Overlays\\" + "output.BO1\""; string exit = "-c \"exit\""; ProcessStartInfo dosBoxInfo = new ProcessStartInfo(Main.PathDosBox, noConsole + mountHD + switchToC + switchDir + runBMR + exit); dosBoxInfo.CreateNoWindow = true; dosBoxInfo.WindowStyle = ProcessWindowStyle.Minimized; dosBoxInfo.UseShellExecute = false; dosBoxInfo.ErrorDialog = false; dosBoxInfo.WindowStyle = ProcessWindowStyle.Minimized; Process dosBoxProcess = new Process(); dosBoxProcess.StartInfo = dosBoxInfo; dosBoxProcess.Start(); System.Threading.Thread.Sleep(200); System.IntPtr app_hwnd; WINDOWPLACEMENT wp = new WINDOWPLACEMENT(); app_hwnd = dosBoxProcess.MainWindowHandle; GetWindowPlacement(app_hwnd, ref wp); wp.showCmd = 2; SetWindowPlacement(app_hwnd, ref wp); dosBoxProcess.WaitForExit(); File.Delete(img8bitPath); bo1FilePath = Path.Combine(Main.FolderOverlays, "output.BO1"); var lastwrite = File.GetLastWriteTime(bo1FilePath); if (File.Exists(bo1FilePath)) { TimeSpan g = DateTime.Now - lastwrite; if (g.Seconds < 5) { succes = true; } } else { succes = false; } if (succes) { Bo1 = File.ReadAllBytes(bo1FilePath); Image = new Bitmap(img8bit); //File.Copy(bitmapFilePath, Path.Combine(Main.FolderOverlays, fileName)); //ov.Name = filenameWithoutExt; //ov.Image = new Bitmap(img8bit); //ov.Bo1 = File.ReadAllBytes(bo1FilePath); //ov.Cartridge = 1; //ov.Asociate = false; //succes = ov.Save(); } img8bit.Dispose(); bm.Dispose(); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { if (File.Exists(bo1FilePath)) { File.Delete(bo1FilePath); } } Save(); return(succes); }