public List <byte[]> GetRawAbcFiles() { var list = new List <byte[]>(); int n = Tags.Count; for (int i = 0; i < n; ++i) { var tag = Tags[i]; if (tag.TagCode == SwfTagCode.DoAbc) { var data = tag.GetData(); list.Add(data); } else if (tag.TagCode == SwfTagCode.DoAbc2) { var data = tag.GetData(); using (var reader = new SwfReader(data)) { reader.FileVersion = Version; reader.ReadUInt32(); //flags reader.ReadString(); //frame name var abc = reader.ReadToEnd(); list.Add(abc); } } } return(list); }
public static SwfEventFlags ReadFlags(SwfReader reader) { int ver = reader.FileVersion; uint v = ver >= 6 ? reader.ReadUInt32() : reader.ReadUInt16(); return(ToFlags(v, ver)); }
//WARNING: Reads without event flags /// <summary> /// /// </summary> /// <param name="reader"></param> public void Read(SwfReader reader) { uint len = reader.ReadUInt32(); if ((Flags & SwfEventFlags.KeyPress) != 0) { KeyCode = reader.ReadUInt8(); } //TODO: use len _actions.Read(reader); }
/// <summary> /// Loads flash movie from specified stream. /// </summary> /// <param name="input">input stream to load.</param> /// <param name="options">options to decode tags.</param> public void Load(Stream input, SwfTagDecodeOptions options) { var reader = new SwfReader(input) { TagDecodeOptions = options }; //File Header var sig = reader.ReadASCII(3); // "FWS" or "CWS" for ZLIB compressed files (v6.0 or later) if (sig != "FWS" && sig != "CWS" && sig != "ZWS") { throw new BadImageFormatException("Not a valid SWF (Flash) file signature"); } _version = reader.ReadUInt8(); // file version reader.FileVersion = _version; uint fileLength = reader.ReadUInt32(); // file length //Debug.WriteLine(string.Format("SWF File Length = {0}", fileLength)); // If the file is compressed, this is where the ZLIB decompression ("inflate") begins if (sig[0] == 'C') { reader.Stream = Zip.Uncompress(input); } else if (sig[0] == 'Z') // LZMA since v13 { // reader.Stream = new MemoryStream(Compression.Lzma.Decompress(input)); throw new NotImplementedException(); } //Movie Header var frameSize = reader.ReadRect(); _frameSize.Width = frameSize.Width.FromTwips(); _frameSize.Height = frameSize.Height.FromTwips(); _frameRate = reader.ReadFixed16(); _frameCount = reader.ReadUInt16(); //Movie Content _tags.Read(reader); }
public void Read(SwfReader reader) { reader.ReadUInt16(); //reserved AllEventFlags = SwfEvent.ReadFlags(reader); int ver = reader.FileVersion; while (true) { uint flags = ver >= 6 ? reader.ReadUInt32() : reader.ReadUInt16(); if (flags == 0) { break; } var e = new SwfEvent { Flags = SwfEvent.ToFlags(flags, ver) }; e.Read(reader); } }