gdiplus: Use the preset blend when drawing linear gradients.
This commit is contained in:
parent
ad6adc750e
commit
d2e999d2e8
|
@ -220,7 +220,27 @@ static ARGB blend_line_gradient(GpLineGradient* brush, REAL position)
|
|||
blendfac = (left_blendfac * (right_blendpos - position) +
|
||||
right_blendfac * (position - left_blendpos)) / range;
|
||||
}
|
||||
|
||||
if (brush->pblendcount == 0)
|
||||
return blend_colors(brush->startcolor, brush->endcolor, blendfac);
|
||||
else
|
||||
{
|
||||
int i=1;
|
||||
ARGB left_blendcolor, right_blendcolor;
|
||||
REAL left_blendpos, right_blendpos;
|
||||
|
||||
/* locate the blend colors surrounding this position */
|
||||
while (blendfac > brush->pblendpos[i])
|
||||
i++;
|
||||
|
||||
/* interpolate between the blend colors */
|
||||
left_blendpos = brush->pblendpos[i-1];
|
||||
left_blendcolor = brush->pblendcolor[i-1];
|
||||
right_blendpos = brush->pblendpos[i];
|
||||
right_blendcolor = brush->pblendcolor[i];
|
||||
blendfac = (blendfac - left_blendpos) / (right_blendpos - left_blendpos);
|
||||
return blend_colors(left_blendcolor, right_blendcolor, blendfac);
|
||||
}
|
||||
}
|
||||
|
||||
static void brush_fill_path(GpGraphics *graphics, GpBrush* brush)
|
||||
|
|
Loading…
Reference in New Issue