Example #1
0
 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);
 }
Example #2
0
        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));
                }
            }
        }
Example #3
0
        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();
        }
Example #4
0
        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);
        }
Example #5
0
        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);
        }
Example #6
0
        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>();
        }
Example #7
0
 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);
 }