mirror of
https://github.com/scratchfoundation/paper.js.git
synced 2025-01-01 02:38:43 -05:00
Make raster's getSubRaster function allow rectangles that exceed the bounds of the canvas. This fixes Safari, which returns a blank canvas in that case.
This commit is contained in:
parent
51a1b93df6
commit
e0b6759add
1 changed files with 10 additions and 2 deletions
|
@ -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;
|
||||
},
|
||||
|
||||
|
|
Loading…
Reference in a new issue