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(); 
        }
Beispiel #4
0
 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;
 }