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"); }
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)); }
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(); }
/// <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(); }
public void WriteRectMustbeByteAlignedTest() { 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); writer.WriteUnsignedBits(0xb3, 8); Assert.AreEqual(new byte[] { 0x78, 0x00, 0x05, 0x5f, 0x00, 0x00, 0x0f, 0xa0, 0x00, 0xb3 }, mem.ToArray()); }
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); }
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); }
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); }
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"); }
/// <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); }
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); }
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; }