public void Export(TextureFormat texture, MetadataWriter metadata, string directory, string basename) { PE3DATTexture dat = texture as PE3DATTexture; if (dat == null) { throw new TextureFormatException("Not a valid PE3 DAT texture!"); } metadata.BeginSection("PE3DAT"); metadata.PutAttribute("Textures", dat.FramesCount); metadata.PutAttribute("Basename", basename); int oldSelected = dat.SelectedFrame; for (int i = 0; i < dat.FramesCount; i++) { dat.SelectedFrame = i; metadata.BeginSection("PE3DATSegment"); metadata.Put("Position1", dat.Position1); metadata.Put("Position2", dat.Position2); metadata.Put("Bpp", dat.Bpp); metadata.EndSection(); dat.GetImage().Save(Path.Combine(directory, basename + "_" + i + ".png")); } dat.SelectedFrame = oldSelected; metadata.EndSection(); }
public void Save(TextureFormat texture, System.IO.Stream outFormatData) { PE3DATTexture dat = texture as PE3DATTexture; if (dat == null) { throw new TextureFormatException("Not a valid PE3 DAT texture!"); } BinaryWriter writer = new BinaryWriter(outFormatData); writer.Write((uint)dat.FramesCount); for (int i = 0; i < 3; i++) { writer.Write((uint)0); } int oldSelected = dat.SelectedFrame; for (int i = 0; i < dat.FramesCount; i++) { dat.SelectedFrame = i; writer.Write(dat.Position1); writer.Write((ushort)dat.Width); writer.Write((ushort)dat.Height); writer.Write(dat.Position2); writer.Write(dat.Bpp == 8 ? (uint)2 : (uint)1); } dat.SelectedFrame = oldSelected; IList <byte[]> imagesData = dat.GetImagesData(); IList <byte[]> palettesData = dat.GetPalettesData(); for (int i = 0; i < dat.FramesCount; i++) { writer.Write(palettesData[i]); writer.Write(imagesData[i]); } }