Esempio n. 1
0
File: Shape.cs Progetto: Daoting/dt
        /// <summary>
        /// Transforms the specified point.
        /// </summary>
        /// <param name="point">The point</param>
        /// <param name="centerX">The center point X</param>
        /// <param name="centerY">The center point Y</param>
        /// <param name="offsetX">The offset point X</param>
        /// <param name="offsetY">The offset point Y</param>
        /// <param name="rotationAngle">The rotation angle</param>
        /// <returns>The transformed point</returns>
        internal static Windows.Foundation.Point Transform(Windows.Foundation.Point point, double centerX, double centerY, double offsetX, double offsetY, double rotationAngle)
        {
            MatrixMock mock = new MatrixMock();

            mock.RotateAt(rotationAngle, offsetX + centerX, offsetY + centerY);
            return(mock.Transform(point));
        }
Esempio n. 2
0
        static MatrixMock CreateIdentity()
        {
            MatrixMock mock = new MatrixMock();

            mock.SetMatrix(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, MatrixTypesMock.TRANSFORM_IS_IDENTITY);
            return(mock);
        }
Esempio n. 3
0
        internal static MatrixMock CreateTranslation(double offsetX, double offsetY)
        {
            MatrixMock mock = new MatrixMock();

            mock.SetMatrix(1.0, 0.0, 0.0, 1.0, offsetX, offsetY, MatrixTypesMock.TRANSFORM_IS_TRANSLATION);
            return(mock);
        }
Esempio n. 4
0
        internal static MatrixMock CreateSkewRadians(double skewX, double skewY)
        {
            MatrixMock mock = new MatrixMock();

            mock.SetMatrix(1.0, Math.Tan(skewY), Math.Tan(skewX), 1.0, 0.0, 0.0, MatrixTypesMock.TRANSFORM_IS_UNKNOWN);
            return(mock);
        }
Esempio n. 5
0
        internal static MatrixMock CreateScaling(double scaleX, double scaleY)
        {
            MatrixMock mock = new MatrixMock();

            mock.SetMatrix(scaleX, 0.0, 0.0, scaleY, 0.0, 0.0, MatrixTypesMock.TRANSFORM_IS_SCALING);
            return(mock);
        }
Esempio n. 6
0
        internal static MatrixMock CreateScaling(double scaleX, double scaleY, double centerX, double centerY)
        {
            MatrixMock mock = new MatrixMock();

            mock.SetMatrix(scaleX, 0.0, 0.0, scaleY, centerX - (scaleX * centerX), centerY - (scaleY * centerY), MatrixTypesMock.TRANSFORM_IS_SCALING | MatrixTypesMock.TRANSFORM_IS_TRANSLATION);
            return(mock);
        }
Esempio n. 7
0
 public static bool Equals(MatrixMock matrix1, MatrixMock matrix2)
 {
     if (matrix1.IsDistinguishedIdentity || matrix2.IsDistinguishedIdentity)
     {
         return(matrix1.IsIdentity == matrix2.IsIdentity);
     }
     return((((((double)matrix1.M11).Equals(matrix2.M11) && ((double)matrix1.M12).Equals(matrix2.M12)) && (((double)matrix1.M21).Equals(matrix2.M21) && ((double)matrix1.M22).Equals(matrix2.M22))) && ((double)matrix1.OffsetX).Equals(matrix2.OffsetX)) && ((double)matrix1.OffsetY).Equals(matrix2.OffsetY));
 }
Esempio n. 8
0
        public override bool Equals(object o)
        {
            if ((o == null) || !(o is MatrixMock))
            {
                return(false);
            }
            MatrixMock mock = (MatrixMock)o;

            return(Equals(this, mock));
        }
Esempio n. 9
0
        internal static MatrixMock CreateRotationRadians(double angle, double centerX, double centerY)
        {
            MatrixMock mock    = new MatrixMock();
            double     num     = Math.Sin(angle);
            double     num2    = Math.Cos(angle);
            double     offsetX = (centerX * (1.0 - num2)) + (centerY * num);
            double     offsetY = (centerY * (1.0 - num2)) - (centerX * num);

            mock.SetMatrix(num2, num, -num, num2, offsetX, offsetY, MatrixTypesMock.TRANSFORM_IS_UNKNOWN);
            return(mock);
        }
Esempio n. 10
0
 internal static void PrependOffset(ref MatrixMock matrix, double offsetX, double offsetY)
 {
     if (matrix._type == MatrixTypesMock.TRANSFORM_IS_IDENTITY)
     {
         matrix       = new MatrixMock(1.0, 0.0, 0.0, 1.0, offsetX, offsetY);
         matrix._type = MatrixTypesMock.TRANSFORM_IS_TRANSLATION;
     }
     else
     {
         matrix._offsetX += (matrix._m11 * offsetX) + (matrix._m21 * offsetY);
         matrix._offsetY += (matrix._m12 * offsetX) + (matrix._m22 * offsetY);
         if (matrix._type != MatrixTypesMock.TRANSFORM_IS_UNKNOWN)
         {
             matrix._type |= MatrixTypesMock.TRANSFORM_IS_TRANSLATION;
         }
     }
 }
