public void ReadMatrixTest() { var file = new SwfFile(); file.FileInfo.Version = 10; var tags = GetTagBinariesFromSwfResource("Matrix-compiled.swf") .Where(item => item.Type == SwfTagType.PlaceObject2); var tagData = tags.First(); var ser = new SwfTagDeserializer(file); var tag = ser.ReadTag <PlaceObject2Tag>(tagData); Assert.AreEqual(20.5, tag.Matrix.ScaleX); Assert.AreEqual(17.25, tag.Matrix.ScaleY); tagData = tags.Skip(1).First(); tag = ser.ReadTag <PlaceObject2Tag>(tagData); Assert.AreEqual(0.5, tag.Matrix.ScaleX); Assert.AreEqual(1.25, tag.Matrix.ScaleY); tagData = tags.Skip(2).First(); tag = ser.ReadTag <PlaceObject2Tag>(tagData); Assert.AreEqual(0.5, tag.Matrix.ScaleX); Assert.AreEqual(-1.25, tag.Matrix.ScaleY); }
public void ReadTest() { var tagData = ReadEmbeddedTagData("DefineFont3Tag.bin", SwfTagType.DefineFont3); var tagReader = new SwfTagDeserializer(new SwfFile()); var tag = tagReader.ReadTag <DefineFont3Tag>(tagData); Assert.IsNotNull(tag); Assert.AreEqual(17, tag.FontID); Assert.AreEqual("BlacklightD\0", tag.FontName); Assert.AreEqual(24, tag.Glyphs.Count); var secondGlyph = tag.Glyphs[1]; Assert.AreEqual(46, secondGlyph.Code); Assert.AreEqual(12, secondGlyph.Records.Count); var lastShape = tag.Glyphs.Last(); Assert.AreEqual(120, lastShape.Code); Assert.AreEqual(43, lastShape.Records.Count); var tagWriter = new SwfTagSerializer(new SwfFile()); var writtenTagData = tagWriter.GetTagData(tag); Assert.AreEqual(tagData.Data, writtenTagData.Data); Assert.IsNull(tag.RestData); }
protected T ReadTag <T>(string resourceName, string tagHash) where T : SwfTagBase { using (var stream = OpenEmbeddedResource(resourceName)) { var file = new SwfFile(); var reader = new SwfStreamReader(stream); file.FileInfo = reader.ReadSwfFileInfo(); reader = GetSwfStreamReader(file.FileInfo, stream); file.Header = reader.ReadSwfHeader(); while (!reader.IsEOF) { var tagData = reader.ReadTagData(); var hash = GetTagHash(tagData); if (tagHash == hash) { var tagReader = new SwfTagDeserializer(file); //using (var dump = File.Open(@"D:\temp\1.bin", FileMode.Create)) { // dump.Write(tagData.Data, 0, tagData.Data.Length); // dump.Flush(); //} return(tagReader.ReadTag <T>(tagData)); } } } return(null); }
public void Sample2Test() { const string source = @"D:\Sergey\swf\first.swf"; var secondTags = IterateTags(Cycle(source)).ToList(); var firstFile = File.Open(source, FileMode.Open); var firstTags = IterateTags(firstFile).ToList(); var deserializer = new SwfTagDeserializer(new SwfFile { FileInfo = { Version = 10 } }); for (var i = 0; i < firstTags.Count; i++) { var firstTag = firstTags[i]; var secondTag = secondTags[i]; var firstType = firstTag.Type; var secondType = secondTag.Type; if (firstType == SwfTagType.DefineSprite) { continue; //For now } if (firstType != secondType) { throw new InvalidOperationException(); } var dual = new DualSwfStreamReader(new MemoryStream(firstTag.Data), new MemoryStream(secondTag.Data)); deserializer.ReadTag(firstType, dual); } }
protected void ReadTag(SwfTagData tagData) { try { var tagReader = new SwfTagDeserializer(new SwfFile()).ReadTag(tagData); } catch { } }
public void ReadTest() { var mem = new MemoryStream(_etalon); var tagReader = new SwfTagDeserializer(new SwfFile()); var tagData = new SwfTagData { Type = SwfTagType.PlaceObject, Data = mem.ToArray() }; var res = tagReader.ReadTag <PlaceObjectTag>(tagData); Assert.IsNotNull(res); Assert.AreEqual(0x2010, res.CharacterID); Assert.AreEqual(0x4030, res.Depth); Assert.IsFalse(res.Matrix.HasScale); Assert.IsFalse(res.Matrix.HasRotate); Assert.AreEqual(0, res.Matrix.TranslateX); Assert.AreEqual(0, res.Matrix.TranslateY); Assert.IsTrue(res.ColorTransform.HasValue); Assert.IsFalse(res.ColorTransform.Value.HasAddTerms); Assert.IsFalse(res.ColorTransform.Value.HasMultTerms); Assert.IsNull(res.RestData); }
public void Sample1Test() { const string path = "Sample - 1.swf"; var file = ReadSwfFile(path); var mem = new MemoryStream(); file.WriteTo(mem); mem.Seek(0, SeekOrigin.Begin); var firstTags = IterateTags(OpenEmbeddedResource(path)).ToList(); var secondTags = IterateTags(mem).ToList(); var deserializer = new SwfTagDeserializer(file); for (var i = 0; i < firstTags.Count; i++) { var firstTag = firstTags[i]; var secondTag = secondTags[i]; var firstType = firstTag.Type; var secondType = secondTag.Type; if (firstType != secondType) { throw new InvalidOperationException(); } //if (firstType == SwfTagType.DefineSprite) continue; //For now var dual = new DualSwfStreamReader(new MemoryStream(firstTag.Data), new MemoryStream(secondTag.Data)); //var dual = new SwfStreamReader(new MemoryStream(firstTag.Data)); deserializer.ReadTag(firstType, dual); } }
public void ReadTest() { var tagData = ReadEmbeddedTagData("DefineFont3Tag.bin", SwfTagType.DefineFont3); var tagReader = new SwfTagDeserializer(new SwfFile()); var tag = tagReader.ReadTag<DefineFont3Tag>(tagData); Assert.IsNotNull(tag); Assert.AreEqual(17, tag.FontID); Assert.AreEqual("BlacklightD\0", tag.FontName); Assert.AreEqual(24, tag.Glyphs.Count); var secondGlyph = tag.Glyphs[1]; Assert.AreEqual(46, secondGlyph.Code); Assert.AreEqual(12, secondGlyph.Records.Count); var lastShape = tag.Glyphs.Last(); Assert.AreEqual(120, lastShape.Code); Assert.AreEqual(43, lastShape.Records.Count); var tagWriter = new SwfTagSerializer(new SwfFile()); var writtenTagData = tagWriter.GetTagData(tag); Assert.AreEqual(tagData.Data, writtenTagData.Data); Assert.IsNull(tag.RestData); }
public void ReadTest() { var mem = new MemoryStream(_etalon0); var tagReader = new SwfTagDeserializer(new SwfFile()); var tagData = new SwfTagData { Type = SwfTagType.DefineShape, Data = mem.ToArray() }; var res = tagReader.ReadTag<DefineShapeTag>(tagData); AssertTag.AreEqual(GetDefineShapeTag0(), res); }
public void ReadTest() { var mem = new MemoryStream(_etalon); var tagReader = new SwfTagDeserializer(new SwfFile()); var tagData = new SwfTagData { Type = SwfTagType.FileAttributes, Data = mem.ToArray() }; var res = tagReader.ReadTag<FileAttributesTag>(tagData); Assert.IsNotNull(res); AssertTag.AreEqual(GetFileAttributesTag(), res); }
public void ReadTest() { var mem = new MemoryStream(_etalon); var tagReader = new SwfTagDeserializer(new SwfFile()); var tagData = new SwfTagData { Type = SwfTagType.SetBackgroundColor, Data = mem.ToArray() }; var res = tagReader.ReadTag<SetBackgroundColorTag>(tagData); Assert.IsNotNull(res); AssertTag.AreEqual(GetSetBackgroundTag(), res); }
public void Read2Test() { var mem = new MemoryStream(_etalon2); var tagReader = new SwfTagDeserializer(new SwfFile()); var tagData = new SwfTagData { Type = SwfTagType.DefineShape, Data = mem.ToArray() }; var res = tagReader.ReadTag <DefineShapeTag>(tagData); AssertTag.AreEqual(GetDefineShapeTag2(), res); }
public void ReadTest() { var mem = new MemoryStream(_etalon); var tagReader = new SwfTagDeserializer(new SwfFile()); var tagData = new SwfTagData { Type = SwfTagType.End, Data = mem.ToArray() }; var res = tagReader.ReadTag<EndTag>(tagData); Assert.IsNotNull(res); Assert.IsNull(res.RestData); }
public void ReadTest() { var mem = new MemoryStream(_etalon); var tagReader = new SwfTagDeserializer(new SwfFile()); var tagData = new SwfTagData { Type = SwfTagType.Metadata, Data = mem.ToArray() }; var res = tagReader.ReadTag <MetadataTag>(tagData); Assert.IsNotNull(res); AssertTag.AreEqual(GetMetadataTag(), res); }
public void ReadTest() { var mem = new MemoryStream(_etalon); var tagReader = new SwfTagDeserializer(new SwfFile()); var tagData = new SwfTagData { Type = SwfTagType.ShowFrame, Data = mem.ToArray() }; var res = tagReader.ReadTag <ShowFrameTag>(tagData); Assert.IsNotNull(res); Assert.IsNull(res.RestData); }
public void ReadTest() { var mem = new MemoryStream(_etalon); var tagReader = new SwfTagDeserializer(new SwfFile()); var tagData = new SwfTagData { Type = SwfTagType.RemoveObject2, Data = mem.ToArray() }; var res = tagReader.ReadTag<RemoveObject2Tag>(tagData); Assert.IsNotNull(res); Assert.AreEqual(0x4030, res.Depth); Assert.IsNull(res.RestData); }
public void ReadTest() { var mem = new MemoryStream(_etalon); var tagReader = new SwfTagDeserializer(new SwfFile()); var tagData = new SwfTagData { Type = SwfTagType.RemoveObject2, Data = mem.ToArray() }; var res = tagReader.ReadTag <RemoveObject2Tag>(tagData); Assert.IsNotNull(res); Assert.AreEqual(0x4030, res.Depth); Assert.IsNull(res.RestData); }
public void ReadTest() { var mem = new MemoryStream(_etalon); var tagReader = new SwfTagDeserializer(new SwfFile()); var tagData = new SwfTagData { Type = SwfTagType.PlaceObject, Data = mem.ToArray() }; var res = tagReader.ReadTag<PlaceObjectTag>(tagData); Assert.IsNotNull(res); Assert.AreEqual(0x2010, res.CharacterID); Assert.AreEqual(0x4030, res.Depth); Assert.IsFalse(res.Matrix.HasScale); Assert.IsFalse(res.Matrix.HasRotate); Assert.AreEqual(0, res.Matrix.TranslateX); Assert.AreEqual(0, res.Matrix.TranslateY); Assert.IsTrue(res.ColorTransform.HasValue); Assert.IsFalse(res.ColorTransform.Value.HasAddTerms); Assert.IsFalse(res.ColorTransform.Value.HasMultTerms); Assert.IsNull(res.RestData); }
public void Sample1Test() { const string path = "Sample - 1.swf"; var file = ReadSwfFile(path); var mem = new MemoryStream(); file.WriteTo(mem); mem.Seek(0, SeekOrigin.Begin); var firstTags = IterateTags(OpenEmbeddedResource(path)).ToList(); var secondTags = IterateTags(mem).ToList(); var deserializer = new SwfTagDeserializer(file); for (var i = 0; i < firstTags.Count; i++) { var firstTag = firstTags[i]; var secondTag = secondTags[i]; var firstType = firstTag.Type; var secondType = secondTag.Type; if (firstType != secondType) throw new InvalidOperationException(); //if (firstType == SwfTagType.DefineSprite) continue; //For now var dual = new DualSwfStreamReader(new MemoryStream(firstTag.Data), new MemoryStream(secondTag.Data)); //var dual = new SwfStreamReader(new MemoryStream(firstTag.Data)); deserializer.ReadTag(firstType, dual); } }
public void ReadMatrixTest() { var file = new SwfFile(); file.FileInfo.Version = 10; var tags = GetTagBinariesFromSwfResource("Matrix-compiled.swf") .Where(item => item.Type == SwfTagType.PlaceObject2); var tagData = tags.First(); var ser = new SwfTagDeserializer(file); var tag = ser.ReadTag<PlaceObject2Tag>(tagData); Assert.AreEqual(20.5, tag.Matrix.ScaleX); Assert.AreEqual(17.25, tag.Matrix.ScaleY); tagData = tags.Skip(1).First(); tag = ser.ReadTag<PlaceObject2Tag>(tagData); Assert.AreEqual(0.5, tag.Matrix.ScaleX); Assert.AreEqual(1.25, tag.Matrix.ScaleY); tagData = tags.Skip(2).First(); tag = ser.ReadTag<PlaceObject2Tag>(tagData); Assert.AreEqual(0.5, tag.Matrix.ScaleX); Assert.AreEqual(-1.25, tag.Matrix.ScaleY); }
private static void ReadTags(SwfFile file, ISwfStreamReader reader) { while (!reader.IsEOF) { var ser = new SwfTagDeserializer(file); var tagData = reader.ReadTagData(); SwfTagBase tag = ser.ReadTag(tagData); if (tag != null) file.Tags.Add(tag); else throw new InvalidOperationException("Tag can't be null. Loss of data possible"); } }