Include a function, frac(), to return a number's fractional part.
Define a polygon.
For i=top of polygon to number of scanlines:
 Define ax,bx,cx,dx as x-values at points a,b,c,d.
 Define atone,btone as tones at points a,b.
 Let gradient=(btone-atone)/(bx-ax).
 Let ctone=at+(1-frac(ax))*gradient.
 For j=cx to dx:
  Put pixel at (x,y) with colour ctone.
  ctone=ctone+gradient.
 End for.
End for.