From 2b5a33aa86b6e21e866883ffd2cfe48bc0ac8d34 Mon Sep 17 00:00:00 2001 From: Vincent Povirk Date: Thu, 15 Apr 2010 15:13:34 -0500 Subject: [PATCH 3/6] gdiplus: Correct the coordinate transform for non-rectangular parallelograms. Apparently matrices in gdiplus don't work the way I think they do. --- dlls/gdiplus/graphics.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c index c0e938f..e61c456 100644 --- a/dlls/gdiplus/graphics.c +++ b/dlls/gdiplus/graphics.c @@ -2030,11 +2030,11 @@ GpStatus WINGDIPAPI GdipDrawImagePointsRect(GpGraphics *graphics, GpImage *image } m11 = (ptf[1].X - ptf[0].X) / srcwidth; - m12 = (ptf[2].X - ptf[0].X) / srcheight; - mdx = ptf[0].X - m11 * srcx - m12 * srcy; - m21 = (ptf[1].Y - ptf[0].Y) / srcwidth; + m21 = (ptf[2].X - ptf[0].X) / srcheight; + mdx = ptf[0].X - m11 * srcx - m21 * srcy; + m12 = (ptf[1].Y - ptf[0].Y) / srcwidth; m22 = (ptf[2].Y - ptf[0].Y) / srcheight; - mdy = ptf[0].Y - m21 * srcx - m22 * srcy; + mdy = ptf[0].Y - m12 * srcx - m22 * srcy; stat = GdipCreateMatrix2(m11, m12, m21, m22, mdx, mdy, &dst_to_src); if (stat != Ok) return stat; -- 1.6.3.3