[PATCH] gdiplus: Implement transform matrix for line gradient brushes

Andrew Eikum aeikum at codeweavers.com
Wed Aug 16 09:11:57 CDT 2017


On Tue, Aug 15, 2017 at 12:47:48PM -0500, Vincent Povirk wrote:
> I wrote a test program (attached), and it doesn't work when the start
> point isn't 0,0.
> 

Right, I got the sign on the offset in blend_line_gradient backwards.
Thanks for the test program.

> > +    if (line->startpoint.X == line->endpoint.X)
> > +        t = line->startpoint.Y > line->endpoint.Y ? 3.f * M_PI / 2.f : M_PI / 2.f;
> > +    else
> > +        t = atanf((line->endpoint.Y - line->startpoint.Y) / (line->endpoint.X - line->startpoint.X));
> > +
> > +    t_cos = cosf(t);
> > +    t_sin = sinf(t);
> 
> This seems like an oddly complicated and fragile way to normalize a vector.

Yeah, I just took that straight from Mono's libgdiplus without
understanding it. I'll study it some more and see if I can simplify
it.

Andrew



More information about the wine-devel mailing list