Exemple #1
0
        public void ReadSwfHeaderTest()
        {
            var mem    = new MemoryStream();
            var writer = new SwfStreamWriter(mem);
            var rect   = new SwfRect {
                XMin = 0x004,
                XMax = 0x48f,
                YMin = 0x008,
                YMax = 0x0ee
            };

            writer.WriteRect(ref rect);
            writer.WriteFixedPoint8(23.75);
            writer.WriteUInt16(20);
            mem.Seek(0, SeekOrigin.Begin);

            var reader = new SwfStreamReader(mem);
            var hdr    = reader.ReadSwfHeader();

            Assert.AreEqual(rect, hdr.FrameSize);
            Assert.AreEqual(23.75, hdr.FrameRate);
            Assert.AreEqual(20, hdr.FrameCount);

            Assert.AreEqual(mem.Length, mem.Position, "Should reach end of the stream");
        }
Exemple #2
0
 public static void AreEqual(SwfRect actual, SwfRect expected, string message)
 {
     Assert.AreEqual(expected.XMin, actual.XMin, message + ": XMin");
     Assert.AreEqual(expected.XMax, actual.XMax, message + ": XMax");
     Assert.AreEqual(expected.YMin, actual.YMin, message + ": YMin");
     Assert.AreEqual(expected.YMax, actual.YMax, message + ": YMax");
 }
Exemple #3
0
 public static XElement ToXml(SwfRect rect)
 {
     return(new XElement("Rectangle",
                         new XAttribute("left", rect.XMin),
                         new XAttribute("right", rect.XMax),
                         new XAttribute("top", rect.YMin),
                         new XAttribute("bottom", rect.YMax)));
 }
Exemple #4
0
        public static DefineShape2Tag Create(SwfStreamReader reader)
        {
            var tag = new DefineShape2Tag();

            tag.ShapeId     = reader.ReadUInt16();
            tag.ShapeBounds = SwfRect.Read(reader);
            tag.Shapes      = SwfShapesWithStyle.Read(reader, SwfShapesWithStyle.ShapeStyleType.Shape2);
            return(tag);
        }
Exemple #5
0
 public static SwfLongHeader Read(SwfStreamReader reader)
 {
     return(new SwfLongHeader {
         ShortHeader = SwfShortHeader.Read(reader),
         FrameSize = SwfRect.Read(reader),
         FrameRate = reader.ReadFixedPoint_8_8(),
         FrameCount = reader.ReadUInt16()
     });
 }
Exemple #6
0
        public static void ReadRect(this ISwfStreamReader reader, out SwfRect rect)
        {
            var bits = reader.ReadUnsignedBits(5);

            rect.XMin = reader.ReadSignedBits(bits);
            rect.XMax = reader.ReadSignedBits(bits);
            rect.YMin = reader.ReadSignedBits(bits);
            rect.YMax = reader.ReadSignedBits(bits);
            reader.AlignToByte();
        }
Exemple #7
0
        public void WriteRectTest()
        {
            var rect = new SwfRect {
                XMin = 0,
                XMax = 11000,
                YMin = 0,
                YMax = 8000
            };
            var mem    = new MemoryStream();
            var writer = new SwfStreamWriter(mem);

            writer.WriteRect(ref rect);
            Assert.AreEqual(new byte[] { 0x78, 0x00, 0x05, 0x5f, 0x00, 0x00, 0x0f, 0xa0, 0x00 }, mem.ToArray());
        }
Exemple #8
0
        public void ReadRectTest()
        {
            var etalon = new SwfRect {
                XMin = 0,
                XMax = 11000,
                YMin = 0,
                YMax = 8000
            };
            var     mem    = new MemoryStream(new byte[] { 0x78, 0x00, 0x05, 0x5f, 0x00, 0x00, 0x0f, 0xa0, 0x00 });
            var     reader = new SwfStreamReader(mem);
            SwfRect rect   = reader.ReadRect();

            Assert.IsTrue(AreEqual(etalon, rect));
            Assert.AreEqual(mem.Length, mem.Position);
        }
Exemple #9
0
        /// <summary>
        /// Writes rectangle to the writer.
        /// </summary>
        /// <param name="writer">Writer to which to write rectangle.</param>
        /// <param name="rect">Rectangle to be written.</param>
        public static void WriteRect(this ISwfStreamWriter writer, ref SwfRect rect)
        {
            var btCount = new SignedBitsCount(rect.XMin, rect.XMax, rect.YMin, rect.YMax);
            var bits    = btCount.GetBits();

            if (bits < 1)
            {
                bits = 1;
            }
            writer.WriteUnsignedBits(bits, 5);
            writer.WriteSignedBits(rect.XMin, bits);
            writer.WriteSignedBits(rect.XMax, bits);
            writer.WriteSignedBits(rect.YMin, bits);
            writer.WriteSignedBits(rect.YMax, bits);
            writer.FlushBits();
        }
Exemple #10
0
        public void WriteRectTest2()
        {
            var rect = new SwfRect {
                XMin = 0x004,
                XMax = 0x48f,
                YMin = 0x008,
                YMax = 0x0ee
            };
            var mem    = new MemoryStream();
            var writer = new SwfStreamWriter(mem);

            writer.WriteRect(ref rect);
            writer.FlushBits();
            CheckBits(mem, "01100", "0000.00000100", "0100.10001111", "0000.00001000", "0000.11101110");
            mem.Seek(0, SeekOrigin.Begin);
        }
Exemple #11
0
        public void ReadRectTest2()
        {
            var etalon = new SwfRect {
                XMin = 0x004,
                XMax = 0x48f,
                YMin = 0x008,
                YMax = 0x0ee
            };
            var mem = new MemoryStream();

            WriteBits(mem, "01100", "0000.00000100", "0100.10001111", "0000.00001000", "0000.11101110");
            var     reader = new SwfStreamReader(mem);
            SwfRect rect   = reader.ReadRect();

            Assert.IsTrue(AreEqual(etalon, rect));
            Assert.AreEqual(mem.Length, mem.Position);
        }
Exemple #12
0
        public void ReadRectMustBeByteAlignedTest()
        {
            var etalon = new SwfRect {
                XMin = 0,
                XMax = 11000,
                YMin = 0,
                YMax = 8000
            };
            var     mem    = new MemoryStream(new byte[] { 0x78, 0x00, 0x05, 0x5f, 0x00, 0x00, 0x0f, 0xa0, 0x00, 0xb3 });
            var     reader = new SwfStreamReader(mem);
            SwfRect rect   = reader.ReadRect();

            Assert.IsTrue(AreEqual(etalon, rect));
            var tail = reader.ReadUnsignedBits(8);

            Assert.AreEqual(0xb3, tail);
            Assert.AreEqual(mem.Length, mem.Position);
        }
Exemple #13
0
 private static bool AreEqual(SwfRect a, SwfRect b)
 {
     if (a.XMin != b.XMin)
     {
         return(false);
     }
     if (a.XMax != b.XMax)
     {
         return(false);
     }
     if (a.YMin != b.YMin)
     {
         return(false);
     }
     if (a.YMax != b.YMax)
     {
         return(false);
     }
     return(true);
 }
Exemple #14
0
 /// <summary>
 /// Writes rectangle to the writer.
 /// </summary>
 /// <param name="writer">Writer to which to write rectangle.</param>
 /// <param name="rect">Rectangle to be written.</param>
 public static void WriteRect(this ISwfStreamWriter writer, SwfRect rect)
 {
     writer.WriteRect(ref rect);
 }