/** * @provide pskl.drawingtools.Move * * @require pskl.utils */ (function() { var ns = $.namespace("pskl.drawingtools"); ns.Move = function() { this.toolId = ns.Move.TOOL_ID; this.helpText = "Move tool"; // Stroke's first point coordinates (set in applyToolAt) this.startCol = null; this.startRow = null; }; ns.Move.TOOL_ID = "tool-move"; pskl.utils.inherit(ns.Move, ns.BaseTool); /** * @override */ ns.Move.prototype.applyToolAt = function(col, row, color, frame, overlay, event) { this.startCol = col; this.startRow = row; this.frameClone = frame.clone(); }; ns.Move.prototype.moveToolAt = function(col, row, color, frame, overlay, event) { var colDiff = col - this.startCol, rowDiff = row - this.startRow; this.shiftFrame(colDiff, rowDiff, frame, this.frameClone); }; ns.Move.prototype.shiftFrame = function (colDiff, rowDiff, frame, reference) { var color; for (var col = 0 ; col < frame.getWidth() ; col++) { for (var row = 0 ; row < frame.getHeight() ; row++) { if (reference.containsPixel(col - colDiff, row - rowDiff)) { color = reference.getPixel(col - colDiff, row - rowDiff); } else { color = Constants.TRANSPARENT_COLOR; } frame.setPixel(col, row, color); } } }; /** * @override */ ns.Move.prototype.releaseToolAt = function(col, row, color, frame, overlay, event) { this.moveToolAt(col, row, color, frame, overlay); }; })();