summaryrefslogtreecommitdiff
path: root/js/draw.js
diff options
context:
space:
mode:
authortimb <opuscule@gmail.com>2015-07-22 00:25:07 -0700
committertimb <opuscule@gmail.com>2015-07-22 00:25:07 -0700
commita76225dc7f8ec707fc2dc563a796c65620b1c5a4 (patch)
tree313932c110e782565224b9ae6be53f39a6325677 /js/draw.js
parent1a009fd877364f5c6616a381d39e33902201a298 (diff)
finally hook up undo
Diffstat (limited to 'js/draw.js')
-rw-r--r--js/draw.js22
1 files changed, 13 insertions, 9 deletions
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 ])
}
}