gdiplus: Fix a possible floating point exception in path gradients.
Signed-off-by: Vincent Povirk <vincent@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
4a70f67ffc
commit
331a7af37a
|
@ -1493,9 +1493,18 @@ static GpStatus brush_fill_pixels(GpGraphics *graphics, GpBrush *brush,
|
|||
REAL blend_amount, pdy, pdx;
|
||||
pdy = yf - center_point.Y;
|
||||
pdx = xf - center_point.X;
|
||||
|
||||
if (fabs(pdx) <= 0.001 && fabs(pdy) <= 0.001)
|
||||
{
|
||||
/* Too close to center point, don't try to calculate outer color */
|
||||
outer_color = start_color;
|
||||
}
|
||||
else
|
||||
{
|
||||
blend_amount = ( (center_point.Y - start_point.Y) * pdx + (start_point.X - center_point.X) * pdy ) / ( dy * pdx - dx * pdy );
|
||||
outer_color = blend_colors(start_color, end_color, blend_amount);
|
||||
}
|
||||
}
|
||||
|
||||
distance = (end_point.Y - start_point.Y) * (start_point.X - xf) +
|
||||
(end_point.X - start_point.X) * (yf - start_point.Y);
|
||||
|
|
Loading…
Reference in New Issue