object IActionVisitor <ISwfStreamWriter, object> .Visit(ActionDefineFunction2 action, ISwfStreamWriter writer) { writer.WriteString(action.Name ?? ""); writer.WriteUInt16((ushort)action.Parameters.Count); writer.WriteByte(action.RegisterCount); writer.WriteBit(action.PreloadParent); writer.WriteBit(action.PreloadRoot); writer.WriteBit(action.SuppressSuper); writer.WriteBit(action.PreloadSuper); writer.WriteBit(action.SuppressArguments); writer.WriteBit(action.PreloadArguments); writer.WriteBit(action.SuppressThis); writer.WriteBit(action.PreloadThis); writer.WriteUnsignedBits(action.Reserved, 7); writer.WriteBit(action.PreloadGlobal); foreach (var arg in action.Parameters) { writer.WriteByte(arg.Register); writer.WriteString(arg.Name); } var mem = new MemoryStream(); var subWriter = new ActionWriter(new SwfStreamWriter(mem)); foreach (var subAction in action.Actions) { subWriter.WriteAction(subAction); } writer.WriteUInt16((ushort)mem.Length); return(mem.ToArray()); }
private static byte[] GetBody(IEnumerable <ActionBase> actions) { var mem = new MemoryStream(); var aw = new ActionWriter(new SwfStreamWriter(mem)); foreach (var action in actions) { aw.WriteAction(action); } return(mem.ToArray()); }
object IActionVisitor <ISwfStreamWriter, object> .Visit(ActionWith action, ISwfStreamWriter writer) { var awmem = new MemoryStream(); var aw = new ActionWriter(new SwfStreamWriter(awmem)); foreach (var subaction in action.Actions) { aw.WriteAction(subaction); } writer.WriteUInt16((ushort)awmem.Length); return(awmem.ToArray()); }
object IActionVisitor <ISwfStreamWriter, object> .Visit(ActionDefineFunction action, ISwfStreamWriter writer) { writer.WriteString(action.Name ?? ""); writer.WriteUInt16((ushort)action.Args.Count); foreach (var arg in action.Args) { writer.WriteString(arg); } var awmem = new MemoryStream(); var aw = new ActionWriter(new SwfStreamWriter(awmem)); foreach (var subaction in action.Actions) { aw.WriteAction(subaction); } writer.WriteUInt16((ushort)awmem.Length); return(awmem.ToArray()); }