From a76225dc7f8ec707fc2dc563a796c65620b1c5a4 Mon Sep 17 00:00:00 2001 From: timb Date: Wed, 22 Jul 2015 00:25:07 -0700 Subject: finally hook up undo --- js/draw.js | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) (limited to 'js/draw.js') diff --git a/js/draw.js b/js/draw.js index f12fbe9..77e149b 100644 --- a/js/draw.js +++ b/js/draw.js @@ -48,11 +48,13 @@ var draw = (function(){ s = round( s + x-hh ) t = round( t + y-hh ) if (lex.opacity > 0 && s >= 0 && s < canvas.w && t >= 0 && t < canvas.h) { + var aa = canvas.aa[t][s] + undo.save_lex(s, t, aa) if (erasing) { - canvas.aa[t][s].erase(lex) + aa.erase(lex) } else { - canvas.aa[t][s].paint(lex) + aa.paint(lex) } } }) @@ -60,20 +62,21 @@ var draw = (function(){ function fill (lex, x, y) { var q = [ [x,y] ] - var target = canvas.aa[y][x].clone() + var aa = canvas.aa + var target = aa[y][x].clone() var n, w = 0, e = 0, j = 0 var kk = 0 // gets into a weird infinite loop if we don't break here.. :\ if (target.eq(lex)) { return } LOOP: while (q.length) { n = q.shift() - if (canvas.aa[n[1]][n[0]].ne(target)) { + if (aa[n[1]][n[0]].ne(target)) { continue LOOP } w = e = n[0] j = n[1] WEST: while (w > 0) { - if (canvas.aa[j][w-1].eq(target)) { + if (aa[j][w-1].eq(target)) { w = w-1 } else { @@ -81,7 +84,7 @@ var draw = (function(){ } } EAST: while (e < canvas.w-1) { - if (canvas.aa[j][e+1].eq(target)) { + if (aa[j][e+1].eq(target)) { e = e+1 } else { @@ -89,11 +92,12 @@ var draw = (function(){ } } for (var i = w; i <= e; i++) { - canvas.aa[j][i].assign(lex) - if (j > 0 && canvas.aa[j-1][i].eq(target)) { + undo.save_lex(i, j, aa[j][i]) + aa[j][i].assign(lex) + if (j > 0 && aa[j-1][i].eq(target)) { q.push([ i, j-1 ]) } - if (j < canvas.h-1 && canvas.aa[j+1][i].eq(target)) { + if (j < canvas.h-1 && aa[j+1][i].eq(target)) { q.push([ i, j+1 ]) } } -- cgit v1.2.3-70-g09d2