Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
 protected void ReadTag(SwfTagData tagData)
 {
     try {
         var tagReader = new SwfTagDeserializer(new SwfFile()).ReadTag(tagData);
     } catch {
     }
 }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
            }
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
 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);
 }
Exemplo n.º 10
0
 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);
 }
Exemplo n.º 11
0
 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);
 }
Exemplo n.º 12
0
        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);
        }
Exemplo n.º 13
0
        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);
        }
Exemplo n.º 14
0
        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);
        }
Exemplo n.º 15
0
        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);
        }
Exemplo n.º 16
0
        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);
        }
Exemplo n.º 17
0
        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);
        }
Exemplo n.º 18
0
        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);
        }
Exemplo n.º 19
0
        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);
            }
        }
Exemplo n.º 20
0
        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);
        }
Exemplo n.º 21
0
        protected void ReadTag(SwfTagData tagData)
        {
            try {
                var tagReader = new SwfTagDeserializer(new SwfFile()).ReadTag(tagData);
            } catch {

            }
        }
Exemplo n.º 22
0
 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");
     }
 }