public EcfFileChunkDefinition Add(EcfChunk rawChunk, int rawChunkIndex) { Contract.Requires(rawChunk != null); var chunk = new EcfFileChunkDefinition(); chunk.Initialize(this, rawChunk, rawChunkIndex); Chunks.Add(chunk); return(chunk); }
internal void SetupRawChunk(EcfChunk rawChunk, int rawChunkIndex) { RawChunkIndex = rawChunkIndex; rawChunk.EntryId = Id; rawChunk.DataAlignmentBit = AlignmentBit; rawChunk.CompressionType = CompressionType; rawChunk.IsContiguous = IsContiguous; rawChunk.IsWriteCombined = IsWriteCombined; rawChunk.IsDeflateStream = IsDeflateStream; rawChunk.IsResourceTag = IsResourceTag; }
public void Initialize(EcfFileDefinition parent, EcfChunk rawChunk, int rawChunkIndex) { RawChunkIndex = rawChunkIndex; Parent = parent; Id = rawChunk.EntryId; AlignmentBit = rawChunk.DataAlignmentBit; CompressionType = rawChunk.CompressionType; IsContiguous = rawChunk.IsContiguous; IsWriteCombined = rawChunk.IsWriteCombined; IsDeflateStream = rawChunk.IsDeflateStream; IsResourceTag = rawChunk.IsResourceTag; }
private void SerializeMainChunk(EcfChunk chunk, IO.EndianStream s) { if (s.IsReading) { if (!chunk.IsDeflateStream) { throw new System.IO.InvalidDataException(string.Format("{0}'s is supposed to be an XMB but isn't compressed", chunk.EntryId.ToString("X16"))); } FileData = CompressedStream.DecompressFromStream(s); } else if (s.IsWriting) { Contract.Assert(false); chunk.IsDeflateStream = true; } }
void ExpandChunkToFile(EcfFileChunkDefinition chunk, EcfChunk rawChunk) { string file_path = EcfDefinition.GetChunkAbsolutePath(chunk); if (!ExpanderOptions.Test(EcfFileExpanderOptions.DontOverwriteExistingFiles)) { if (File.Exists(file_path)) { if (VerboseOutput != null) { VerboseOutput.WriteLine("\tSkipping chunk, output file already exists: {0}", file_path); } return; } } using (var fs = File.OpenWrite(file_path)) { var chunk_bytes = rawChunk.GetBuffer(mEcfStream); fs.Write(chunk_bytes, 0, chunk_bytes.Length); } }