Ejemplo n.º 1
0
 public static void WriteMatrix(this ISwfStreamWriter writer, ref SwfMatrix matrix)
 {
     var hasScale = matrix.HasScale;
     writer.WriteBit(hasScale);
     if (hasScale) {
         var sx = (int)(matrix.ScaleX * 65536.0);
         var sy = (int)(matrix.ScaleY * 65536.0);
         var scaleBits = new SignedBitsCount(sx, sy).GetBits();
         if (scaleBits < 1) scaleBits = 1;
         writer.WriteUnsignedBits(scaleBits, 5);
         writer.WriteFixedPoint16(matrix.ScaleX, scaleBits);
         writer.WriteFixedPoint16(matrix.ScaleY, scaleBits);
     }
     var hasRotate = matrix.HasRotate;
     writer.WriteBit(hasRotate);
     if (hasRotate) {
         var rx = (int)(matrix.RotateSkew0 * 65536.0);
         var ry = (int)(matrix.RotateSkew1 * 65536.0);
         var rotateBits = new SignedBitsCount(rx, ry).GetBits();
         if (rotateBits < 1) rotateBits = 1;
         writer.WriteUnsignedBits(rotateBits, 5);
         writer.WriteFixedPoint16(matrix.RotateSkew0, rotateBits);
         writer.WriteFixedPoint16(matrix.RotateSkew1, rotateBits);
     }
     var translateBits = new SignedBitsCount(matrix.TranslateX, matrix.TranslateY).GetBits();
     writer.WriteUnsignedBits(translateBits, 5);
     writer.WriteSignedBits(matrix.TranslateX, translateBits);
     writer.WriteSignedBits(matrix.TranslateY, translateBits);
     writer.FlushBits();
 }
Ejemplo n.º 2
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();
 }
Ejemplo n.º 3
0
 public static void WriteColorTransformRGB(this ISwfStreamWriter writer, ref ColorTransformRGB tranform)
 {
     var bitsCounter = new SignedBitsCount(0);
     if (tranform.HasAddTerms) {
         bitsCounter.AddValue(tranform.RedAddTerm);
         bitsCounter.AddValue(tranform.GreenAddTerm);
         bitsCounter.AddValue(tranform.BlueAddTerm);
     }
     if (tranform.HasMultTerms) {
         bitsCounter.AddValue(tranform.RedMultTerm);
         bitsCounter.AddValue(tranform.GreenMultTerm);
         bitsCounter.AddValue(tranform.BlueMultTerm);
     }
     writer.WriteBit(tranform.HasAddTerms);
     writer.WriteBit(tranform.HasMultTerms);
     var bits = bitsCounter.GetBits();
     writer.WriteUnsignedBits(bits, 4);
     if (tranform.HasMultTerms) {
         writer.WriteSignedBits(tranform.RedMultTerm, bits);
         writer.WriteSignedBits(tranform.GreenMultTerm, bits);
         writer.WriteSignedBits(tranform.BlueMultTerm, bits);
     }
     if (tranform.HasAddTerms) {
         writer.WriteSignedBits(tranform.RedAddTerm, bits);
         writer.WriteSignedBits(tranform.GreenAddTerm, bits);
         writer.WriteSignedBits(tranform.BlueAddTerm, bits);
     }
     writer.FlushBits();
 }
Ejemplo n.º 4
0
 public void ReadFixedPoint16FromBitsTest()
 {
     var mem = new MemoryStream();
     var writer = new SwfStreamWriter(mem);
     const int val = 0x03aa4523;
     const ushort hi = val >> 16;
     const ushort low = val & 0xffff;
     const double expected = hi + low / 65536.0;
     var bits = new SignedBitsCount(hi).GetBits();
     writer.WriteUnsignedBits(hi, bits);
     writer.WriteUnsignedBits(low, 16);
     writer.FlushBits();
     mem.Seek(0, SeekOrigin.Begin);
     var reader = new SwfStreamReader(mem);
     double actual = reader.ReadFixedPoint16(bits + 16);
     Assert.AreEqual(expected, actual);
 }
Ejemplo n.º 5
0
 public void ReadNegativeFixedPoint16FromBitsTest()
 {
     var mem = new MemoryStream();
     var writer = new SwfStreamWriter(mem);
     const int val = -81920;
     var bits = new SignedBitsCount(val).GetBits();
     writer.WriteSignedBits(val, bits);
     writer.FlushBits();
     mem.Seek(0, SeekOrigin.Begin);
     var reader = new SwfStreamReader(mem);
     double actual = reader.ReadFixedPoint16(bits);
     Assert.AreEqual(-1.25, actual);
 }
Ejemplo n.º 6
0
 public void WriteNegativeFixedPoint16FromBitsTest()
 {
     var mem = new MemoryStream();
     var writer = new SwfStreamWriter(mem);
     var bits = new SignedBitsCount(-81920).GetBits();
     writer.WriteFixedPoint16(-1.25, bits);
     writer.FlushBits();
     mem.Seek(0, SeekOrigin.Begin);
     var reader = new SwfStreamReader(mem);
     int actual = reader.ReadSignedBits(bits);
     Assert.AreEqual(-81920, actual);
 }