public static void Decompress(Stream source, Stream target) { var reader = new SwfStreamReader(source); var outputWriter = new SwfStreamWriter(target); var fileInfo = reader.ReadSwfFileInfo(); if (fileInfo.Format == SwfFormat.Unknown) { throw new NotSupportedException("Illegal file format"); } var rest = reader.ReadRest(); if (fileInfo.Format == SwfFormat.FWS) { outputWriter.WriteSwfFileInfo(fileInfo); outputWriter.WriteBytes(rest); return; } var uncompressed = new MemoryStream(); SwfZip.Decompress(new MemoryStream(rest), uncompressed, fileInfo.Format); outputWriter.WriteSwfFileInfo(new SwfFileInfo { Format = SwfFormat.FWS, FileLength = (uint)(uncompressed.Length + 8), Version = fileInfo.Version }); outputWriter.WriteBytes(uncompressed.ToArray()); outputWriter.Flush(); }
public static void Decompress(Stream source, Stream target) { var reader = new SwfStreamReader(source); var outputWriter = new SwfStreamWriter(target); var fileInfo = reader.ReadSwfFileInfo(); var rest = reader.ReadRest(); if (fileInfo.Format == "CWS") { var uncompressed = new MemoryStream(); SwfZip.Decompress(new MemoryStream(rest), uncompressed); outputWriter.WriteSwfFileInfo(new SwfFileInfo { Format = "FWS", FileLength = (uint)(uncompressed.Length), Version = fileInfo.Version }); outputWriter.WriteBytes(uncompressed.ToArray()); } else if (fileInfo.Format == "FWS") { outputWriter.WriteSwfFileInfo(fileInfo); outputWriter.WriteBytes(rest); } else { throw new NotSupportedException("Illegal file format"); } outputWriter.Flush(); }
public static void Compress(Stream source, Stream target, SwfFormat compressionFormat) { var reader = new SwfStreamReader(source); var outputWriter = new SwfStreamWriter(target); var fileInfo = reader.ReadSwfFileInfo(); var rest = reader.ReadRest(); if (fileInfo.Format != SwfFormat.FWS) { MemoryStream mem = new MemoryStream(); source.Seek(0, SeekOrigin.Begin); Decompress(source, mem); mem.Seek(0, SeekOrigin.Begin); reader = new SwfStreamReader(mem); fileInfo = reader.ReadSwfFileInfo(); rest = reader.ReadRest(); } outputWriter.WriteSwfFileInfo(new SwfFileInfo { Format = compressionFormat, FileLength = (uint)(rest.Length) + 8, Version = fileInfo.Version }); var compressed = new MemoryStream(); SwfZip.Compress(new MemoryStream(rest), compressed, compressionFormat); outputWriter.WriteBytes(compressed.ToArray()); outputWriter.Flush(); }
public void WriteTo(Stream stream, SwfFormat swfFormat) { var outputWriter = new SwfStreamWriter(stream); if (swfFormat != SwfFormat.FWS) { var res = new MemoryStream(); WriteTo(res, SwfFormat.FWS); res.Seek(0, SeekOrigin.Begin); Compress(res, stream, swfFormat); } else { var mem = new MemoryStream(); WriteBodyTo(mem); mem.Seek(0, SeekOrigin.Begin); outputWriter.WriteSwfFileInfo(new SwfFileInfo { Format = SwfFormat.FWS, FileLength = (uint)(mem.Length + 8), Version = FileInfo.Version }); mem.WriteTo(stream); } outputWriter.Flush(); stream.Flush(); }
public void WriteTo(Stream stream, SwfFormat swfFormat) { var outputWriter = new SwfStreamWriter(stream); if (swfFormat != SwfFormat.FWS) { var res = new MemoryStream(); WriteTo(res, SwfFormat.FWS); res.Seek(0, SeekOrigin.Begin); Compress(res, stream, swfFormat); } else { var mem = new MemoryStream(); var writer = new SwfStreamWriter(mem); writer.WriteSwfHeader(Header); var bin = new SwfTagSerializer(this); foreach (var tag in Tags) { var tagData = bin.GetTagData(tag); writer.WriteTagData(tagData); } mem.Seek(0, SeekOrigin.Begin); outputWriter.WriteSwfFileInfo(new SwfFileInfo { Format = SwfFormat.FWS, FileLength = (uint)(mem.Length + 8), Version = FileInfo.Version }); mem.WriteTo(stream); } outputWriter.Flush(); stream.Flush(); }
public static void Compress(Stream source, Stream target) { var reader = new SwfStreamReader(source); var outputWriter = new SwfStreamWriter(target); var fileInfo = reader.ReadSwfFileInfo(); var rest = reader.ReadRest(); if (fileInfo.Format == "FWS") { var compressed = new MemoryStream(); SwfZip.Compress(new MemoryStream(rest), compressed); outputWriter.WriteSwfFileInfo(new SwfFileInfo { Format = "CWS", FileLength = (uint)(rest.Length) + 8, Version = fileInfo.Version }); outputWriter.WriteBytes(compressed.ToArray()); } else { outputWriter.WriteSwfFileInfo(fileInfo); outputWriter.WriteBytes(rest); } outputWriter.Flush(); }
public void WriteTo(Stream stream, bool compress) { var outputWriter = new SwfStreamWriter(stream); if (compress) { var res = new MemoryStream(); WriteTo(res, false); res.Seek(0, SeekOrigin.Begin); Compress(res, stream); } else { var mem = new MemoryStream(); var writer = new SwfStreamWriter(mem); writer.WriteSwfHeader(Header); var bin = new SwfTagSerializer(this); foreach (var tag in Tags) { var tagData = bin.GetTagData(tag); writer.WriteTagData(tagData); } mem.Seek(0, SeekOrigin.Begin); outputWriter.WriteSwfFileInfo(new SwfFileInfo { Format = "FWS", FileLength = (uint)(mem.Length + 8), Version = FileInfo.Version }); mem.WriteTo(stream); } outputWriter.Flush(); stream.Flush(); }