public void Save(DDS dds, string FileName, List <List <byte[]> > data = null, bool IsDX10 = false) { BinaryDataWriter writer = new BinaryDataWriter(new FileStream(FileName, FileMode.Create, FileAccess.Write, FileShare.Write)); writer.Write(Encoding.ASCII.GetBytes("DDS ")); writer.Write(header.size); writer.Write(header.flags); writer.Write(header.height); writer.Write(header.width); writer.Write(header.pitchOrLinearSize); writer.Write(header.depth); writer.Write(header.mipmapCount); for (int i = 0; i < 11; ++i) { writer.Write(header.reserved1[i]); } writer.Write(header.ddspf.size); writer.Write(header.ddspf.flags); writer.Write(header.ddspf.fourCC); writer.Write(header.ddspf.RGBBitCount); writer.Write(header.ddspf.RBitMask); writer.Write(header.ddspf.GBitMask); writer.Write(header.ddspf.BBitMask); writer.Write(header.ddspf.ABitMask); writer.Write(header.caps); writer.Write(header.caps2); writer.Write(header.caps3); writer.Write(header.caps4); writer.Write(header.reserved2); if (IsDX10) { WriteDX10Header(writer); } if (data != null) { foreach (byte[] mip in data[0]) { writer.Write(mip); } } else { writer.Write(bdata); } writer.Flush(); }
public void Save(string path) { var fs = File.Create(path); BinaryDataWriter writer = new BinaryDataWriter(fs, Encoding.UTF8); Header.WriteTo(writer); for (int i = 0; i < Header.MessageCount; i++) { if (Entries[i].Label != null) { writer.Write(Entries[i].ID); writer.Write(Entries[i].Address); } } var lbl_start = writer.Position; for (int i = 0; i < Header.MessageCount; i++) { if (Entries[i].Label != null) { writer.Write(Entries[i].Label, BinaryStringFormat.ZeroTerminated); } } var msg_start = writer.Position; for (int i = 0; i < Header.MessageCount; i++) { if (Entries[i].Message != null) { writer.Write(Entries[i].Message, BinaryStringFormat.ZeroTerminated); } } Header.LabelBlockSize = (uint)(msg_start - lbl_start); Header.MessageBlockSize = (uint)(writer.Position - msg_start); writer.Seek(0, SeekOrigin.Begin); Header.WriteTo(writer); writer.Flush(); fs.Close(); }