Esempio n. 11
0
        internal static void MultiplyMatrix(ref MatrixMock matrix1, ref MatrixMock matrix2)
        {
            MatrixTypesMock mock  = matrix1._type;
            MatrixTypesMock mock2 = matrix2._type;

            if (mock2 != MatrixTypesMock.TRANSFORM_IS_IDENTITY)
            {
                if (mock == MatrixTypesMock.TRANSFORM_IS_IDENTITY)
                {
                    matrix1 = matrix2;
                }
                else if (mock2 == MatrixTypesMock.TRANSFORM_IS_TRANSLATION)
                {
                    matrix1._offsetX += matrix2._offsetX;
                    matrix1._offsetY += matrix2._offsetY;
                    if (mock != MatrixTypesMock.TRANSFORM_IS_UNKNOWN)
                    {
                        matrix1._type |= MatrixTypesMock.TRANSFORM_IS_TRANSLATION;
                    }
                }
                else if (mock == MatrixTypesMock.TRANSFORM_IS_TRANSLATION)
                {
                    double num  = matrix1._offsetX;
                    double num2 = matrix1._offsetY;
                    matrix1          = matrix2;
                    matrix1._offsetX = ((num * matrix2._m11) + (num2 * matrix2._m21)) + matrix2._offsetX;
                    matrix1._offsetY = ((num * matrix2._m12) + (num2 * matrix2._m22)) + matrix2._offsetY;
                    if (mock2 == MatrixTypesMock.TRANSFORM_IS_UNKNOWN)
                    {
                        matrix1._type = MatrixTypesMock.TRANSFORM_IS_UNKNOWN;
                    }
                    else
                    {
                        matrix1._type = MatrixTypesMock.TRANSFORM_IS_SCALING | MatrixTypesMock.TRANSFORM_IS_TRANSLATION;
                    }
                }
                else
                {
                    switch (((int)(((MatrixTypesMock)(((int)mock) << 4)) | mock2)))
                    {
                    case 0x22:
                        matrix1._m11 *= matrix2._m11;
                        matrix1._m22 *= matrix2._m22;
                        return;

                    case 0x23:
                        matrix1._m11    *= matrix2._m11;
                        matrix1._m22    *= matrix2._m22;
                        matrix1._offsetX = matrix2._offsetX;
                        matrix1._offsetY = matrix2._offsetY;
                        matrix1._type    = MatrixTypesMock.TRANSFORM_IS_SCALING | MatrixTypesMock.TRANSFORM_IS_TRANSLATION;
                        return;

                    case 0x24:
                    case 0x34:
                    case 0x42:
                    case 0x43:
                    case 0x44:
                        matrix1 = new MatrixMock((matrix1._m11 * matrix2._m11) + (matrix1._m12 * matrix2._m21), (matrix1._m11 * matrix2._m12) + (matrix1._m12 * matrix2._m22), (matrix1._m21 * matrix2._m11) + (matrix1._m22 * matrix2._m21), (matrix1._m21 * matrix2._m12) + (matrix1._m22 * matrix2._m22), ((matrix1._offsetX * matrix2._m11) + (matrix1._offsetY * matrix2._m21)) + matrix2._offsetX, ((matrix1._offsetX * matrix2._m12) + (matrix1._offsetY * matrix2._m22)) + matrix2._offsetY);
                        return;

                    case 50:
                        matrix1._m11     *= matrix2._m11;
                        matrix1._m22     *= matrix2._m22;
                        matrix1._offsetX *= matrix2._m11;
                        matrix1._offsetY *= matrix2._m22;
                        return;

                    case 0x33:
                        matrix1._m11    *= matrix2._m11;
                        matrix1._m22    *= matrix2._m22;
                        matrix1._offsetX = (matrix2._m11 * matrix1._offsetX) + matrix2._offsetX;
                        matrix1._offsetY = (matrix2._m22 * matrix1._offsetY) + matrix2._offsetY;
                        break;

                    default:
                        return;
                    }
                }
            }
        }
Esempio n. 12
0
 public void Prepend(MatrixMock matrix)
 {
     this = matrix * this;
 }
Esempio n. 13
0
 public void Append(MatrixMock matrix)
 {
     this *= matrix;
 }
Esempio n. 14
0
 public static MatrixMock Multiply(MatrixMock trans1, MatrixMock trans2)
 {
     MatrixUtil.MultiplyMatrix(ref trans1, ref trans2);
     return(trans1);
 }
Esempio n. 15
0
 static MatrixMock()
 {
     s_identity = CreateIdentity();
 }
Esempio n. 16
0
 public bool Equals(MatrixMock value)
 {
     return(Equals(this, value));
 }