示例#1
0
        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));
            }
        }
示例#2
0
        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);
        }