public TagsRemover(string fileName) { Stream stream = new FileStream(fileName, FileMode.Open); SwfReader reader = new SwfReader(stream); swf = reader.ReadSwf(); stream.Close(); }
public Swf RemoveTags(int tagCode) { if (swf == null) return null; List<BaseTag> tags = new List<BaseTag>(); foreach (BaseTag tag in swf) if (tag.TagCode != tagCode) tags.Add(tag); Swf newSwf = new Swf(swf.Header, tags.ToArray()); newSwf.Version = swf.Version; swf = newSwf; return newSwf; }
/// <summary> /// Writes the (compressed or uncompressed) swf data to a stream. /// The stream gets flushed and closed afterwards. /// </summary> public void Write(Swf swf) { swf.UpdateData(); // update tag lengths to adapt to bytecode length SwfHeader header = swf.Header; BinaryWriter writer = new BinaryWriter(baseStream,System.Text.Encoding.GetEncoding("ascii")); // ASCII seems to be ok for Flash 5 and 6+ as well BinaryWriter dataWriter = writer; bool isCompressed = (header.Signature[0]=='C'); if (isCompressed) { // SharpZipLib makes it easy for us, simply chain a Deflater into the stream DeflaterOutputStream def = new DeflaterOutputStream(baseStream); dataWriter = new BinaryWriter(def); } // writer header data, always uncompressed writer.Write(header.Signature); writer.Write(swf.Version); writer.Write(swf.ByteCount); writer.Flush(); // write header data pt.2, using either original stream or deflater stream dataWriter.Write(header.Rect); dataWriter.Write(header.Fps); dataWriter.Write(header.Frames); // write tag data foreach (BaseTag tag in swf) { dataWriter.Write(tag.Data); } // flush + close dataWriter.Flush(); dataWriter.Close(); }
private static BaseTag FindObject(Swf swf, ushort id) { foreach (BaseTag tag in swf) { if (tag is DefineSpriteTag && (tag as DefineSpriteTag).Id == id) return tag; else if (tag is DefineBitsTag && (tag as DefineBitsTag).Id == id) return tag; } return null; }
public TagsRemover(Swf swfObject) { swf = swfObject; }