From 87893bb4ac56d60917b35ad822471be83a034650 Mon Sep 17 00:00:00 2001 From: juliandescottes Date: Sun, 8 Oct 2017 18:39:55 +0200 Subject: [PATCH] Issue #750 - Fix mirror pen with even pensizes --- src/js/tools/drawing/VerticalMirrorPen.js | 11 +- test/drawing/DrawingTests.browser.js | 1 + test/drawing/DrawingTests.casper.js | 1 + test/drawing/tests/pen.mirror.pensize.json | 125 +++++++++++++++++++++ 4 files changed, 136 insertions(+), 2 deletions(-) create mode 100644 test/drawing/tests/pen.mirror.pensize.json diff --git a/src/js/tools/drawing/VerticalMirrorPen.js b/src/js/tools/drawing/VerticalMirrorPen.js index cdc50cc3..3e2ca0f7 100644 --- a/src/js/tools/drawing/VerticalMirrorPen.js +++ b/src/js/tools/drawing/VerticalMirrorPen.js @@ -44,10 +44,17 @@ }; ns.VerticalMirrorPen.prototype.getSymmetricCol_ = function(col, frame) { - return frame.getWidth() - col - 1; + return frame.getWidth() - col - this.getPenSizeOffset_(); }; ns.VerticalMirrorPen.prototype.getSymmetricRow_ = function(row, frame) { - return frame.getHeight() - row - 1; + return frame.getHeight() - row - this.getPenSizeOffset_(); + }; + + /** + * Depending on the pen size, the mirrored index need to have an offset of 1 pixel. + */ + ns.VerticalMirrorPen.prototype.getPenSizeOffset_ = function(row, frame) { + return pskl.app.penSizeService.getPenSize() % 2; }; })(); diff --git a/test/drawing/DrawingTests.browser.js b/test/drawing/DrawingTests.browser.js index 4fb621b2..61740c4f 100644 --- a/test/drawing/DrawingTests.browser.js +++ b/test/drawing/DrawingTests.browser.js @@ -12,6 +12,7 @@ "lighten.darken.json", "move.json", "move-alllayers-allframes.json", + "pen.mirror.pensize.json", "pen.secondary.color.json", "selection.rectangular.json", "squares.circles.json", diff --git a/test/drawing/DrawingTests.casper.js b/test/drawing/DrawingTests.casper.js index 42bc0304..0986273c 100644 --- a/test/drawing/DrawingTests.casper.js +++ b/test/drawing/DrawingTests.casper.js @@ -10,6 +10,7 @@ "layers.top.bottom.json", "move.json", "move-alllayers-allframes.json", + "pen.mirror.pensize.json", "pen.secondary.color.json", "selection.rectangular.json", "squares.circles.json", diff --git a/test/drawing/tests/pen.mirror.pensize.json b/test/drawing/tests/pen.mirror.pensize.json new file mode 100644 index 00000000..89110a59 --- /dev/null +++ b/test/drawing/tests/pen.mirror.pensize.json @@ -0,0 +1,125 @@ +{ + "events": [ + { + "type": "pensize-event", + "penSize": 2 + }, + { + "type": "tool-event", + "toolId": "tool-vertical-mirror-pen" + }, + { + "event": { + "type": "mousedown", + "button": 0, + "shiftKey": false, + "altKey": false, + "ctrlKey": false + }, + "coords": { + "x": 1, + "y": 1 + }, + "type": "mouse-event" + }, + { + "event": { + "type": "mousemove", + "button": 0, + "shiftKey": false, + "altKey": false, + "ctrlKey": false + }, + "coords": { + "x": 1, + "y": 1 + }, + "type": "mouse-event" + }, + { + "event": { + "type": "mousemove", + "button": 0, + "shiftKey": false, + "altKey": false, + "ctrlKey": false + }, + "coords": { + "x": 1, + "y": 2 + }, + "type": "mouse-event" + }, + { + "event": { + "type": "mousemove", + "button": 0, + "shiftKey": false, + "altKey": false, + "ctrlKey": false + }, + "coords": { + "x": 1, + "y": 3 + }, + "type": "mouse-event" + }, + { + "event": { + "type": "mousemove", + "button": 0, + "shiftKey": false, + "altKey": false, + "ctrlKey": false + }, + "coords": { + "x": 1, + "y": 4 + }, + "type": "mouse-event" + }, + { + "event": { + "type": "mousemove", + "button": 0, + "shiftKey": false, + "altKey": false, + "ctrlKey": false + }, + "coords": { + "x": 1, + "y": 5 + }, + "type": "mouse-event" + }, + { + "event": { + "type": "mouseup", + "button": 0, + "shiftKey": false, + "altKey": false, + "ctrlKey": false + }, + "coords": { + "x": 1, + "y": 5 + }, + "type": "mouse-event" + }, + { + "type": "pensize-event", + "penSize": 1 + } + ], + "initialState": { + "size": { + "width": 6, + "height": 6 + }, + "primaryColor": "#000000", + "secondaryColor": "rgba(0, 0, 0, 0)", + "selectedTool": "tool-pen", + "penSize": 1 + }, + "png": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAGElEQVQYV2NkYGD4zwABjFAazAdxBkwCAIsLDAFt5z4tAAAAAElFTkSuQmCC" +} \ No newline at end of file