var brush = (function(){ var brush = new Matrix (5, 5, function(x,y){ var lex = new Lex (x,y) lex.build() return lex }) brush.modified = false brush.bind = function(){ var last_point = [0,0] var dragging = false brush.forEach(function(lex, x, y){ if (lex.bound) return lex.bound = true var point = [x,y] lex.span.addEventListener('contextmenu', function(e){ e.preventDefault() }) lex.span.addEventListener('mousedown', function(e){ e.preventDefault() current_canvas = brush brush.modified = true dragging = true erasing = (e.which == "3" || e.ctrlKey) if (erasing) { lex.erase() } else { fillColor = brush.bg lex.fill(brush.fg, brush.bg) } lex.focus() }) lex.span.addEventListener('mousemove', function(e){ e.preventDefault() if (! dragging) { return } erasing = (e.which == "3" || e.ctrlKey) if (erasing) { lex.erase() } else { lex.fill(brush.fg, brush.bg) } lex.focus() }) }) window.addEventListener("mouseup", function(){ dragging = false }) } brush.expand = function(i){ var w = this.w = clamp(this.w+i, 1, 9), h = this.h = clamp(this.h+i, 1, 9) controls.width.char = ""+w controls.width.build() controls.height.char = ""+h controls.height.build() this.rebuild() } brush.contract = function(i){ this.expand(-i) } brush.char = " " brush.fg = 0 brush.bg = 1 brush.opacity = 1 brush.draw_fg = true brush.draw_bg = true brush.draw_char = true return brush })()