function draw (lex, x, y, erasing) { stamp (canvas, brush, x, y, erasing) } function line (lex, a, b, erasing) { var len = dist(a[0], a[1], b[0], b[1]) var bw = 1 var x, y, i; for (var i = 0; i < len; i += bw) { x = lerp(i / len, a[0], b[0]) y = lerp(i / len, a[1], b[1]) stamp (canvas, brush, x, y, erasing) } } function stamp (canvas, brush, x, y, erasing) { hh = brush.w/2|0 brush.forEach(function(lex, s, t){ s = round( s + x-hh ) t = round( t + y-hh ) if (s >= 0 && s < canvas.w && t >= 0 && t < canvas.h) { if (erasing) { canvas.aa[t][s].erase(lex) } else { canvas.aa[t][s].clone(lex) } } }) }