From 8436279b2c9ec9ed016fbb84a6a0fdc624ee383f Mon Sep 17 00:00:00 2001 From: Andrea Bogazzi Date: Sat, 15 Jan 2022 17:32:26 +0100 Subject: [PATCH] fix(fabric.Object) bounding box display with skewY when outside group (#7611) --- src/shapes/object.class.js | 3 ++- test/visual/control_rendering.js | 34 ++++++++++++++++++++++++++++++ test/visual/golden/controls12.png | Bin 0 -> 32428 bytes 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 test/visual/golden/controls12.png diff --git a/src/shapes/object.class.js b/src/shapes/object.class.js index 7db7c565077..a32641d7397 100644 --- a/src/shapes/object.class.js +++ b/src/shapes/object.class.js @@ -1384,6 +1384,7 @@ /** * Renders controls and borders for the object + * the context here is not transformed * @param {CanvasRenderingContext2D} ctx Context to render on * @param {Object} [styleOverride] properties to override the object style */ @@ -1405,7 +1406,7 @@ if (this.flipX) { options.angle -= 180; } - ctx.rotate(degreesToRadians(options.angle)); + ctx.rotate(degreesToRadians(this.group ? options.angle : this.angle)); if (styleOverride.forActiveSelection || this.group) { drawBorders && this.drawBordersInGroup(ctx, options, styleOverride); } diff --git a/test/visual/control_rendering.js b/test/visual/control_rendering.js index 2e75f890255..bc4e97fbc8f 100644 --- a/test/visual/control_rendering.js +++ b/test/visual/control_rendering.js @@ -284,5 +284,39 @@ fabricClass: 'Canvas', }); + function controlBoxes(canvas, callback) { + canvas.loadFromJSON('{"version":"4.6.0","objects":[{"type":"rect","version":"4.6.0","left":38,"top":201,"width":150,"height":150,"fill":"red","skewX":0.15,"skewY":36},{"type":"rect","version":"4.6.0","left":20,"top":2,"width":150,"height":150,"fill":"#020aed","scaleX":1.24,"scaleY":0.81,"angle":35.95,"skewX":25.46},{"type":"group","version":"4.6.0","left":60.65,"top":28,"width":320.4,"height":335.5,"objects":[{"type":"rect","version":"4.6.0","left":-29.85,"top":-167.75,"width":150,"height":150,"fill":"green","angle":30,"skewX":14.71,"skewY":36},{"type":"rect","version":"4.6.0","left":-29.85,"top":-167.75,"width":150,"height":150,"fill":"yellow","angle":45,"skewX":14.71}]}]}', + function() { + canvas.renderAll(); + canvas.getObjects().forEach(function(object) { + object.borderScaleFactor = 3; + object.transparentCorners = false; + object._renderControls(canvas.contextContainer, { + borderColor: object.fill, + cornerColor: object.fill, + }); + object._objects && object.getObjects().forEach(function(subTarget) { + subTarget.borderScaleFactor = 3; + subTarget.transparentCorners = false; + subTarget._renderControls(canvas.contextContainer, { + borderColor: subTarget.fill, + cornerColor: subTarget.fill, + }); + }); + }); + callback(canvas.lowerCanvasEl); + }); + } + + tests.push({ + test: 'controlboxes with skewY, green is wrong and needs fix', + code: controlBoxes, + golden: 'controls12.png', + percentage: 0.002, + width: 400, + height: 600, + fabricClass: 'Canvas', + }); + tests.forEach(visualTestLoop(QUnit)); })(); diff --git a/test/visual/golden/controls12.png b/test/visual/golden/controls12.png new file mode 100644 index 0000000000000000000000000000000000000000..8129535c7459935d8c366f69af750aa673ccdd5e GIT binary patch literal 32428 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 c3qvq=6!{{