public XMBFile LoadXMB(string barPath, string fileName) { var extFile = Path.Combine(Path.GetDirectoryName(barPath), fileName); try { if (File.Exists(extFile)) { using (var file = File.OpenRead(extFile)) { return(XMBFile.Load(file)); } } } catch { } { var barFile = GetFile(barPath); if (barFile == null) { return(null); } var file = barFile.GetFileStream(fileName); if (file == null) { return(null); } return(XMBFile.Load(file)); } }
public string ConvertFileTo(FileViewModel file, string path) { try { switch (file.Extension.ToLower()) { case ".xmb": { var xdoc = XMBFile.Load(GetFileStream(file.Entry)).GetAsXDocument(); xdoc.Save(path); } break; case ".btx": case ".ddt": { RTS3Image srcImg = null; if (file.Extension.ToLower() == ".ddt") { srcImg = DDTImage.Load(GetFileStream(file.Entry)); } else if (file.Extension.ToLower() == ".btx") { srcImg = BTXImage.Load(GetFileStream(file.Entry)); } byte[] pixData = srcImg.Get32BitUncompressed(); if (pixData == null) { return(null); } var bmp = BitmapSource.Create(srcImg.Width, srcImg.Height, 96, 96, PixelFormats.Bgra32, null, pixData, srcImg.Width * 4); BitmapEncoder encoder = null; if (Path.GetExtension(path).ToLower() == ".png") { encoder = new PngBitmapEncoder(); } else if (Path.GetExtension(path).ToLower() == ".jpg") { encoder = new JpegBitmapEncoder(); } else if (Path.GetExtension(path).ToLower() == ".gif") { encoder = new GifBitmapEncoder(); } else if (Path.GetExtension(path).ToLower() == ".bmp") { encoder = new BmpBitmapEncoder(); } encoder.Frames.Add(BitmapFrame.Create(bmp)); using (var stream = File.Create(path)) { encoder.Save(stream); } } break; default: return(null); } } catch { return(null); } return(path); }