The XFORM matrix in PlgBlt is calculated incorrectly

Nikolay Sivov bunglehead at gmail.com
Tue Dec 8 11:08:37 CST 2009


Alexander Almaleh wrote:
> I'm talking about this code, 
> from http://source.winehq.org/source/dlls/gdi32/bitblt.c, in function 
> PlgBlt :
>
>
> I have a formula that so far seems to give always the correct matrix:
>
>
> xf.eM11 = (FLOAT) 
> -(rect[1].y*plg[2].x+rect[0].y*(plg[1].x-plg[2].x)-rect[2].y*plg[1].x+plg[0].x*(rect[2].y-rect[1].y)) 
> /(rect[0].y*(rect[2].x-rect[1].x)-rect[1].y*rect[2].x+rect[2].y*rect[1].x+(rect[1].y-rect[2].y)*rect[0].x);
>
Hi, Alexander. This was my patch.

Feel free to correct this sending patch for review to 
wine-patches at winehq.org

P.S. I don't see your point on inlining determinant expression.
>
> I found out about the bug by converting the rect points using the 
> XFORM matrix, and checking that their the same as the plg points.





More information about the wine-devel mailing list