public void ReadGtfTest(string fileName, string outPath) { using FileStream inStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); using GTF gtf = GTF.CreateFromGtfStream(inStream); using FileStream outStream = new FileStream(outPath, FileMode.Create); gtf.SavePngTo(outStream); }
public async Task AddGtfs(string dirName, IProgress <ProgressData> progress = null) { DirectoryInfo dInfo = new DirectoryInfo(dirName); HashSet <string> filenames = new HashSet <string>(dInfo.GetFiles("*.png") .Select(fInfo => fInfo.Name)); string filenameXlsxName = dirName + "/filenames.xlsx"; XlsxReader xlsx = new XlsxReader(filenameXlsxName); IEnumerable <Record> records = (await Task.Run(() => xlsx.GetRows("XXI", "filenames"))) .Where(record => filenames.Contains((string)record[1])); int total = records.Count(); int count = 0; foreach (Record record in records) { string entryName = (string)record[0]; string pngName = dInfo.FullName + '\\' + (string)record[1]; count++; progress?.Report(new ProgressData { count = count, total = total, filename = entryName }); if (!HasFile(entryName)) { ZipArchiveEntry entry = zipArchive.CreateEntry(entryName); using Stream entryStream = entry.Open(); await GTF.WriteGTF(entryStream, new System.Drawing.Bitmap(pngName), (int)record[2]); _entries.Add(new PatchZipEntry(entry)); } } }
private async Task ReplaceImage() { await subcomponent.ReplaceImage(index); GTF gtf = subcomponent.GetSpritesheet(index); colorGtfs = new ColorChannelGTF(gtf); _bitmapSource = BitmapSource.Create( gtf.Width, gtf.Height, 96, 96, PixelFormats.Bgra32, null, gtf.BitmapDataPtr, 4 * gtf.Stride * gtf.Height, 4 * gtf.Stride); ClearColorBitmaps(); foreach (UISpriteModel spriteModel in Sprites) { spriteModel.InvalidateBrushes(); } ForceRender(); subcomponent.PauModel.ForceRender(); }
public async Task ReplaceGTF(int index, Bitmap bitmap) { if (index < 0 || index > Count) { throw new ArgumentOutOfRangeException(); } int encodingType = gtfs[index].Type; gtfs[index].Dispose(); using MemoryStream ms = new MemoryStream(); await GTF.WriteGTF(ms, bitmap, encodingType); ms.Seek(0, SeekOrigin.Begin); gtfs[index] = GTF.CreateFromGtfStream(ms); ms.Seek(0, SeekOrigin.Begin); await gtfSource.Entries[index].SetData(ms); }
public static async Task <SpriteSheetSource> CreateImageSource(ParFile parFile) { SpriteSheetSource imageSource = new SpriteSheetSource(parFile); foreach (ParEntry entry in parFile.Entries) { try { imageSource.filenames.Add(entry.FileName); GTF gtf = GTF.CreateFromGtfStream(await entry.GetData()); imageSource.gtfs.Add(gtf); } catch (Exception) { throw; } } return(imageSource); }
public UISpriteSheetModel(UISubcomponentModel subcomponent, string name, int index, IGetFileName getFileName) : base(subcomponent, name) { this.index = index; GTF gtf = subcomponent.GetSpritesheet(index); colorGtfs = new ColorChannelGTF(gtf); _bitmapSource = BitmapSource.Create( gtf.Width, gtf.Height, 96, 96, PixelFormats.Bgra32, null, gtf.BitmapDataPtr, 4 * gtf.Stride * gtf.Height, 4 * gtf.Stride); _bitmapSource.Freeze(); _getfileName = getFileName; Sprites = new List <UISpriteModel>(); Rectangles = new ObservableCollection <UISpriteSheetRectangleModel>(); }
public async Task WriteGtfTest(string fileName, string outGtf, int type) { using Bitmap bitmap = new Bitmap(fileName); using FileStream outStream = new FileStream(outGtf, FileMode.Create, FileAccess.Write); await GTF.WriteGTF(outStream, bitmap, type); }