Merge pull request #16 from fsih/safariDrawImage

Fix Safari when selection exceeds canvas bounds
This commit is contained in:
DD Liu 2018-08-01 15:38:38 -04:00 committed by GitHub
commit 9f9f210537
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -443,8 +443,16 @@ var Raster = Item.extend(/** @lends Raster# */{
getSubCanvas: function(/* rect */) {
var rect = Rectangle.read(arguments),
ctx = CanvasProvider.getContext(rect.getSize());
ctx.drawImage(this.getCanvas(), rect.x, rect.y,
rect.width, rect.height, 0, 0, rect.width, rect.height);
const clippedStartX = Math.max(0, rect.x);
const clippedStartY = Math.max(0, rect.y);
const clippedEndX = Math.min(this.getCanvas().width, rect.x + rect.width);
const clippedEndY = Math.min(this.getCanvas().height, rect.y + rect.height);
ctx.drawImage(this.getCanvas(),
clippedStartX, clippedStartY,
clippedEndX - clippedStartX, clippedEndY - clippedStartY,
clippedStartX - rect.x, clippedStartY - rect.y,
clippedEndX - clippedStartX, clippedEndY - clippedStartY
);
return ctx.canvas;
},