Beispiel #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();
 }
Beispiel #2
0
        public static void AreEqual(SwfMatrix expected, SwfMatrix actual, string message)
        {
            Assert.AreEqual(expected.HasScale, actual.HasScale, message + ": HasScale");
            Assert.AreEqual(expected.HasRotate, actual.HasRotate, message + ": HasRotate");

            Assert.AreEqual(expected.ScaleX, actual.ScaleX, message + ": ScaleX");
            Assert.AreEqual(expected.ScaleY, actual.ScaleY, message + ": ScaleY");
            Assert.AreEqual(expected.RotateSkew0, actual.RotateSkew0, message + ": RotateSkew0");
            Assert.AreEqual(expected.RotateSkew1, actual.RotateSkew1, message + ": RotateSkew1");
            Assert.AreEqual(expected.TranslateX, actual.TranslateX, message + ": TranslateX");
            Assert.AreEqual(expected.TranslateY, actual.TranslateY, message + ": TranslateY");
        }
Beispiel #3
0
 public static XElement ToXml(SwfMatrix matrix)
 {
     var res = new XElement(TAG_NAME,
          new XAttribute("transX", matrix.TranslateX),
          new XAttribute("transY", matrix.TranslateY));
     if (matrix.HasScale) {
         res.Add(new XAttribute("scaleX", matrix.ScaleX));
         res.Add(new XAttribute("scaleY", matrix.ScaleY));
     }
     if (matrix.HasRotate) {
         res.Add(new XAttribute("skewX", matrix.RotateSkew0));
         res.Add(new XAttribute("skewY", matrix.RotateSkew1));
     }
     return res;
 }
Beispiel #4
0
 public void WriteMatrixFromBitsTest()
 {
     var mem = new MemoryStream();
     var matrix = new SwfMatrix {
         ScaleX = 2.5,
         ScaleY = 1.75,
         RotateSkew0 = 3.25,
         RotateSkew1 = 0.5,
         TranslateX = 16,
         TranslateY = 24
     };
     var writer = new SwfStreamWriter(mem);
     writer.WriteMatrix(ref matrix);
     CheckBits(mem,
         "1", "10011", "010.10000000.00000000", "001.11000000.00000000",
         "1", "10011", "011.01000000.00000000", "000.10000000.00000000",
         "00110", "010000", "011000");
 }
Beispiel #5
0
        public static SwfMatrix FromXml(XElement xMatrix)
        {
            var xMoveX = xMatrix.RequiredIntAttribute("transX");
            var xMoveY = xMatrix.RequiredIntAttribute("transY");

            var xScaleX = xMatrix.Attribute("scaleX");
            var xScaleY = xMatrix.Attribute("scaleY");

            var xSkewX = xMatrix.Attribute("skewX");
            var xSkewY = xMatrix.Attribute("skewY");

            var matrix = new SwfMatrix {
                TranslateX = xMoveX,
                TranslateY = xMoveY,
                ScaleX = xScaleX != null ? CommonFormatter.ParseDouble(xScaleX.Value) : 1,
                ScaleY = xScaleY != null ? CommonFormatter.ParseDouble(xScaleY.Value) : 1,
                RotateSkew0 = xSkewX != null ? CommonFormatter.ParseDouble(xSkewX.Value) : 0,
                RotateSkew1 = xSkewY != null ? CommonFormatter.ParseDouble(xSkewY.Value) : 0,
            };

            return matrix;
        }
 private static void AddMatrix(XElement xml, SwfMatrix matrix)
 {
     xml.Add(new XElement("matrix", XMatrix.ToXml(matrix)));
 }
Beispiel #7
0
 public static void WriteMatrix(this ISwfStreamWriter writer, SwfMatrix matrix)
 {
     writer.WriteMatrix(ref matrix);
 }