Smartmobili.Cocoa.NSView.convert_rect_using_matrices C# (CSharp) Méthode

convert_rect_using_matrices() private static méthode

private static convert_rect_using_matrices ( NSRect aRect, NSAffineTransform matrix1, NSAffineTransform matrix2 ) : NSRect
aRect NSRect
matrix1 NSAffineTransform
matrix2 NSAffineTransform
Résultat NSRect
        private static NSRect convert_rect_using_matrices(NSRect aRect, NSAffineTransform matrix1,
            NSAffineTransform matrix2)
        {
            NSRect r = new NSRect();
            NSPoint[] p = new NSPoint[4];
            NSPoint min, max;
            int i;

            for (i = 0; i < 4; i++)
                p[i] = aRect.Origin;
            p[1].X += aRect.Size.Width;
            p[2].Y += aRect.Size.Height;
            p[3].X += aRect.Size.Width;
            p[3].Y += aRect.Size.Height;

            for (i = 0; i < 4; i++)
                p[i] = matrix1.TransformPoint(p[i]);

            min = max = p[0] = matrix2.TransformPoint(p[0]);
            for (i = 1; i < 4; i++)
            {
                p[i] = matrix2.TransformPoint(p[i]);
                min.X = Math.Min(min.X, p[i].X);
                min.Y = Math.Min(min.Y, p[i].Y);
                max.X = Math.Max(max.X, p[i].X);
                max.Y = Math.Max(max.Y, p[i].Y);
            }

            r.Origin = min;
            r.Size = NS.MakeSize(max.X - min.X, max.Y - min.Y);
            //r.Size.Width = max.X - min.X;
            //r.Size.Height = max.Y - min.Y;

            return r;
        }
NSView