From a5688be06d9af4832d6ef60f31e1d0d476734d2b Mon Sep 17 00:00:00 2001 From: bbaer <bbaer@math.uzh.ch> Date: Wed, 1 Nov 2017 13:00:19 +0100 Subject: [PATCH] added delete key, added zoom on numpad, added pan on arrowkeys --- javascript/src/Plugins/qfq.fabric.js | 70 ++++++++++++++++++++++++++-- 1 file changed, 66 insertions(+), 4 deletions(-) diff --git a/javascript/src/Plugins/qfq.fabric.js b/javascript/src/Plugins/qfq.fabric.js index b8e0c3089..48a0acd5c 100644 --- a/javascript/src/Plugins/qfq.fabric.js +++ b/javascript/src/Plugins/qfq.fabric.js @@ -294,7 +294,8 @@ $(function (n) { this.canvas.on('mouse:down', function (e) { that.defaultMouseDownEvent(e) }); this.canvas.on('mouse:move', function (e) { that.defaultMouseMoveEvent(e) }); this.canvas.on('mouse:out', function (e) { that.defaultMouseOutEvent(e) }); - this.canvas.on('after:render', function(e){ that.defaultChangeHandler(e) }); + this.canvas.on('after:render', function(e) { that.defaultChangeHandler(e) }); + window.addEventListener('keydown', function(e) { that.defaultKeyStrokeHandler(e) }); $('.canvas').on('contextmenu', function(e) { that.defaultRightClickEvent(e) }); $(window).resize(function() { that.resizeCanvas(); }); }; @@ -314,7 +315,9 @@ $(function (n) { objects[i].setCoords(); } this.setBackground(); + this.userChangePossible = false; this.canvas.renderAll(); + this.userChangePossible = true; } }; @@ -325,6 +328,12 @@ $(function (n) { this.canvas.renderAll(); }; + n.Fabric.prototype.zoomCanvasToCenter = function(zoomCalc) { + var zoom = this.canvas.getZoom() + zoomCalc; + this.canvas.setZoom(zoom); + this.canvas.renderAll(); + } + n.Fabric.prototype.setBackground = function (imageSelector) { /* Old code to load image From URL, stays here for reference var that = this; @@ -548,7 +557,6 @@ $(function (n) { }; n.Fabric.prototype.defaultRightClickEvent = function(e) { - console.log("Text"); if (this.isZoomMode) { this.zoomCanvas(e, -0.1); return false; @@ -608,10 +616,8 @@ $(function (n) { n.Fabric.prototype.defaultChangeHandler = function (e) { var that = this; this.canvas.calcOffset(); - console.log("Changehandler called."); /* Important! Changes only possible after initialisation */ if (this.userChangePossible) { - console.log("User Change detected"); this.outputField.val(JSON.stringify(that.canvas.toJSON())); var $saveButton = $("#save-button"); $saveButton.removeClass("disabled"); @@ -620,6 +626,62 @@ $(function (n) { } }; + n.Fabric.prototype.defaultKeyStrokeHandler = function(e) { + // Delete key + if (e.keyCode == 46) { + this.delete(); + } + + // Numpad + + if (e.keyCode == 107) { + this.zoomCanvasToCenter(0.1); + } + + // Numpad - + if (e.keyCode == 109) { + this.zoomCanvasToCenter(-0.1); + } + + // Up Arrow + if (e.keyCode == 38) { + this.panWithZoom(0, 10); + e.preventDefault(); + } + + // Down Arrow + if (e.keyCode == 40) { + this.panWithZoom(0, -10); + e.preventDefault(); + } + + // Left Arrow + if (e.keyCode == 37) { + this.panWithZoom(-10, 0); + } + + if (e.keyCode == 96) { + this.resetZoom(); + } + + if (e.keyCode == 39) { + this.panWithZoom(10, 0); + } + + }; + + n.Fabric.prototype.panWithZoom = function(x, y) { + var zoom = this.canvas.getZoom(); + var delta = new fabric.Point(x * zoom, y * zoom); + this.canvas.relativePan(delta); + }; + + n.Fabric.prototype.resetZoom = function() { + var delta = new fabric.Point(0,0); + this.canvas.absolutePan(delta); + this.canvas.setZoom(1); + this.canvas.renderAll(); + }; + /* later $("#text-bg-submit").on("click", function() { -- GitLab