From 65bc78d8709884edcc6f6bbfb128864e3240c28a Mon Sep 17 00:00:00 2001 From: Yury Delendik Date: Thu, 9 Aug 2012 10:41:18 -0500 Subject: [PATCH 1/2] Using fast pixels copy in putBinaryImageData --- src/canvas.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/canvas.js b/src/canvas.js index 122dd5e59..97ff8f8d4 100644 --- a/src/canvas.js +++ b/src/canvas.js @@ -1281,12 +1281,14 @@ function checkPutBinaryImageDataCompatibility() { function CanvasGraphicsPutBinaryImageDataShim(ctx, imgData, w, h) { var tmpImgData = ctx.getImageData(0, 0, w, h); - // Copy over the imageData pixel by pixel. var tmpImgDataPixels = tmpImgData.data; - var len = tmpImgDataPixels.length; - - while (len--) { - tmpImgDataPixels[len] = imgData.data[len]; + var data = imgData.data; + if ('set' in tmpImgDataPixels) + tmpImgDataPixels.set(data); + else { + // Copy over the imageData pixel by pixel. + for (var i = 0, ii = tmpImgDataPixels.length; i < ii; i++) + tmpImgDataPixels[i] = data[i]; } ctx.putImageData(tmpImgData, 0, 0); From 55b3b005b8cd11fb93202dfc74714d3de23f00fd Mon Sep 17 00:00:00 2001 From: Yury Delendik Date: Thu, 9 Aug 2012 13:40:40 -0500 Subject: [PATCH 2/2] Using createImageData when available --- src/canvas.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/canvas.js b/src/canvas.js index 97ff8f8d4..9f61ba77b 100644 --- a/src/canvas.js +++ b/src/canvas.js @@ -1279,7 +1279,8 @@ function checkPutBinaryImageDataCompatibility() { } catch (e) { CanvasGraphics.prototype.putBinaryImageData = function CanvasGraphicsPutBinaryImageDataShim(ctx, imgData, w, h) { - var tmpImgData = ctx.getImageData(0, 0, w, h); + var tmpImgData = 'createImageData' in ctx ? ctx.createImageData(w, h) : + ctx.getImageData(0, 0, w, h); var tmpImgDataPixels = tmpImgData.data; var data = imgData.data;