| @@ -70,6 +70,9 @@ class CTRLPainter { | |||
| this.__surface = null; | |||
| this.__palette = null; | |||
| this.__snapshotTriggered = false; | |||
| // var self = this; | |||
| var RenderD = Utils.throttle((function(){ | |||
| @@ -195,8 +198,11 @@ class CTRLPainter { | |||
| var sx = (e.isCombo) ? Math.floor((this.__brushLastPos[0] - this.__offset[0]) * (1.0 / this.__scale)) : x; | |||
| var sy = (e.isCombo) ? Math.floor((this.__brushLastPos[1] - this.__offset[1]) * (1.0 / this.__scale)) : y; | |||
| if (x >= 0 && x < this.__surface.width && y >= 0 && y < this.__surface.height){ | |||
| if (!this.__snapshotTriggered){ | |||
| this.__snapshotTriggered = true; | |||
| this.__surface.snapshot(); | |||
| } | |||
| LineToSurface(sx, sy, x, y, this.__brushColor, this.__brushPalette); | |||
| //RenderD(); | |||
| } | |||
| } | |||
| } | |||
| @@ -204,6 +210,25 @@ class CTRLPainter { | |||
| input.listen("mouseclick", handle_draw); | |||
| input.listen("mouseleft+mousemove", handle_draw); | |||
| var handle_mouseup = (function(e){ | |||
| this.__snapshotTriggered = false; | |||
| }).bind(this); | |||
| input.listen("mouseup", handle_mouseup); | |||
| var handle_undo = (function(e){ | |||
| if (this.__surface !== null){ | |||
| this.__surface.undo(); | |||
| } | |||
| }).bind(this); | |||
| input.listen("ctrl+z", handle_undo); | |||
| var handle_redo = (function(e){ | |||
| if (this.__surface !== null){ | |||
| this.__surface.redo(); | |||
| } | |||
| }).bind(this); | |||
| input.listen("ctrl+y", handle_redo); | |||
| var handle_offset = (function(e){ | |||
| this.__offset[0] += e.x - e.lastX; | |||
| this.__offset[1] += e.y - e.lastY; | |||
| @@ -313,6 +338,7 @@ class CTRLPainter { | |||
| context.imageSmoothingEnabled = false; | |||
| ResizeCanvasImg(canvas.clientWidth, canvas.clientHeight); // A forced "resize". | |||
| input.enableMouseInput(true, canvas); | |||
| input.enableKeyboardInput(true); | |||
| //input.mouseTargetElement = canvas; | |||
| this.scale_to_fit(); | |||